health-data-standards 3.7.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }