health-data-standards 3.7.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/health-data-standards.rb +3 -0
  3. data/lib/health-data-standards/export/helper/html_view_helper.rb +12 -12
  4. data/lib/health-data-standards/import/bulk_record_importer.rb +4 -4
  5. data/lib/health-data-standards/import/cda/encounter_importer.rb +2 -2
  6. data/lib/health-data-standards/models/admission_source.rb +11 -0
  7. data/lib/health-data-standards/models/adverse_event.rb +6 -0
  8. data/lib/health-data-standards/models/allergy.rb +2 -1
  9. data/lib/health-data-standards/models/assessment.rb +1 -0
  10. data/lib/health-data-standards/models/care_goal.rb +0 -1
  11. data/lib/health-data-standards/models/component.rb +14 -0
  12. data/lib/health-data-standards/models/encounter.rb +10 -13
  13. data/lib/health-data-standards/models/entry.rb +1 -1
  14. data/lib/health-data-standards/models/facility.rb +3 -2
  15. data/lib/health-data-standards/models/lab_result.rb +10 -4
  16. data/lib/health-data-standards/models/medication.rb +3 -0
  17. data/lib/health-data-standards/models/procedure.rb +7 -2
  18. data/lib/health-data-standards/models/record.rb +6 -2
  19. data/lib/health-data-standards/models/transfer.rb +0 -5
  20. data/lib/health-data-standards/util/hqmf_template_helper.rb +3 -2
  21. data/lib/health-data-standards/util/hqmfr2_template_oid_map.json +8 -0
  22. data/lib/health-data-standards/util/hqmfr2cql_template_oid_map.json +390 -0
  23. data/lib/health-data-standards/util/vs_api.rb +3 -3
  24. data/lib/hqmf-model/data_criteria.json +19 -1
  25. data/lib/hqmf-model/data_criteria.rb +31 -7
  26. data/lib/hqmf-model/document.rb +11 -2
  27. data/lib/hqmf-model/types.rb +31 -5
  28. data/lib/hqmf-parser.rb +7 -0
  29. data/lib/hqmf-parser/2.0/data_criteria.rb +4 -1
  30. data/lib/hqmf-parser/2.0/data_criteria_helpers/dc_base_extract.rb +1 -1
  31. data/lib/hqmf-parser/2.0/document.rb +4 -4
  32. data/lib/hqmf-parser/2.0/document_helpers/doc_population_helper.rb +0 -2
  33. data/lib/hqmf-parser/2.0/population_criteria.rb +2 -2
  34. data/lib/hqmf-parser/2.0/value_set_helper.rb +4 -1
  35. data/lib/hqmf-parser/cql/data_criteria.rb +57 -0
  36. data/lib/hqmf-parser/cql/data_criteria_helpers/dc_definition_from_template_or_type_extract.rb +79 -0
  37. data/lib/hqmf-parser/cql/data_criteria_helpers/dc_post_processing.rb +43 -0
  38. data/lib/hqmf-parser/cql/document.rb +78 -0
  39. data/lib/hqmf-parser/cql/document_helpers/doc_population_helper.rb +124 -0
  40. data/lib/hqmf-parser/cql/value_set_helper.rb +103 -0
  41. data/lib/hqmf-parser/parser.rb +24 -1
  42. metadata +11 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ef5b18109b56fc92d3ed2097aee343760bf477c
4
- data.tar.gz: '008f520093afb25e312ecbed501c3bfdf4cb2761'
3
+ metadata.gz: c4c0614b648a5d2d1326f343bf970d7df12483c3
4
+ data.tar.gz: f780aa9e0615261edf2dd984dd4a37d0acb6bed6
5
5
  SHA512:
6
- metadata.gz: 3632559346961e5110f26aae8949d7a3d85cdeb937379e11850cbc40dcde4ec3d5bfc14f5aa010c1fd6f403d734efba052fd5bfafb4992001cdd0f30313b4c39
7
- data.tar.gz: c211b9f4922b81411fbce83bf193c22a003a12561a86bef90b9c022c54531776f7ad3072e9aca165c4320a6f8c3a5f9887fc59ffa690fb5e029b46d2dc5ff155
6
+ metadata.gz: e0022c55d49a80f85bcf53f7b5bda28075ce2331ad16e7db89fc0eb2ef1a5ae67368ef3c98480292c10ad99d3500f72bbb52f7423f387b6c5fee3cf41433899e
7
+ data.tar.gz: 395455bb02a984b04f87c9ce24eab9c3c7c3929664045eed618566dd28204f21fb853e358503a16a52ba941558f585773bfa6caaf0f1a66e6922e318e3797262
@@ -70,7 +70,9 @@ require_relative 'health-data-standards/models/telecom'
70
70
  require_relative 'health-data-standards/models/transfer'
71
71
  require_relative 'health-data-standards/models/svs/value_set'
72
72
  require_relative 'health-data-standards/models/svs/concept'
73
+ require_relative 'health-data-standards/models/admission_source'
73
74
  require_relative 'health-data-standards/models/facility'
75
+ require_relative 'health-data-standards/models/component'
74
76
  require_relative 'health-data-standards/models/metadata/base'
75
77
  require_relative 'health-data-standards/models/metadata/author'
76
78
  require_relative 'health-data-standards/models/metadata/change_info'
@@ -81,6 +83,7 @@ require_relative 'health-data-standards/models/patient_preference'
81
83
  require_relative 'health-data-standards/models/care_goal'
82
84
  require_relative 'health-data-standards/models/encounter_principal_diagnosis'
83
85
  require_relative 'health-data-standards/models/assessment'
86
+ require_relative 'health-data-standards/models/adverse_event'
84
87
 
85
88
  require_relative 'health-data-standards/models/qrda/id'
86
89
  require_relative 'health-data-standards/models/qrda/device'
@@ -6,9 +6,9 @@ module HealthDataStandards
6
6
 
7
7
  def decode_hqmf_section(section, oid)
8
8
  if oid
9
- definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
10
- definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
11
- definition['definition'].pluralize.to_sym
9
+ definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
10
+ definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
11
+ definition['definition'].pluralize.to_sym
12
12
  else
13
13
  section
14
14
  end
@@ -16,9 +16,9 @@ module HealthDataStandards
16
16
 
17
17
  def decode_hqmf_status(status, oid)
18
18
  if oid
19
- definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
20
- definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
21
- definition['status']
19
+ definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
20
+ definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
21
+ definition['status']
22
22
  else
23
23
  status
24
24
  end
@@ -26,14 +26,14 @@ module HealthDataStandards
26
26
 
27
27
  def decode_hqmf_description(description, oid)
28
28
  if oid
29
- definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
30
- definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
31
- definition_text = definition['definition']
32
- status_text = definition['status']
29
+ definition = HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid)
30
+ definition ||= HealthDataStandards::Util::HQMFTemplateHelper.definition_for_template_id(oid, 'r2')
31
+ definition_text = definition['definition']
32
+ status_text = definition['status']
33
33
  unless status.blank?
34
- "#{definition_text.titleize}, #{status_text.titleize}".to_sym
34
+ "#{definition_text.titleize}, #{status_text.titleize}".to_sym
35
35
  else
36
- "#{definition_text.titleize}".to_sym
36
+ "#{definition_text.titleize}".to_sym
37
37
  end
38
38
  else
39
39
  description
@@ -7,7 +7,7 @@ module HealthDataStandards
7
7
  failed_dir ||= File.join(source_dir, '../', 'failed_imports')
8
8
  files = Dir.glob(File.join(source_dir, '*.*'))
9
9
  files.each do |file|
10
- self.import_file(file,File.new(file).read,failed_dir)
10
+ self.import_file(file,File.new(file).read,failed_dir)
11
11
  end
12
12
  end
13
13
 
@@ -27,7 +27,7 @@ module HealthDataStandards
27
27
  end
28
28
  next if entry.directory?
29
29
  data = zipfile.read(entry.name)
30
- status = self.import_file(entry.name,data,failed_dir)
30
+ status = self.import_file(entry.name,data,failed_dir)
31
31
  raise StandardError, status[:message] if status.is_a?(Hash) && status[:status] === 'error'
32
32
  end
33
33
  end
@@ -61,9 +61,9 @@ module HealthDataStandards
61
61
  begin
62
62
  ext = File.extname(name)
63
63
  if ext == ".json"
64
- self.import_json(data)
64
+ self.import_json(data)
65
65
  else
66
- self.import(data)
66
+ self.import(data)
67
67
  end
68
68
  rescue
69
69
  FileUtils.mkdir_p(File.dirname(File.join(failed_dir,name)))
@@ -42,7 +42,7 @@ module HealthDataStandards
42
42
  facility.telecoms = participant_element.xpath("./cda:telecom").try(:map) {|te| import_telecom(te)}
43
43
  facility.code = extract_code(participant_element, './cda:code')
44
44
  extract_dates(participant_element.parent, facility, "time")
45
- encounter.facility = facility
45
+ encounter.facility = facility.as_json()
46
46
  end
47
47
  end
48
48
 
@@ -88,4 +88,4 @@ module HealthDataStandards
88
88
  end
