health-data-standards 4.2.0 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/health-data-standards.rb +1 -0
- data/lib/health-data-standards/import/cda/communication_importer.rb +3 -1
- data/lib/health-data-standards/models/assessment.rb +1 -0
- data/lib/health-data-standards/models/communication.rb +12 -0
- data/lib/health-data-standards/models/lab_result.rb +1 -0
- data/lib/health-data-standards/models/medical_equipment.rb +1 -0
- data/lib/health-data-standards/models/medication.rb +8 -0
- data/lib/health-data-standards/models/procedure.rb +4 -0
- data/lib/health-data-standards/models/ratio_result_value.rb +6 -0
- data/lib/health-data-standards/models/svs/value_set.rb +0 -1
- data/lib/health-data-standards/util/hqmfr2cql_template_oid_map.json +9 -13
- data/lib/hqmf-model/data_criteria.json +18 -0
- data/lib/hqmf-model/data_criteria.rb +40 -2
- data/lib/hqmf-model/types.rb +37 -0
- data/lib/hqmf-parser/cql/value_set_helper.rb +3 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b3e9e7e37d4f361d8ebce2aafaa93d7fa32aaccc28d85381ff3cf325f4ba8934
|
4
|
+
data.tar.gz: 664647467b139621ce860648beaccb907ed716885f8e6e713c93228347fecf8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a8bc171be92e16d543ae408c64e29d17478c232ad8c8cbda42dec47a33ba9a6b6d669240f05f8623f6046b7e31ccf4b0efa6fbe15c8332b74acbfc5756abffb
|
7
|
+
data.tar.gz: 6c64d3251eca602cc91e86964ec7e15d5a5e926d00c88e43dee33a92fb265ecc16abc20d280c111383aa90e729c29f139a5bd506400b50c04246f347b497fb6c
|
@@ -38,6 +38,7 @@ require_relative 'health-data-standards/models/thing_with_codes'
|
|
38
38
|
require_relative 'health-data-standards/models/result_value'
|
39
39
|
require_relative 'health-data-standards/models/coded_result_value'
|
40
40
|
require_relative 'health-data-standards/models/physical_quantity_result_value'
|
41
|
+
require_relative 'health-data-standards/models/ratio_result_value'
|
41
42
|
require_relative 'health-data-standards/models/cda_identifier'
|
42
43
|
require_relative 'health-data-standards/models/reference'
|
43
44
|
require_relative 'health-data-standards/models/entry'
|
@@ -14,6 +14,7 @@ module HealthDataStandards
|
|
14
14
|
|
15
15
|
def create_entry(entry_element, nrh = NarrativeReferenceHandler.new)
|
16
16
|
communication = super
|
17
|
+
# communication.direction is deprecated as of QDM 5.4
|
17
18
|
communication.direction = find_communication_direction(entry_element)
|
18
19
|
extract_reason_or_negation(entry_element, communication)
|
19
20
|
extract_references(entry_element, communication)
|
@@ -22,6 +23,7 @@ module HealthDataStandards
|
|
22
23
|
|
23
24
|
private
|
24
25
|
|
26
|
+
# find_communication_direction is deprecated as of QDM 5.4
|
25
27
|
def find_communication_direction(entry_element)
|
26
28
|
case entry_element.at_xpath(@template_xpath).value
|
27
29
|
when "2.16.840.1.113883.10.20.24.3.3"
|
@@ -52,4 +54,4 @@ module HealthDataStandards
|
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
55
|
-
end
|
57
|
+
end
|
@@ -1,3 +1,15 @@
|
|
1
1
|
class Communication < Entry
|
2
|
+
# :direction is deprecated as of QDM 5.4
|
2
3
|
field :direction, type: String
|
4
|
+
|
5
|
+
# QDM 5.4 merges all communication types.
|
6
|
+
# The following attributes were added for QDM 5.4
|
7
|
+
# * category
|
8
|
+
# * sender
|
9
|
+
# * recipient
|
10
|
+
# * medium
|
11
|
+
field :category, type: Hash
|
12
|
+
field :sender, type: Hash
|
13
|
+
field :recipient, type: Hash
|
14
|
+
field :medium, type: Hash
|
3
15
|
end
|
@@ -7,6 +7,7 @@ class LabResult < Entry
|
|
7
7
|
field :referenceRangeLow, as: :reference_range_low, type: Hash
|
8
8
|
field :interpretation, type: Hash
|
9
9
|
field :reaction, type: Hash
|
10
|
+
# method deprecated for "Laboratory Test, Recommended" and "Laboratory Test, Order" in QDM 5.4. Remains for "Laboratory Test, Performed".
|
10
11
|
field :method, type: Hash
|
11
12
|
# The resulting status of a procedure as defined in the QDM documentation. This is different
|
12
13
|
# than the status associated with the `Entry` object, which relates to the data criteria
|
@@ -3,6 +3,7 @@ class MedicalEquipment < Entry
|
|
3
3
|
field :manufacturer, type: String
|
4
4
|
field :anatomicalStructure, as: :anatomical_structure, type: Hash
|
5
5
|
field :removalTime, as: :removal_time, type: Integer
|
6
|
+
# anatomical approach deprecated as of QDM 5.4
|
6
7
|
field :anatomical_approach , type: Hash
|
7
8
|
field :reaction, type: Hash
|
8
9
|
def shift_dates(date_diff)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# Medication is used for Medication, Immunization and Substance QDM types.
|
1
2
|
class Medication < Entry
|
2
3
|
# administrationTiming is the same as QDM5.3 frequency in Bonnie
|
3
4
|
field :administrationTiming, as: :administration_timing, type: Hash
|
@@ -5,6 +6,9 @@ class Medication < Entry
|
|
5
6
|
# QDM 5.0 disambiguates dose to be dosage and suppy. 'dose' here represents the QDM 5.0 'dosage'.
|
6
7
|
# Bonnie displays this as 'dosage'.
|
7
8
|
field :dose, type: Hash
|
9
|
+
field :setting, type: Hash
|
10
|
+
# Attribute deprecated for "Medication, Active", "Medication, Administered", "Immunization, Administered", "Substance, Administered", "Substance, Recommended" in QDM 5.4.
|
11
|
+
# Remains for "Medication, Dispensed", "Medication, Order", "Medication, Discharge", "Immunization, Order", "Substance, Order"
|
8
12
|
field :supply, type: Hash
|
9
13
|
field :refills, type: Hash
|
10
14
|
field :typeOfMedication, as: :type_of_medication, type: Hash
|
@@ -14,6 +18,7 @@ class Medication < Entry
|
|
14
18
|
|
15
19
|
field :route, type: Hash
|
16
20
|
field :anatomical_approach, type: Hash
|
21
|
+
field :dispenserIdentifier, as: :dispenser_identifier, type: Hash
|
17
22
|
field :doseRestriction, as: :dose_restriction, type: Hash
|
18
23
|
field :fulfillmentInstructions, as: :fulfillment_instructions, type: String
|
19
24
|
field :indication, type: Hash
|
@@ -21,9 +26,12 @@ class Medication < Entry
|
|
21
26
|
field :vehicle, type: Hash
|
22
27
|
field :reaction, type: Hash
|
23
28
|
field :deliveryMethod, as: :delivery_method, type: Hash
|
29
|
+
field :prescriberIdentifier, as: :prescriber_identifier, type: Hash
|
24
30
|
field :patientInstructions, as: :patient_instructions, type: String
|
25
31
|
field :doseIndicator, as: :dose_indicator, type: String
|
32
|
+
field :daysSupplied, as: :days_supplied, type: Hash
|
26
33
|
|
34
|
+
# In QDM 5.4: method not present on 'medication'. deprecated for 'substance' (particularly, 'Substance, Recommended')
|
27
35
|
field :method , type: Hash
|
28
36
|
field :active_datetime , type: Integer
|
29
37
|
field :signed_datetime , type: Integer
|
@@ -3,9 +3,13 @@ class Procedure < Entry
|
|
3
3
|
field :incisionTime, type: Integer, as: :incision_time
|
4
4
|
field :ordinality, type: Hash
|
5
5
|
field :source, type: Hash
|
6
|
+
# anatomical approach deprecated as of QDM 5.4
|
6
7
|
field :anatomical_approach, type: Hash
|
7
8
|
field :anatomical_target, type: Hash
|
8
9
|
field :anatomical_location, type: Hash
|
10
|
+
# method deprecated for "Procedure, Recommended" and "Procedure, Order" in QDM 5.4. Remains for "Procedure, Performed".
|
11
|
+
# method deprecated for "Diagnostic Study, Recommended" and "Diagnostic Study, Order" in QDM 5.4. Remains for "Diagnostic Study, Performed".
|
12
|
+
# method deprecated for "Physical Exam, Recommended" and "Physical Exam, Order" in QDM 5.4. Remains for "Physical Exam, Performed".
|
9
13
|
field :method, type: Hash
|
10
14
|
field :reaction, type: Hash
|
11
15
|
# The resulting status of a procedure as defined in the QDM documentation. This is different
|
@@ -219,18 +219,6 @@
|
|
219
219
|
"definition":"care_goal",
|
220
220
|
"status":"",
|
221
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
222
|
"2.16.840.1.113883.10.20.28.4.13":{
|
235
223
|
"definition":"device",
|
236
224
|
"status":"applied",
|
@@ -371,6 +359,10 @@
|
|
371
359
|
"definition":"transfer_to",
|
372
360
|
"status":"",
|
373
361
|
"negation":false},
|
362
|
+
"2.16.840.1.113883.10.20.28.4.131":{
|
363
|
+
"definition":"assessment",
|
364
|
+
"status":"ordered",
|
365
|
+
"negation":false},
|
374
366
|
"2.16.840.1.113883.10.20.28.4.117":{
|
375
367
|
"definition":"assessment",
|
376
368
|
"status":"performed",
|
@@ -390,5 +382,9 @@
|
|
390
382
|
"2.16.840.1.113883.10.20.28.4.130": {
|
391
383
|
"definition":"participation",
|
392
384
|
"status":"",
|
393
|
-
"negation":false}
|
385
|
+
"negation":false},
|
386
|
+
"2.16.840.1.113883.10.20.28.4.132":{
|
387
|
+
"definition":"communication",
|
388
|
+
"status":"performed",
|
389
|
+
"negation":true}
|
394
390
|
}
|
@@ -647,6 +647,15 @@
|
|
647
647
|
"hard_status":false,
|
648
648
|
"patient_api_function":"communications",
|
649
649
|
"not_supported":false},
|
650
|
+
"communication_performed":{
|
651
|
+
"title":"communication, performed",
|
652
|
+
"category":"communications",
|
653
|
+
"definition":"communication",
|
654
|
+
"status":"performed",
|
655
|
+
"sub_category":"",
|
656
|
+
"hard_status":false,
|
657
|
+
"patient_api_function":"communications",
|
658
|
+
"not_supported":false},
|
650
659
|
"device":{
|
651
660
|
"title":"device",
|
652
661
|
"category":"devices",
|
@@ -1007,6 +1016,15 @@
|
|
1007
1016
|
"hard_status":false,
|
1008
1017
|
"patient_api_function":"encounters",
|
1009
1018
|
"not_supported":false},
|
1019
|
+
"assessment_ordered":{
|
1020
|
+
"title":"assessment order",
|
1021
|
+
"category":"assessments",
|
1022
|
+
"definition":"assessment",
|
1023
|
+
"status":"ordered",
|
1024
|
+
"sub_category":"",
|
1025
|
+
"hard_status":false,
|
1026
|
+
"patient_api_function":"assessments",
|
1027
|
+
"not_supported":false},
|
1010
1028
|
"assessment_performed":{
|
1011
1029
|
"title":"assessment performed",
|
1012
1030
|
"category":"assessments",
|
@@ -24,24 +24,35 @@ module HQMF
|
|
24
24
|
# `code`: The code for the entry. This should be included to make HQMF generation work properly. This is whatever code is dictated in the HQMF. For Diagnosis, this is in [HQMF QDM IG](http://www.hl7.org/implement/standards/product_brief.cfm?product_id=346) vol 2 page 155 and is `29308-4`.
|
25
25
|
# `code_system`: This is the oid for whatever code system contains `code`. For Diagnosis, this is LOINC: `2.16.840.1.113883.6.1`. This is also located at (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=346) vol 2 page 155.
|
26
26
|
# `template_id`: These appear to be related to HQMFr1 template ids. These appear to be dangerously out of date. Don't use.
|
27
|
-
FIELDS = {'ABATEMENT_DATETIME' => {title:'Abatement Datetime', coded_entry_method: :end_date, field_type: :timestamp},
|
27
|
+
FIELDS = {'ABATEMENT_DATETIME' => {title:'Abatement Datetime', coded_entry_method: :end_date, field_type: :timestamp}, # ABATEMENT_DATETIME is no longer used.
|
28
28
|
'ACTIVE_DATETIME' => {title:'Active Date/Time', coded_entry_method: :active_datetime, field_type: :timestamp},
|
29
|
+
# ADMISSION_DATETIME is no longer used.
|
29
30
|
'ADMISSION_DATETIME' => {title:'Admission Date/Time', coded_entry_method: :admit_time, code: '399423000', code_system:'2.16.840.1.113883.6.96', field_type: :timestamp},
|
30
31
|
# QDM 5.0 addition. This is the same as FACILITY_LOCATION.
|
31
32
|
# TODO: (LDY 10/5/2016) this is a new attribute from QDM 5.0. We do not yet have the code or template_id for this. This should be updated when we do.
|
32
33
|
'ADMISSION_SOURCE' => {title:'Admission Source', coded_entry_method: :admission_source, field_type: :value},
|
34
|
+
# ANATOMICAL_APPROACH_SITE is no longer used.
|
33
35
|
'ANATOMICAL_APPROACH_SITE' => {title:'Anatomical Approach Site', coded_entry_method: :anatomical_approach, field_type: :value},
|
34
36
|
'ANATOMICAL_LOCATION_SITE' => {title:'Anatomical Location Site', coded_entry_method: :anatomical_location, field_type: :value},
|
37
|
+
# ANATOMICAL_STRUCTURE is no longer used.
|
35
38
|
'ANATOMICAL_STRUCTURE' => {title:'Anatomical Structure', coded_entry_method: :anatomical_structure, code: '91723000', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1000.2', field_type: :value},
|
39
|
+
# Added in QDM 5.4
|
40
|
+
'CATEGORY' => {title:'Category', coded_entry_method: :category, field_type: :value},
|
36
41
|
'CAUSE' => {title:'Cause', coded_entry_method: :cause_of_death, code: '42752001', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1017.2', field_type: :value},
|
37
42
|
# TODO: Determine actual code and code_system for component attribute
|
38
43
|
'COMPONENT' => {title: 'Component', coded_entry_method: :components, field_type: :value},
|
44
|
+
# CUMULATIVE_MEDICATION_DURATION is no longer used
|
39
45
|
'CUMULATIVE_MEDICATION_DURATION' => {title:'Cumulative Medication Duration', coded_entry_method: :cumulative_medication_duration, code: '261773006', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1001.3', field_type: :value},
|
40
46
|
# MISSING Date - The date that the patient passed away. - Patient Characteristic Expired
|
47
|
+
# Could not find a code and code_system for this data criteria (days supplied) in HQMF QDM IG v3
|
48
|
+
'DAYS_SUPPLIED' => {title:'Days Supplied', coded_entry_method: :days_supplied, field_type: :value},
|
41
49
|
'DIAGNOSIS' => {title:'Diagnosis', coded_entry_method: :diagnosis, field_type: :value},
|
50
|
+
# DISCHARGE_DATETIME is no longer used.
|
42
51
|
'DISCHARGE_DATETIME' => {title:'Discharge Date/Time', coded_entry_method: :discharge_time, code: '442864001', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1025.1', field_type: :timestamp},
|
43
52
|
# TODO: (LDY 10/5/2016) this changed from "discharge status" to "discharge disposition". likely there is a code and template id change necessary. these are not yet known.
|
53
|
+
# DISCHARGE_STATUS is no longer used.
|
44
54
|
'DISCHARGE_STATUS' => {title:'Discharge Disposition', coded_entry_method: :discharge_disposition, code: '309039003', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1003.2', field_type: :value},
|
55
|
+
'DISPENSER_IDENTIFIER' => {title:'Dispenser Identifier', coded_entry_method: :dispenser_identifier, field_type: :value},
|
45
56
|
# TODO: (LDY 10/4/2016) this changed from "dose" to "dosage". it's possible that there's another code associated with this. this code was not available at the time of this change.
|
46
57
|
'DOSE' => {title:'Dosage', coded_entry_method: :dose, code: '398232005', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1004.1', field_type: :value},
|
47
58
|
'FACILITY_LOCATION' => {title:'Facility Location', coded_entry_method: :facility, code: 'SDLOC', field_type: :value},
|
@@ -49,49 +60,72 @@ module HQMF
|
|
49
60
|
'FACILITY_LOCATION_ARRIVAL_DATETIME' => {title:'Location Period Start Date/Time', coded_entry_method: :facility_arrival, code: 'SDLOC_ARRIVAL', field_type: :nested_timestamp},
|
50
61
|
'FACILITY_LOCATION_DEPARTURE_DATETIME' => {title:'Location Period End Date/Time', coded_entry_method: :facility_departure, code: 'SDLOC_DEPARTURE', field_type: :nested_timestamp},
|
51
62
|
'FREQUENCY' => {title:'Frequency', coded_entry_method: :administration_timing, code: '307430002', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1006.1', field_type: :value},
|
63
|
+
# HEALTH_RECORD_FIELD is no longer used.
|
52
64
|
'HEALTH_RECORD_FIELD' => {title: 'Health Record Field', coded_entry_method: :health_record_field, code: '395676008', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.28.3.102:2014-11-24', field_type: :value},
|
53
65
|
'INCISION_DATETIME' => {title:'Incision Date/Time', coded_entry_method: :incision_time, code: '34896006', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.89', field_type: :timestamp},
|
66
|
+
# LATERALITY is no longer used.
|
54
67
|
'LATERALITY' => {title:'Laterality', coded_entry_method: :laterality, code: '272741003', code_system:'2.16.840.1.113883.6.96', template_id: '', field_type: :value},
|
55
68
|
'LENGTH_OF_STAY' => {title:'Length of Stay', coded_entry_method: :length_of_stay, code: '183797002', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1029.3', field_type: :value},
|
69
|
+
# Added in QDM 5.4
|
70
|
+
'MEDIUM' => {title:'Medium', coded_entry_method: :medium, field_type: :value},
|
56
71
|
'METHOD' => {title:'Method', coded_entry_method: :method, template_id: '', field_type: :value},
|
57
72
|
# Negation Rationale isn't encoded
|
73
|
+
# ONSET_AGE is no longer used.
|
58
74
|
'ONSET_AGE' => {title:'Onset Age', coded_entry_method: :onset_age, code: '445518008', code_system:'2.16.840.1.113883.6.96', template_id: '', field_type: :value},
|
75
|
+
# ONSET_DATETIME is no longer used.
|
59
76
|
'ONSET_DATETIME' => {title:'Onset Datetime', coded_entry_method: :start_date, field_type: :timestamp},
|
77
|
+
# ORDINAL is no longer used.
|
60
78
|
'ORDINAL' => {title:'Ordinality', coded_entry_method: :ordinality, code: '117363000', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1012.2', field_type: :value}, # previous
|
61
79
|
'ORDINALITY' => {title:'Ordinality', coded_entry_method: :ordinality, code: '117363000', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1012.2', field_type: :value},
|
80
|
+
# PATIENT_PREFERENCE is no longer used.
|
62
81
|
'PATIENT_PREFERENCE' => {title:'Patient Preference', coded_entry_method: :patient_preference, code: 'PAT', code_system: '2.16.840.1.113883.5.8', template_id: '2.16.840.1.113883.10.20.24.3.83', field_type: :value},
|
82
|
+
'PRESCRIBER_IDENTIFIER' => {title:'Prescriber Identifier', coded_entry_method: :prescriber_identifier, field_type: :value},
|
63
83
|
'PRINCIPAL_DIAGNOSIS' => {title:'Principal Diagnosis', coded_entry_method: :principal_diagnosis, field_type: :value},
|
84
|
+
# PROVIDER_PREFERENCE is no longer used.
|
64
85
|
'PROVIDER_PREFERENCE' => {title:'Provider Preference', coded_entry_method: :provider_preference, code: '103323008', code_system: '2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.84', field_type: :value},
|
86
|
+
#RADIATION_DOSAGE is no longer used.
|
65
87
|
'RADIATION_DOSAGE' => {title:'Radiation Dosage', coded_entry_method: :radiation_dose, code: '228815006', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.91', field_type: :value},
|
88
|
+
#RADIATION_DURATION is no longer used.
|
66
89
|
'RADIATION_DURATION' => {title:'Radiation Duration', coded_entry_method: :radiation_duration, code: '306751006', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.91', field_type: :value},
|
90
|
+
# REACTION is no longer used.
|
67
91
|
'REACTION'=> {title:'Reaction', coded_entry_method: :reaction, code: '263851003', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.85', field_type: :value},
|
68
92
|
'REASON' => {title:'Reason', coded_entry_method: :reason, code: '410666004', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.10.20.24.3.88', field_type: :value},
|
93
|
+
# Added in QDM 5.4
|
94
|
+
'RECIPIENT' => {title:'Recipient', coded_entry_method: :recipient, field_type: :value},
|
95
|
+
# RECORDED_DATETIME is no longer used.
|
69
96
|
'RECORDED_DATETIME' => {title:'Recorded Datetime', coded_entry_method: :start_date, field_type: :timestamp},
|
70
97
|
'REFERENCE_RANGE_HIGH' => {title:'Reference Range - High', coded_entry_method: :reference_range_high, field_type: :value},
|
71
98
|
'REFERENCE_RANGE_LOW' => {title:'Reference Range - Low', coded_entry_method: :reference_range_low, field_type: :value},
|
72
99
|
'REFILLS' => {title:'Refills', coded_entry_method: :refills, field_type: :value},
|
73
100
|
'RELATED_TO' => {title:'Related To', coded_entry_method: :related_to, code: 'REL', codeSystem: '2.16.840.1.113883.1.11.11603', field_type: :value},
|
74
101
|
'RELATIONSHIP' => {title:'Relationship', coded_entry_method: :relationship_to_patient, field_type: :value},
|
102
|
+
# REMOVAL_DATETIME is no longer used.
|
75
103
|
'REMOVAL_DATETIME' => {title:'Removal Date/Time', coded_entry_method: :removal_time, code: '118292001', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1032.1', field_type: :timestamp},
|
76
104
|
# Result isn't encoded
|
77
105
|
# TODO: (LDY 10/4/2016) RESULT_DATETIME is a new attribute in QDM 5.0. We do not yet have codes/template information for this.
|
78
106
|
'RESULT_DATETIME' => {title:'Result Date/Time', coded_entry_method: :result_date_time, field_type: :timestamp},
|
79
107
|
'ROUTE' => {title:'Route', coded_entry_method: :route, code: '263513008', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1020.2', field_type: :value},
|
108
|
+
# Added in QDM 5.4
|
109
|
+
'SENDER' => {title:'Sender', coded_entry_method: :sender, field_type: :value},
|
110
|
+
'SETTING' => {title:'Setting', coded_entry_method: :setting, field_type: :value},
|
80
111
|
'SEVERITY' => {title:'Severity', coded_entry_method: :severity, code: 'SEV', code_system:'2.16.840.1.113883.5.4', template_id: '2.16.840.1.113883.10.20.22.4.8', field_type: :value},
|
112
|
+
# SIGNED_DATETIME is no longer used.
|
81
113
|
'SIGNED_DATETIME' => {title:'Signed Date/Time', coded_entry_method: :signed_date_time, field_type: :timestamp},
|
114
|
+
# START_DATETIME is no longer used.
|
82
115
|
'START_DATETIME' => {title:'Start Date/Time', coded_entry_method: :start_date, code: '398201009', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1027.1', field_type: :timestamp},
|
83
116
|
# STATUS is referenced in the code as `qdm_status` because entry/Record already has a `status`/`status_code` field which has a different meaning
|
84
117
|
'STATUS' => {title: 'Status', coded_entry_method: :qdm_status, code: '33999-4', code_system:'2.16.840.1.113883.6.1', field_type: :value},
|
118
|
+
# STOP_DATETIME is no longer used.
|
85
119
|
'STOP_DATETIME' => {title:'Stop Date/Time', coded_entry_method: :end_date, code: '397898000', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.1026.1', field_type: :timestamp},
|
86
120
|
# TODO: (LDY 10/4/2016) SUPPLY is a new attribute in QDM 5.0. We do not yet have codes/template information for this.
|
87
121
|
'SUPPLY' => {title:'Supply', coded_entry_method: :supply, field_type: :value},
|
88
122
|
'TARGET_OUTCOME' => {title:'Target Outcome', coded_entry_method: :target_outcome, code: '385676005', code_system:'2.16.840.1.113883.6.96', template_id: '', field_type: :value},
|
89
|
-
# MISSING Time - The time that the patient passed away
|
90
123
|
|
91
124
|
# Custom field values
|
92
125
|
# QDM 5.3 Update: "Related To" replaces Fulfills. We are keeping the fulfills code and only make changes to the UI.
|
93
126
|
'FLFS' => {title:'Related To', coded_entry_method: :fulfills, code: 'FLFS', field_type: :reference},
|
94
127
|
'SOURCE' => {title:'Source', coded_entry_method: :source, code: '260753009', code_system:'2.16.840.1.113883.6.96', template_id: '2.16.840.1.113883.3.560.1.2001.2', field_type: :value},
|
128
|
+
# TRANSFER_FROM, TRANSFER_FROM_DATETIME, TRANSFER_TO, and TRANSFER_TO_DATETIME are no longer used.
|
95
129
|
'TRANSFER_FROM' => {title:'Transfer From', coded_entry_method: :transfer_from, code: 'TRANSFER_FROM', template_id: '2.16.840.1.113883.10.20.24.3.81', field_type: :value},
|
96
130
|
'TRANSFER_FROM_DATETIME' => {title:'Transfer From Date/Time', coded_entry_method: :transfer_from_time, code: 'ORG_TIME', template_id: '2.16.840.1.113883.10.20.24.3.81', field_type: :nested_timestamp},
|
97
131
|
'TRANSFER_TO' => {title:'Transfer To', coded_entry_method: :transfer_to, code: 'TRANSFER_TO', template_id: '2.16.840.1.113883.10.20.24.3.82', field_type: :value},
|
@@ -455,6 +489,10 @@ module HQMF
|
|
455
489
|
value = HQMF::Collection.from_json(json)
|
456
490
|
when 'FAC'
|
457
491
|
value = Facility.new(json)
|
492
|
+
when 'ID'
|
493
|
+
value = HQMF::Identifier.from_json(json)
|
494
|
+
when 'RT'
|
495
|
+
value = HQMF::Ratio.from_json(json)
|
458
496
|
else
|
459
497
|
raise "Unknown value type [#{type}]"
|
460
498
|
end
|
data/lib/hqmf-model/types.rb
CHANGED
@@ -453,5 +453,42 @@ module HQMF
|
|
453
453
|
check_equality(self,other)
|
454
454
|
end
|
455
455
|
end
|
456
|
+
|
457
|
+
class Ratio
|
458
|
+
include HQMF::Conversion::Utilities
|
459
|
+
attr_accessor :type, :numerator, :denominator
|
460
|
+
|
461
|
+
# @param [String] type
|
462
|
+
# @param [Value] numerator
|
463
|
+
# @param [Value] denominator
|
464
|
+
def initialize(type, numerator, denominator)
|
465
|
+
@type = type || 'RT'
|
466
|
+
@numerator = numerator
|
467
|
+
@denominator = denominator
|
468
|
+
end
|
469
|
+
|
470
|
+
def self.from_json(json)
|
471
|
+
type = json["type"] if json["type"]
|
472
|
+
numerator = json["numerator"] if json["numerator"]
|
473
|
+
denominator = json["denominator"] if json["denominator"]
|
474
|
+
HQMF::Ratio.new(type, numerator, denominator)
|
475
|
+
end
|
476
|
+
|
477
|
+
def numerator?
|
478
|
+
@numerator
|
479
|
+
end
|
480
|
+
|
481
|
+
def denominator?
|
482
|
+
@denominator
|
483
|
+
end
|
484
|
+
|
485
|
+
def to_json
|
486
|
+
build_hash(self, [:type, :numerator, :denominator])
|
487
|
+
end
|
488
|
+
|
489
|
+
def ==(other)
|
490
|
+
check_equality(self, other)
|
491
|
+
end
|
492
|
+
end
|
456
493
|
|
457
494
|
end
|
@@ -93,7 +93,9 @@ module HQMF2CQL
|
|
93
93
|
'2.16.840.1.113883.10.20.28.4.118' => { valueset_path: './*/cda:code', result_path: nil },
|
94
94
|
'2.16.840.1.113883.10.20.28.4.119' => { valueset_path: "./*/cda:participation[@typeCode='CSM']/cda:role[@classCode='MANU']/cda:playingEntity[@classCode='MMAT']/cda:code", result_path: nil },
|
95
95
|
'2.16.840.1.113883.10.20.28.4.120' => { valueset_path: "./*/cda:participation[@typeCode='CSM']/cda:role[@classCode='MANU']/cda:playingEntity[@classCode='MMAT']/cda:code", result_path: nil },
|
96
|
-
'2.16.840.1.113883.10.20.28.4.130' => { valueset_path: './*/cda:value', result_path: nil }
|
96
|
+
'2.16.840.1.113883.10.20.28.4.130' => { valueset_path: './*/cda:value', result_path: nil },
|
97
|
+
'2.16.840.1.113883.10.20.28.4.131' => { valueset_path: './*/cda:code', result_path: nil },
|
98
|
+
'2.16.840.1.113883.10.20.28.4.132' => { valueset_path: "./*/cda:outboundRelationship[@typeCode='RSON']/cda:observationCriteria/cda:value", result_path: nil },
|
97
99
|
}
|
98
100
|
# rubocop:enable Metrics/LineLength
|
99
101
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: health-data-standards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The MITRE Corporation
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -375,6 +375,7 @@ files:
|
|
375
375
|
- lib/health-data-standards/models/qrda/legal_authenticator.rb
|
376
376
|
- lib/health-data-standards/models/qrda/organization.rb
|
377
377
|
- lib/health-data-standards/models/qrda/person.rb
|
378
|
+
- lib/health-data-standards/models/ratio_result_value.rb
|
378
379
|
- lib/health-data-standards/models/record.rb
|
379
380
|
- lib/health-data-standards/models/reference.rb
|
380
381
|
- lib/health-data-standards/models/result_value.rb
|
@@ -964,7 +965,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
964
965
|
version: '0'
|
965
966
|
requirements: []
|
966
967
|
rubyforge_project:
|
967
|
-
rubygems_version: 2.
|
968
|
+
rubygems_version: 2.7.7
|
968
969
|
signing_key:
|
969
970
|
specification_version: 4
|
970
971
|
summary: A library for generating and consuming various healthcare related formats.
|