89
89
  end
90
90
  end
91
- end
91
+ end
@@ -0,0 +1,11 @@
1
+ class AdmissionSource
2
+ include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
4
+
5
+ embedded_in :encounter, class_name: "Encounter", inverse_of: nil
6
+
7
+ field :code, type: String
8
+ field :code_system, type: String
9
+ field :title, type: String
10
+
11
+ end
@@ -0,0 +1,6 @@
1
+ # QDM 5.0 addition
2
+ class AdverseEvent < Entry
3
+ field :type, type: Hash
4
+ field :severity, type: Hash
5
+ field :facility, type: Hash
6
+ end
@@ -1,5 +1,6 @@
1
+ # This is used for QDM 5.0 Allergy/Intollerance. The only fields used are type and severity.
1
2
  class Allergy < Entry
2
3
  field :type, type: Hash
3
4
  field :reaction, type: Hash
4
5
  field :severity, type: Hash
5
- end
6
+ end
@@ -1,3 +1,4 @@
1
1
  class Assessment < Entry
2
2
  field :method, type: Hash
3
+ field :components, type: Hash
3
4
  end
@@ -1,4 +1,3 @@
1
1
  class CareGoal < Entry
2
- field :relatedTo, type: Hash, as: :related_to
3
2
  field :targetOutcome, type: Hash, as: :target_outcome
4
3
  end
@@ -0,0 +1,14 @@
1
+ class Component
2
+ include Mongoid::Document
3
+ include Mongoid::Attributes::Dynamic
4
+
5
+ field :type, type: String
6
+ field :code, type: Hash # Hash of HQMF::Coded
7
+ field :result, type: Hash # Hash of HQMF::Value
8
+
9
+ end
10
+
11
+ class ResultComponent < Component
12
+ field :range, type: Hash # Hash of HQMF::Range
13
+
14
+ end
@@ -3,14 +3,15 @@ class Encounter < Entry
3
3
  field :dischargeDisposition, as: :discharge_disposition, type: Hash
4
4
  field :admitTime, as: :admit_time, type: Integer
5
5
  field :dischargeTime, as: :discharge_time, type: Integer
6
+ field :diagnosis, type: Hash # This is a Hash to align with the 'Collection' object
7
+ field :facility, type: Hash
6
8
 
7
9
  embeds_one :principalDiagnosis, class_name: "EncounterPrincipalDiagnosis"
8
- embeds_one :diagnosis, class_name: "EncounterPrincipalDiagnosis"
9
10
 
10
11
  embeds_one :transferTo, class_name: "Transfer"
11
12
  embeds_one :transferFrom, class_name: "Transfer"
12
13
 
13
- embeds_one :facility
14
+ embeds_one :admission_source, class_name: "AdmissionSource"
14
15
  embeds_one :reason, class_name: "Entry"
15
16
 
16
17
  belongs_to :performer, class_name: "Provider"
@@ -21,23 +22,19 @@ class Encounter < Entry
21
22
  alias :transfer_from= :transferFrom=
22
23
  alias :principal_diagnosis :principalDiagnosis
23
24
  alias :principal_diagnosis= :principalDiagnosis=
25
+ alias :admissionSource :admission_source
26
+ alias :admissionSource= :admission_source=
24
27
 
25
28
  def shift_dates(date_diff)
26
29
  super
27
30
  if self.facility
28
- self.facility.shift_dates(date_diff)
31
+ # Facility is now stored as a Hash; shift its dates by updating its start_time and end_time values.
32
+ self.facility['start_time'] += date_diff if self.facility['start_time']
33
+ self.facility['end_time'] += date_diff if self.facility['end_time']
29
34
  end
30
-
31
- if self.transferTo
32
- self.transferTo.shift_dates(date_diff)
33
- end
34
-
35
- if self.transferFrom
36
- self.transferFrom.shift_dates(date_diff)
37
- end
38
-
35
+
39
36
  self.admitTime = (self.admitTime.nil?) ? nil : self.admitTime + date_diff
40
37
  self.dischargeTime = (self.dischargeTime.nil?) ? nil : self.dischargeTime + date_diff
41
38
  end
42
39
 
43
- end
40
+ end
@@ -25,7 +25,7 @@ class Entry
25
25
  field :oid, type: String
26
26
  field :reason, type: Hash
27
27
  field :health_record_field, type: Hash
28
-
28
+
29
29
  attr_protected :version
30
30
  attr_protected :_id
31
31
  attr_protected :created_at
@@ -11,8 +11,9 @@ class Facility
11
11
  embeds_many :addresses, as: :locatable
12
12
  embeds_many :telecoms, as: :contactable
13
13
 
14
- def shift_dates(date_diff)
14
+ def shift_dates(date_diff)
15
15
  self.start_time = (self.start_time.nil?) ? nil : self.start_time + date_diff
16
16
  self.end_time = (self.end_time.nil?) ? nil : self.end_time + date_diff
17
17
  end
18
- end
18
+
19
+ end
@@ -1,13 +1,19 @@
1
1
  class LabResult < Entry
2
+ # NOT used for QDM 5.0 referenceRange
2
3
  field :referenceRange, as: :reference_range, type: String
4
+ # used for QDM 5.0 referenceRange
3
5
  field :referenceRangeHigh, as: :reference_range_high, type: String
6
+ # used for QDM 5.0 referenceRange
4
7
  field :referenceRangeLow, as: :reference_range_low, type: String
5
- field :interpretation, type: Hash
6
- field :reaction, type: Hash
7
- field :method, type: Hash
8
+ field :interpretation, type: Hash
9
+ field :reaction, type: Hash
10
+ field :method, type: Hash
8
11
  # The resulting status of a procedure as defined in the QDM documentation. This is different
9
12
  # than the status associated with the `Entry` object, which relates to the data criteria
10
13
  # status as defined in health-data-standards/lib/hqmf-model/data_criteria.json.
11
- field :qdm_status, type: Hash
14
+ field :qdm_status, type: Hash
15
+ field :components, type: Hash
12
16
 
17
+ # QDM 5.0 addition to Laboratory Test, Performed
18
+ field :result_date_time, type: Integer
13
19
  end
@@ -1,7 +1,10 @@
1
1
  class Medication < Entry
2
2
  field :administrationTiming, as: :administration_timing, type: Hash
3
3
  field :freeTextSig, type: String
4
+ # QDM 5.0 disambiguates dose to be dosage and suppy. 'dose' here represents the QDM 5.0 'dosage'.
5
+ # Bonnie displays this as 'dosage'.
4
6
  field :dose, type: Hash
7
+ field :supply, type: Hash
5
8
  field :typeOfMedication, as: :type_of_medication, type: Hash
6
9
  field :statusOfMedication, as: :status_of_medication, type: Hash
7
10
  embeds_many :fulfillmentHistory, class_name: 'FulfillmentHistory'
@@ -13,9 +13,14 @@ class Procedure < Entry
13
13
  field :qdm_status, type: Hash
14
14
 
15
15
  field :radiation_dose, type: Hash
16
- field :radiation_duration, type: Hash
16
+ field :radiation_duration, type: Hash
17
17
 
18
- embeds_one :facility
18
+ # QDM 5.0 addition to Diagnostic Study, Performed
19
+ field :result_date_time, type: Integer
20
+ # Component attribute is for Diagnostic, Performed which is classified as a procedure
21
+ field :components, type: Hash
22
+
23
+ field :facility, type: Hash
19
24
 
20
25
  belongs_to :performer, class_name: "Provider"
21
26
 
@@ -26,7 +26,7 @@ class Record
26
26
  index medical_record_number: 1
27
27
  index test_id: 1
28
28
  index bundle_id: 1
29
- embeds_many :allergies
29
+ embeds_many :allergies # used for QDM 5.0 allergy/intollerance
30
30
  embeds_many :care_goals, class_name: "Entry" # This can be any number of different entry types
31
31
  embeds_many :conditions
32
32
  embeds_many :encounters
@@ -40,6 +40,10 @@ class Record
40
40
  embeds_many :socialhistories, class_name: "Entry"
41
41
  embeds_many :care_experiences
42
42
  embeds_many :assessments
43
+ # TODO: (LDY 9/29/16) Will the below work? These are not defined in the JSON in the HQMF stuff because we're not parsing HQMF.
44
+ # also, allergy_intolerance would translate to allergies_intolerances. If this is done automatically, it won't be done correclty.
45
+ # Does it make sense to do a `class_name` thing like above?
46
+ embeds_many :adverse_events
43
47
 
44
48
  alias :social_history :socialhistories
45
49
  alias :social_history= :socialhistories=
@@ -52,7 +56,7 @@ class Record
52
56
 
53
57
  Sections = [:allergies, :care_goals, :conditions, :encounters, :immunizations, :medical_equipment,
54
58
  :medications, :procedures, :results, :communications, :family_history, :social_history, :vital_signs, :support, :advance_directives,
55
- :insurance_providers, :functional_statuses, :care_experiences, :assessments]
59
+ :insurance_providers, :functional_statuses, :care_experiences, :assessments, :adverse_events]
56
60
 
57
61
  embeds_many :provider_performances
58
62
  embeds_many :addresses, as: :locatable
@@ -6,9 +6,4 @@ class Transfer
6
6
  field :time, type: Integer
7
7
 
8
8
  embedded_in :encounter, class_name: "Encounter", inverse_of: nil
9
-
10
- def shift_dates(date_diff)
11
- self.time = (self.time.nil?) ? nil : self.time + date_diff
12
- end
13
-
14
9
  end
@@ -11,7 +11,8 @@ module HealthDataStandards
11
11
  if @id_map.blank?
12
12
  @id_map = {
13
13
  'r1' => JSON.parse(File.read(File.expand_path('../hqmf_template_oid_map.json', __FILE__))),
14
- 'r2' => JSON.parse(File.read(File.expand_path('../hqmfr2_template_oid_map.json', __FILE__)))
14
+ 'r2' => JSON.parse(File.read(File.expand_path('../hqmfr2_template_oid_map.json', __FILE__))),
15
+ 'r2cql' => JSON.parse(File.read(File.expand_path('../hqmfr2cql_template_oid_map.json', __FILE__)))
15
16
  }
16
17
  end
17
18
  @id_map[version]
@@ -23,7 +24,7 @@ module HealthDataStandards
23
24
  kv_pair = template_id_map(version).find {|k, v| v['definition'] == definition &&
24
25
  v['status'] == status &&
25
26
  v['negation'] == negation}
26
- when "r2"
27
+ when "r2", "r2cql"
27
28
  kv_pair = template_id_map(version).find {|k, v| v['definition'] == definition &&
28
29
  v['status'] == status}
29
30
  end
@@ -378,5 +378,13 @@
378
378
  "2.16.840.1.113883.10.20.28.3.118":{
379
379
  "definition":"assessment",
380
380
  "status":"recommended",
381
+ "negation":false},
382
+ "2.16.840.1.113883.10.20.28.3.120": {
383
+ "definition":"adverse_event",
384
+ "status":"",
385
+ "negation":false},
386
+ "2.16.840.1.113883.10.20.28.3.119": {
387
+ "definition":"allergy_intolerance",
388
+ "status":"",
381
389
  "negation":false}
382
390
  }
@@ -0,0 +1,390 @@
1
+ {
2
+ "2.16.840.1.113883.10.20.28.4.53":{
3
+ "definition":"patient_characteristic",
4
+ "status":"",
5
+ "negation":false},
6
+ "2.16.840.1.113883.10.20.28.4.54":{
7
+ "definition":"patient_characteristic_birthdate",
8
+ "status":"",
9
+ "negation":false},
10
+ "2.16.840.1.113883.10.20.28.4.6":{
11
+ "definition":"patient_characteristic",
12
+ "status":"clinical_trial_participant",
13
+ "negation":false},
14
+ "2.16.840.1.113883.10.20.28.4.55":{
15
+ "definition":"patient_characteristic_gender",
16
+ "status":"",
17
+ "negation":false},
18
+ "2.16.840.1.113883.10.20.28.4.56":{
19
+ "definition":"patient_characteristic_ethnicity",
20
+ "status":"",
21
+ "negation":false},
22
+ "2.16.840.1.113883.10.20.28.4.57":{
23
+ "definition":"patient_characteristic_expired",
24
+ "status":"",
25
+ "negation":false},
26
+ "2.16.840.1.113883.10.20.28.4.58":{
27
+ "definition":"patient_characteristic_payer",
28
+ "status":"",
29
+ "negation":false},
30
+ "2.16.840.1.113883.10.20.28.4.59":{
31
+ "definition":"patient_characteristic_race",
32
+ "status":"",
33
+ "negation":false},
34
+ "2.16.840.1.113883.3.560.1.4":{
35
+ "definition":"encounter",
36
+ "status":"",
37
+ "negation":false},
38
+ "2.16.840.1.113883.10.20.28.4.26":{
39
+ "definition":"encounter",
40
+ "status":"active",
41
+ "negation":false},
42
+ "2.16.840.1.113883.10.20.28.4.5":{
43
+ "definition":"encounter",
44
+ "status":"performed",
45
+ "negation":false},
46
+ "2.16.840.1.113883.10.20.28.4.27":{
47
+ "definition":"encounter",
48
+ "status":"ordered",
49
+ "negation":false},
50
+ "2.16.840.1.113883.10.20.28.4.28":{
51
+ "definition":"encounter",
52
+ "status":"recommended",
53
+ "negation":false},
54
+ "2.16.840.1.113883.10.20.28.4.67":{
55
+ "definition":"procedure",
56
+ "status":"performed",
57
+ "negation":false},
58
+ "2.16.840.1.113883.10.20.28.4.66":{
59
+ "definition":"procedure",
60
+ "status":"ordered",
61
+ "negation":false},
62
+ "2.16.840.1.113883.10.20.28.4.69":{
63
+ "definition":"procedure_result",
64
+ "status":"",
65
+ "negation":false},
66
+ "2.16.840.1.113883.10.20.28.4.64":{
67
+ "definition":"procedure_adverse_event",
68
+ "status":"",
69
+ "negation":false},
70
+ "2.16.840.1.113883.10.20.28.4.65":{
71
+ "definition":"procedure_intolerance",
72
+ "status":"",
73
+ "negation":false},
74
+ "2.16.840.1.113883.10.20.28.4.68":{
75
+ "definition":"procedure",
76
+ "status":"recommended",
77
+ "negation":false},
78
+ "2.16.840.1.113883.10.20.28.4.1":{
79
+ "definition":"diagnosis",
80
+ "status":"active",
81
+ "negation":false},
82
+ "2.16.840.1.113883.10.20.28.4.19":{
83
+ "definition":"diagnosis",
84
+ "status":"resolved",
85
+ "negation":false},
86
+ "2.16.840.1.113883.10.20.28.4.17":{
87
+ "definition":"diagnosis",
88
+ "status":"family_history",
89
+ "negation":false},
90
+ "2.16.840.1.113883.10.20.28.4.18":{
91
+ "definition":"diagnosis",
92
+ "status":"inactive",
93
+ "negation":false},
94
+ "2.16.840.1.113883.10.20.28.4.110":{
95
+ "definition":"diagnosis",
96
+ "status":"",
97
+ "negation":false},
98
+ "2.16.840.1.113883.10.20.28.4.111":{
99
+ "definition":"family_history",
100
+ "status":"",
101
+ "negation":false},
102
+ "2.16.840.1.113883.10.20.28.4.23":{
103
+ "definition":"diagnostic_study",
104
+ "status":"performed",
105
+ "negation":false},
106
+ "2.16.840.1.113883.10.20.28.4.25":{
107
+ "definition":"diagnostic_study_result",
108
+ "status":"",
109
+ "negation":false},
110
+ "2.16.840.1.113883.10.20.28.4.20":{
111
+ "definition":"diagnostic_study_adverse_event",
112
+ "status":"",
113
+ "negation":false},
114
+ "2.16.840.1.113883.10.20.28.4.21":{
115
+ "definition":"diagnostic_study_intolerance",
116
+ "status":"",
117
+ "negation":false},
118
+ "2.16.840.1.113883.10.20.28.4.22":{
119
+ "definition":"diagnostic_study",
120
+ "status":"ordered",
121
+ "negation":false},
122
+ "2.16.840.1.113883.10.20.28.4.23":{
123
+ "definition":"diagnostic_study",
124
+ "status":"performed",
125
+ "negation":true},
126
+ "2.16.840.1.113883.10.20.28.4.24":{
127
+ "definition":"diagnostic_study",
128
+ "status":"recommended",
129
+ "negation":true},
130
+ "2.16.840.1.113883.10.20.28.4.49":{
131
+ "definition":"medication",
132
+ "status":"dispensed",
133
+ "negation":false},
134
+ "2.16.840.1.113883.10.20.28.4.51":{
135
+ "definition":"medication",
136
+ "status":"ordered",
137
+ "negation":false},
138
+ "2.16.840.1.113883.10.20.28.4.48":{
139
+ "definition":"medication",
140
+ "status":"discharge",
141
+ "negation":false},
142
+ "2.16.840.1.113883.10.20.28.4.44":{
143
+ "definition":"medication",
144
+ "status":"active",
145
+ "negation":false},
146
+ "2.16.840.1.113883.10.20.28.4.45":{
147
+ "definition":"medication",
148
+ "status":"administered",
149
+ "negation":false},
150
+ "2.16.840.1.113883.10.20.28.4.46":{
151
+ "definition":"medication_adverse_effects",
152
+ "status":"",
153
+ "negation":false},
154
+ "2.16.840.1.113883.10.20.28.4.47":{
155
+ "definition":"medication_allergy",
156
+ "status":"",
157
+ "negation":false},
158
+ "2.16.840.1.113883.10.20.28.4.50":{
159
+ "definition":"medication_intolerance",
160
+ "status":"",
161
+ "negation":false},
162
+ "2.16.840.1.113883.10.20.28.4.112":{
163
+ "definition":"immunization",
164
+ "status":"administered",
165
+ "negation":false},
166
+ "2.16.840.1.113883.10.20.28.4.113":{
167
+ "definition":"immunization",
168
+ "status":"order",
169
+ "negation":false},
170
+ "2.16.840.1.113883.10.20.28.4.114":{
171
+ "definition":"immunization",
172
+ "status":"allergy",
173
+ "negation":false},
174
+ "2.16.840.1.113883.10.20.28.4.115":{
175
+ "definition":"immunization",
176
+ "status":"intolerance",
177
+ "negation":false},
178
+ "2.16.840.1.113883.10.20.28.4.60":{
179
+ "definition":"physical_exam",
180
+ "status":"",
181
+ "negation":false},
182
+ "2.16.840.1.113883.10.20.28.4.61":{
183
+ "definition":"physical_exam",
184
+ "status":"ordered",
185
+ "negation":false},
186
+ "2.16.840.1.113883.10.20.28.4.62":{
187
+ "definition":"physical_exam",
188
+ "status":"performed",
189
+ "negation":false},
190
+ "22.16.840.1.113883.10.20.28.4.63":{
191
+ "definition":"physical_exam",
192
+ "status":"recommended",
193
+ "negation":false},
194
+ "2.16.840.1.113883.10.20.28.4.4":{
195
+ "definition":"laboratory_test",
196
+ "status":"",
197
+ "negation":false},
198
+ "2.16.840.1.113883.10.20.28.4.42":{
199
+ "definition":"laboratory_test",
200
+ "status":"performed",
201
+ "negation":false},
202
+ "2.16.840.1.113883.10.20.28.4.39":{
203
+ "definition":"laboratory_test_adverse_event",
204
+ "status":"",
205
+ "negation":false},
206
+ "2.16.840.1.113883.10.20.28.4.40":{
207
+ "definition":"laboratory_test_intolerance",
208
+ "status":"",
209
+ "negation":false},
210
+ "2.16.840.1.113883.10.20.28.4.41":{
211
+ "definition":"laboratory_test",
212
+ "status":"ordered",
213
+ "negation":false},
214
+ "2.16.840.1.113883.10.20.28.4.43":{
215
+ "definition":"laboratory_test",
216
+ "status":"recommended",
217
+ "negation":false},
218
+ "2.16.840.1.113883.10.20.28.4.7":{
219
+ "definition":"care_goal",
220
+ "status":"",
221
+ "negation":false},
222
+ "2.16.840.1.113883.10.20.28.4.8":{
223
+ "definition":"communication_from_patient_to_provider",
224
+ "status":"",
225
+ "negation":false},
226
+ "2.16.840.1.113883.10.20.28.4.9":{
227
+ "definition":"communication_from_provider_to_patient",
228
+ "status":"",
229
+ "negation":false},
230
+ "2.16.840.1.113883.10.20.28.4.10":{
231
+ "definition":"communication_from_provider_to_provider",
232
+ "status":"",
233
+ "negation":false},
234
+ "2.16.840.1.113883.10.20.28.4.13":{
235
+ "definition":"device",
236
+ "status":"applied",
237
+ "negation":false},
238
+ "2.16.840.1.113883.10.20.28.4.11":{
239
+ "definition":"device_adverse_event",
240
+ "status":"",
241
+ "negation":false},
242
+ "2.16.840.1.113883.10.20.28.4.12":{
243
+ "definition":"device_allergy",
244
+ "status":"",
245
+ "negation":false},
246
+ "2.16.840.1.113883.10.20.28.4.14":{
247
+ "definition":"device_intolerance",
248
+ "status":"",
249
+ "negation":false},
250
+ "2.16.840.1.113883.10.20.28.4.15":{
251
+ "definition":"device",
252
+ "status":"ordered",
253
+ "negation":false},
254
+ "2.16.840.1.113883.10.20.28.4.16":{
255
+ "definition":"device",
256
+ "status":"recommended",
257
+ "negation":false},
258
+ "2.16.840.1.113883.10.20.28.4.73":{
259
+ "definition":"substance",
260
+ "status":"administered",
261
+ "negation":false},
262
+ "2.16.840.1.113883.10.20.28.4.77":{
263
+ "definition":"substance",
264
+ "status":"ordered",
265
+ "negation":false},
266
+ "2.16.840.1.113883.10.20.28.4.46.74":{
267
+ "definition":"substance_adverse_event",
268
+ "status":"",
269
+ "negation":false},
270
+ "2.16.840.1.113883.10.20.28.4.76":{
271
+ "definition":"substance_intolerance",
272
+ "status":"",
273
+ "negation":false},
274
+ "2.16.840.1.113883.10.20.28.4.75":{
275
+ "definition":"substance_allergy",
276
+ "status":"",
277
+ "negation":false},
278
+ "2.16.840.1.113883.10.20.28.4.78":{
279
+ "definition":"substance",
280
+ "status":"recommended",
281
+ "negation":false},
282
+ "2.16.840.1.113883.10.20.28.4.33":{
283
+ "definition":"intervention_adverse_event",
284
+ "status":"",
285
+ "negation":false},
286
+ "2.16.840.1.113883.10.20.28.4.34":{
287
+ "definition":"intervention_intolerance",
288
+ "status":"",
289
+ "negation":false},
290
+ "2.16.840.1.113883.10.20.28.4.35":{
291
+ "definition":"intervention",
292
+ "status":"ordered",
293
+ "negation":false},
294
+ "2.16.840.1.113883.10.20.28.4.36":{
295
+ "definition":"intervention",
296
+ "status":"performed",
297
+ "negation":false},
298
+ "2.16.840.1.113883.10.20.28.4.38":{
299
+ "definition":"intervention_result",
300
+ "status":"",
301
+ "negation":false},
302
+ "2.16.840.1.113883.10.20.28.4.37":{
303
+ "definition":"intervention",
304
+ "status":"recommended",
305
+ "negation":false},
306
+ "2.16.840.1.113883.10.20.28.4.79":{
307
+ "definition":"symptom",
308
+ "status":"active",
309
+ "negation":false},
310
+ "2.16.840.1.113883.10.20.28.4.80":{
311
+ "definition":"symptom",
312
+ "status":"assessed",
313
+ "negation":false},
314
+ "2.16.840.1.113883.10.20.28.4.81":{
315
+ "definition":"symptom",
316
+ "status":"inactive",
317
+ "negation":false},
318
+ "2.16.840.1.113883.10.20.28.4.82":{
319
+ "definition":"symptom",
320
+ "status":"resolved",
321
+ "negation":false},
322
+ "2.16.840.1.113883.10.20.28.4.116":{
323
+ "definition":"symptom",
324
+ "status":"",
325
+ "negation":false},
326
+ "2.16.840.1.113883.10.20.28.4.30":{
327
+ "definition":"functional_status",
328
+ "status":"performed",
329
+ "negation":false},
330
+ "2.16.840.1.113883.10.20.28.4.29":{
331
+ "definition":"functional_status",
332
+ "status":"ordered",
333
+ "negation":false},
334
+ "2.16.840.1.113883.10.20.28.4.31":{
335
+ "definition":"functional_status",
336
+ "status":"recommended",
337
+ "negation":false},
338
+ "2.16.840.1.113883.10.20.28.4.32":{
339
+ "definition":"functional_status_result",
340
+ "status":"",
341
+ "negation":false},
342
+ "2.16.840.1.113883.10.20.28.4.72":{
343
+ "definition":"risk_category_assessment",
344
+ "status":"",
345
+ "negation":false},
346
+ "2.16.840.1.113883.10.20.28.4.70":{
347
+ "definition":"provider_care_experience",
348
+ "status":"",
349
+ "negation":false},
350
+ "2.16.840.1.113883.10.20.28.4.52":{
351
+ "definition":"patient_care_experience",
352
+ "status":"",
353
+ "negation":false},
354
+ "2.16.840.1.113883.10.20.28.4.87":{
355
+ "definition":"preference_provider",
356
+ "status":"",
357
+ "negation":false},
358
+ "2.16.840.1.113883.10.20.28.4.86":{
359
+ "definition":"preference_patient",
360
+ "status":"",
361
+ "negation":false},
362
+ "2.16.840.1.113883.10.20.28.4.71":{
363
+ "definition":"provider_characteristic",
364
+ "status":"",
365
+ "negation":false},
366
+ "2.16.840.1.113883.10.20.28.4.84":{
367
+ "definition":"transfer_from",
368
+ "status":"",
369
+ "negation":false},
370
+ "2.16.840.1.113883.10.20.28.4.85":{
371
+ "definition":"transfer_to",
372
+ "status":"",
373
+ "negation":false},
374
+ "2.16.840.1.113883.10.20.28.4.117":{
375
+ "definition":"assessment",
376
+ "status":"performed",
377
+ "negation":false},
378
+ "2.16.840.1.113883.10.20.28.4.118":{
379
+ "definition":"assessment",
380
+ "status":"recommended",
381
+ "negation":false},
382
+ "2.16.840.1.113883.10.20.28.4.120": {
383
+ "definition":"adverse_event",
384
+ "status":"",
385
+ "negation":false},
386
+ "2.16.840.1.113883.10.20.28.4.119": {
387
+ "definition":"allergy_intolerance",
388
+ "status":"",
389
+ "negation":false}
390
+ }