health-data-standards 3.6.1 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -2
- data/Rakefile +2 -1
- data/lib/health-data-standards.rb +22 -1
- data/lib/health-data-standards/export/cat_1.rb +25 -6
- data/lib/health-data-standards/export/cat_1_r2.rb +8 -2
- data/lib/health-data-standards/export/cat_3.rb +8 -7
- data/lib/health-data-standards/export/exceptions.rb +13 -0
- data/lib/health-data-standards/export/helper/cat1_view_helper.rb +17 -11
- data/lib/health-data-standards/export/helper/html_view_helper.rb +13 -7
- data/lib/health-data-standards/export/helper/scooped_view_helper.rb +68 -25
- data/lib/health-data-standards/export/html.rb +9 -4
- data/lib/health-data-standards/export/qrda/entry_template_resolver.rb +29 -11
- data/lib/health-data-standards/export/qrda/hqmf-qrda-oids.json +89 -5
- data/lib/health-data-standards/export/rendering_context.rb +2 -2
- data/lib/health-data-standards/export/template_helper.rb +7 -2
- data/lib/health-data-standards/export/view_helper.rb +107 -39
- data/lib/health-data-standards/import/bulk_record_importer.rb +8 -5
- data/lib/health-data-standards/import/bundle/importer.rb +21 -14
- data/lib/health-data-standards/import/c32/care_goal_importer.rb +1 -1
- data/lib/health-data-standards/import/c32/immunization_importer.rb +1 -1
- data/lib/health-data-standards/import/cat1/clinical_trial_participant_importer.rb +20 -0
- data/lib/health-data-standards/import/cat1/device_order_importer.rb +20 -0
- data/lib/health-data-standards/import/cat1/diagnosis_active_importer.rb +4 -9
- data/lib/health-data-standards/import/cat1/diagnosis_importer.rb +15 -0
- data/lib/health-data-standards/import/cat1/diagnosis_inactive_importer.rb +1 -1
- data/lib/health-data-standards/import/cat1/diagnostic_study_order_importer.rb +6 -0
- data/lib/health-data-standards/import/cat1/encounter_order_act_importer.rb +19 -0
- data/lib/health-data-standards/import/cat1/encounter_performed_act_importer.rb +19 -0
- data/lib/health-data-standards/import/cat1/encounter_performed_importer.rb +16 -0
- data/lib/health-data-standards/import/cat1/immunization_administered_importer.rb +14 -0
- data/lib/health-data-standards/import/cat1/medication_dispensed_act_importer.rb +18 -0
- data/lib/health-data-standards/import/cat1/patient_importer.rb +44 -17
- data/lib/health-data-standards/import/cat1/procedure_order_importer.rb +4 -4
- data/lib/health-data-standards/import/cat1/procedure_performed_importer.rb +1 -0
- data/lib/health-data-standards/import/cat1/transfer_from_act_importer.rb +18 -0
- data/lib/health-data-standards/import/cat1/transfer_from_importer.rb +24 -0
- data/lib/health-data-standards/import/cat1/transfer_to_act_importer.rb +18 -0
- data/lib/health-data-standards/import/cat1/transfer_to_importer.rb +23 -0
- data/lib/health-data-standards/import/cda/allergy_importer.rb +1 -1
- data/lib/health-data-standards/import/cda/communication_importer.rb +55 -0
- data/lib/health-data-standards/import/cda/condition_importer.rb +17 -1
- data/lib/health-data-standards/import/cda/encounter_importer.rb +23 -21
- data/lib/health-data-standards/import/cda/medical_equipment_importer.rb +1 -0
- data/lib/health-data-standards/import/cda/medication_importer.rb +14 -4
- data/lib/health-data-standards/import/cda/procedure_importer.rb +4 -4
- data/lib/health-data-standards/import/cda/result_importer.rb +1 -1
- data/lib/health-data-standards/import/cda/section_importer.rb +59 -18
- data/lib/health-data-standards/models/assessment.rb +3 -0
- data/lib/health-data-standards/models/care_experience.rb +2 -0
- data/lib/health-data-standards/models/care_goal.rb +4 -0
- data/lib/health-data-standards/models/communication.rb +3 -0
- data/lib/health-data-standards/models/condition.rb +12 -9
- data/lib/health-data-standards/models/cqm/bundle.rb +2 -1
- data/lib/health-data-standards/models/cqm/measure.rb +2 -1
- data/lib/health-data-standards/models/cqm/patient_cache.rb +7 -3
- data/lib/health-data-standards/models/cqm/query_cache.rb +2 -0
- data/lib/health-data-standards/models/encounter.rb +14 -1
- data/lib/health-data-standards/models/encounter_principal_diagnosis.rb +36 -0
- data/lib/health-data-standards/models/entry.rb +5 -1
- data/lib/health-data-standards/models/family_history.rb +4 -0
- data/lib/health-data-standards/models/immunization.rb +1 -0
- data/lib/health-data-standards/models/lab_result.rb +10 -1
- data/lib/health-data-standards/models/medical_equipment.rb +2 -1
- data/lib/health-data-standards/models/medication.rb +19 -2
- data/lib/health-data-standards/models/patient_preference.rb +5 -0
- data/lib/health-data-standards/models/procedure.rb +16 -3
- data/lib/health-data-standards/models/provider.rb +17 -1
- data/lib/health-data-standards/models/provider_preference.rb +5 -0
- data/lib/health-data-standards/models/record.rb +8 -9
- data/lib/health-data-standards/models/reference.rb +1 -1
- data/lib/health-data-standards/models/svs/value_set.rb +28 -10
- data/lib/health-data-standards/models/transfer.rb +6 -1
- data/lib/health-data-standards/tasks/bundle.rake +5 -3
- data/lib/health-data-standards/util/hqmf_template_helper.rb +20 -14
- data/lib/health-data-standards/util/hqmfr2_template_oid_map.json +382 -0
- data/lib/health-data-standards/util/nlm_helper.rb +14 -0
- data/lib/health-data-standards/util/vs_api.rb +72 -54
- data/lib/health-data-standards/validate/measure_validator.rb +8 -3
- data/lib/health-data-standards/validate/performance_rate_validator.rb +1 -1
- data/lib/health-data-standards/validate/qrda_qdm_template_validator.rb +253 -0
- data/lib/health-data-standards/validate/reported_result_extractor.rb +5 -1
- data/lib/health-data-standards/validate/schematron_validator.rb +6 -0
- data/lib/health-data-standards/validate/validators.rb +49 -1
- data/lib/hqmf-generator/document.xml.erb +6 -5
- data/lib/hqmf-generator/field.xml.erb +1 -0
- data/lib/hqmf-generator/hqmf-generator.rb +85 -41
- data/lib/hqmf-generator/subset.xml.erb +15 -0
- data/lib/hqmf-generator/temporal_relationship.xml.erb +8 -3
- data/lib/hqmf-generator/temporal_relationship_attribute.xml.erb +10 -0
- data/lib/hqmf-generator/value.xml.erb +2 -2
- data/lib/hqmf-model/data_criteria.json +88 -17
- data/lib/hqmf-model/data_criteria.rb +144 -72
- data/lib/hqmf-model/population_criteria.rb +20 -18
- data/lib/hqmf-model/precondition.rb +6 -3
- data/lib/hqmf-model/types.rb +1 -1
- data/lib/hqmf-parser.rb +9 -0
- data/lib/hqmf-parser/1.0/utilities.rb +1 -1
- data/lib/hqmf-parser/2.0/data_criteria.rb +293 -319
- data/lib/hqmf-parser/2.0/data_criteria_helpers/dc_base_extract.rb +80 -0
- data/lib/hqmf-parser/2.0/data_criteria_helpers/dc_definition_from_template_or_type_extract.rb +201 -0
- data/lib/hqmf-parser/2.0/data_criteria_helpers/dc_post_processing.rb +85 -0
- data/lib/hqmf-parser/2.0/data_criteria_helpers/dc_specific_occurrences_and_source_data_criteria_extract.rb +117 -0
- data/lib/hqmf-parser/2.0/document.rb +246 -222
- data/lib/hqmf-parser/2.0/document_helpers/doc_population_helper.rb +175 -0
- data/lib/hqmf-parser/2.0/document_helpers/doc_utilities.rb +131 -0
- data/lib/hqmf-parser/2.0/field_value_helper.rb +251 -0
- data/lib/hqmf-parser/2.0/population_criteria.rb +101 -32
- data/lib/hqmf-parser/2.0/precondition.rb +61 -35
- data/lib/hqmf-parser/2.0/source_data_criteria_helper.rb +112 -0
- data/lib/hqmf-parser/2.0/types.rb +253 -73
- data/lib/hqmf-parser/2.0/utilities.rb +27 -12
- data/lib/hqmf-parser/2.0/value_set_helper.rb +101 -0
- data/lib/hqmf-parser/converter/pass1/data_criteria_converter.rb +6 -1
- data/lib/hqmf-parser/converter/pass1/population_criteria_converter.rb +34 -30
- data/lib/hqmf-parser/parser.rb +5 -5
- data/resources/schematron/qrda/cat_1/{CDAR2_QRDA_I_R1_D3_2015MAY_Schematron.sch → HL7_CDAR2_QRDA_Category_I_2_12_16.sch} +4692 -4675
- data/resources/schematron/qrda/cat_1_r3_1/HL7 QRDA Category I STU 3.1.sch +3573 -0
- data/resources/schematron/qrda/cat_1_r3_1/HL7 QRDA Category III STU 1.1.sch +464 -0
- data/resources/schematron/qrda/cat_1_r3_1/QRDA Category I STU Release 3.1.sch +5394 -0
- data/resources/schematron/qrda/cat_1_r3_1/voc.xml +1229 -0
- data/resources/schematron/qrda/cat_1_r4/HL7 QRDA Category I STU 4.sch +3526 -0
- data/resources/schematron/qrda/cat_1_r4/voc.xml +1186 -0
- data/resources/schematron/qrda/cat_3_r1_1/HL7 QRDA Category III STU 1.1.sch +528 -0
- data/resources/schematron/qrda/cat_3_r1_1/voc.xml +8 -0
- data/resources/schematron/qrda/cat_3_r2/HL7 QRDA Category III STU 2.sch +677 -0
- data/resources/schematron/qrda/cat_3_r2/voc.xml +1186 -0
- data/resources/schematron/qrda/cat_3_r2_1/HL7 QRDA Category III STU 2.1.sch +678 -0
- data/resources/schematron/qrda/cat_3_r2_1/voc.xml +1186 -0
- data/templates/c32/_medical_equipment.c32.erb +1 -1
- data/templates/c32/_vital_signs.c32.erb +1 -1
- data/templates/cat1/{_2.16.840.1.113883.10.20.22.4.85.cat1.erb → r2/_2.16.840.1.113883.10.20.22.4.85.cat1.erb} +1 -1
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.1.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.1.cat1.erb} +3 -3
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.101.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.101.cat1.erb} +1 -1
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.103.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.103.cat1.erb} +9 -5
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.105.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.105.cat1.erb} +18 -10
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.11.cat1.erb +88 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.12.cat1.erb +50 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.13.cat1.erb +54 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.135.cat1.erb +70 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.136.cat1.erb +52 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.14.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.14.cat1.erb} +24 -6
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.140.cat1.erb +39 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.17.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.18.cat1.erb +25 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.2.cat1.erb +29 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.20.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.20.cat1.erb} +4 -4
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.22.cat1.erb +22 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.23.cat1.erb +114 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.26.cat1.erb +20 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.28.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.28.cat1.erb} +2 -2
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.3.cat1.erb +25 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.31.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.32.cat1.erb +20 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.34.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.34.cat1.erb} +6 -6
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.37.cat1.erb +22 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.38.cat1.erb +20 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.4.cat1.erb +29 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.40.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.40.cat1.erb} +3 -3
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.41.cat1.erb +46 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.42.cat1.erb +38 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.43.cat1.erb +24 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.44.cat1.erb +25 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.45.cat1.erb +26 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.46.cat1.erb +30 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +47 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.51.cat1.erb +14 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.54.cat1.erb +32 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.55.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.55.cat1.erb} +0 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.57.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.59.cat1.erb +22 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.62.cat1.erb +36 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.63.cat1.erb +21 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.64.cat1.erb +52 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.66.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.66.cat1.erb} +6 -6
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.69.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.7.cat1.erb +33 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.76.cat1.erb → r2/_2.16.840.1.113883.10.20.24.3.76.cat1.erb} +5 -3
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.81.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.82.cat1.erb +23 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.24.3.9.cat1.erb +64 -0
- data/templates/cat1/r2/_2.16.840.1.113883.10.20.28.3.6.cat1.erb +17 -0
- data/templates/cat1/{_address.cat1.erb → r2/_address.cat1.erb} +0 -0
- data/templates/cat1/{_author.cat1.erb → r2/_author.cat1.erb} +0 -0
- data/templates/cat1/r2/_fulfills.cat1.erb +14 -0
- data/templates/cat1/{_id.cat1.erb → r2/_id.cat1.erb} +0 -0
- data/templates/cat1/{_measures.cat1.erb → r2/_measures.cat1.erb} +1 -1
- data/templates/cat1/{_medication_details.cat1.erb → r2/_medication_details.cat1.erb} +3 -2
- data/templates/cat1/r2/_medication_dispense.cat1.erb +22 -0
- data/templates/cat1/{_ordinality.cat1.erb → r2/_ordinality.cat1.erb} +0 -0
- data/templates/cat1/{_organization.cat1.erb → r2/_organization.cat1.erb} +0 -0
- data/templates/cat1/{_patient_data.cat1.erb → r2/_patient_data.cat1.erb} +4 -1
- data/templates/cat1/r2/_patient_data_r3_1.cat1.erb +17 -0
- data/templates/cat1/r2/_providers.cat1.erb +76 -0
- data/templates/cat1/r2/_reason.cat1.erb +45 -0
- data/templates/cat1/{_record_target.cat1.erb → r2/_record_target.cat1.erb} +3 -0
- data/templates/cat1/r2/_reporting_parameters.cat1.erb +31 -0
- data/templates/cat1/{_result_value.cat1.erb → r2/_result_value.cat1.erb} +1 -1
- data/templates/cat1/{_telecom.cat1.erb → r2/_telecom.cat1.erb} +0 -0
- data/templates/cat1/{show.cat1.erb → r2/show.cat1.erb} +52 -5
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.1.cat1.erb +14 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.103.cat1.erb +17 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.105.cat1.erb +68 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.11.cat1.erb +58 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.12.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.12.cat1.erb} +4 -5
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.13.cat1.erb +39 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.14.cat1.erb +39 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.17.cat1.erb +23 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.18.cat1.erb +25 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.2.cat1.erb +29 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.22.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.22.cat1.erb} +6 -5
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.23.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.23.cat1.erb} +26 -30
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.26.cat1.erb +20 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.3.cat1.erb +25 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.31.cat1.erb +23 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.32.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.32.cat1.erb} +4 -4
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.37.cat1.erb +22 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.38.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.38.cat1.erb} +3 -3
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.4.cat1.erb +29 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.41.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.41.cat1.erb} +8 -10
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.42.cat1.erb +38 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.43.cat1.erb +24 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.44.cat1.erb +25 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.45.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.45.cat1.erb} +5 -5
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.46.cat1.erb +30 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +47 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.51.cat1.erb +14 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.54.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.54.cat1.erb} +4 -4
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.55.cat1.erb +18 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.57.cat1.erb +23 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.59.cat1.erb +22 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.62.cat1.erb +36 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.63.cat1.erb → r3/_2.16.840.1.113883.10.20.24.3.63.cat1.erb} +6 -8
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.64.cat1.erb +51 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.69.cat1.erb +23 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.7.cat1.erb +33 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.76.cat1.erb +19 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.81.cat1.erb +24 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.82.cat1.erb +24 -0
- data/templates/cat1/r3/_2.16.840.1.113883.10.20.24.3.9.cat1.erb +57 -0
- data/templates/cat1/r3/_address.cat1.erb +9 -0
- data/templates/{cat3/_author.cat3.erb → cat1/r3/_author.cat1.erb} +0 -0
- data/templates/cat1/{_fulfills.cat1.erb → r3/_fulfills.cat1.erb} +0 -0
- data/templates/{cat3/_id.cat3.erb → cat1/r3/_id.cat1.erb} +0 -0
- data/templates/cat1/r3/_measures.cat1.erb +93 -0
- data/templates/cat1/r3/_medication_details.cat1.erb +16 -0
- data/templates/cat1/{_medication_dispense.cat1.erb → r3/_medication_dispense.cat1.erb} +3 -3
- data/templates/cat1/r3/_ordinality.cat1.erb +10 -0
- data/templates/cat1/r3/_organization.cat1.erb +9 -0
- data/templates/cat1/r3/_patient_data.cat1.erb +17 -0
- data/templates/cat1/r3/_providers.cat1.erb +76 -0
- data/templates/cat1/r3/_reason.cat1.erb +34 -0
- data/templates/cat1/r3/_record_target.cat1.erb +56 -0
- data/templates/cat1/r3/_reporting_parameters.cat1.erb +31 -0
- data/templates/cat1/r3/_result_value.cat1.erb +28 -0
- data/templates/{cat3/_telecom.cat3.erb → cat1/r3/_telecom.cat1.erb} +0 -0
- data/templates/cat1/r3/show.cat1.erb +183 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.1.cat1.erb +14 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.103.cat1.erb +17 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.105.cat1.erb +68 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.12.cat1.erb +53 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.135.cat1.erb +71 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.136.cat1.erb +52 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.140.cat1.erb +39 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.17.cat1.erb +23 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.18.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.18.cat1.erb} +3 -3
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.2.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.2.cat1.erb} +2 -2
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.22.cat1.erb +30 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.23.cat1.erb +116 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.26.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.26.cat1.erb} +4 -2
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.3.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.3.cat1.erb} +2 -2
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.31.cat1.erb +24 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.32.cat1.erb +21 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.37.cat1.erb +22 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.38.cat1.erb +21 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.4.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.4.cat1.erb} +2 -2
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.41.cat1.erb +45 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.42.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.42.cat1.erb} +4 -4
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.43.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.43.cat1.erb} +3 -3
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.44.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.44.cat1.erb} +3 -3
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.45.cat1.erb +35 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.46.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.46.cat1.erb} +4 -4
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +47 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.51.cat1.erb +14 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.54.cat1.erb +32 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.55.cat1.erb +18 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.57.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.57.cat1.erb} +3 -3
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.59.cat1.erb +22 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.62.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.62.cat1.erb} +5 -5
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.63.cat1.erb +21 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.64.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.64.cat1.erb} +7 -7
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.69.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.69.cat1.erb} +2 -2
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.7.cat1.erb → r3_1/_2.16.840.1.113883.10.20.24.3.7.cat1.erb} +12 -9
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.81.cat1.erb +33 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.82.cat1.erb +33 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.24.3.9.cat1.erb +41 -0
- data/templates/cat1/r3_1/_2.16.840.1.113883.10.20.28.3.6.cat1.erb +17 -0
- data/templates/cat1/r3_1/_address.cat1.erb +9 -0
- data/templates/cat1/r3_1/_author.cat1.erb +28 -0
- data/templates/cat1/r3_1/_fulfills.cat1.erb +14 -0
- data/templates/cat1/r3_1/_id.cat1.erb +1 -0
- data/templates/cat1/r3_1/_measures.cat1.erb +93 -0
- data/templates/cat1/r3_1/_medication_details.cat1.erb +16 -0
- data/templates/cat1/r3_1/_medication_dispense.cat1.erb +22 -0
- data/templates/cat1/r3_1/_ordinality.cat1.erb +10 -0
- data/templates/cat1/r3_1/_organization.cat1.erb +9 -0
- data/templates/cat1/r3_1/_patient_data.cat1.erb +17 -0
- data/templates/cat1/r3_1/_providers.cat1.erb +76 -0
- data/templates/cat1/r3_1/_reason.cat1.erb +34 -0
- data/templates/cat1/r3_1/_record_target.cat1.erb +56 -0
- data/templates/cat1/r3_1/_reporting_parameters.cat1.erb +31 -0
- data/templates/cat1/r3_1/_result_value.cat1.erb +28 -0
- data/templates/cat1/r3_1/_telecom.cat1.erb +1 -0
- data/templates/cat1/r3_1/show.cat1.erb +183 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.1.cat1.erb +14 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.103.cat1.erb +17 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.105.cat1.erb +68 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.12.cat1.erb +53 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.135.cat1.erb +75 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.136.cat1.erb +52 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.140.cat1.erb +39 -0
- data/templates/cat1/{_2.16.840.1.113883.10.20.24.3.59.cat1.erb → r4/_2.16.840.1.113883.10.20.24.3.144.cat1.erb} +6 -6
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.145.cat1.erb +24 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.17.cat1.erb +23 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.18.cat1.erb +25 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.2.cat1.erb +29 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.22.cat1.erb +30 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.23.cat1.erb +116 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.3.cat1.erb +25 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.31.cat1.erb +24 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.32.cat1.erb +21 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.37.cat1.erb +22 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.38.cat1.erb +21 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.4.cat1.erb +29 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.41.cat1.erb +45 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.42.cat1.erb +38 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.43.cat1.erb +24 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.44.cat1.erb +25 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.45.cat1.erb +35 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.46.cat1.erb +30 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +47 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.51.cat1.erb +14 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.54.cat1.erb +32 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.55.cat1.erb +18 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.57.cat1.erb +23 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.59.cat1.erb +22 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.62.cat1.erb +36 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.63.cat1.erb +21 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.64.cat1.erb +52 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.7.cat1.erb +33 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.81.cat1.erb +33 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.82.cat1.erb +33 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.24.3.9.cat1.erb +41 -0
- data/templates/cat1/r4/_2.16.840.1.113883.10.20.28.3.6.cat1.erb +17 -0
- data/templates/cat1/r4/_address.cat1.erb +7 -0
- data/templates/cat1/r4/_author.cat1.erb +28 -0
- data/templates/cat1/r4/_fulfills.cat1.erb +14 -0
- data/templates/cat1/r4/_id.cat1.erb +1 -0
- data/templates/cat1/r4/_measures.cat1.erb +93 -0
- data/templates/cat1/r4/_medication_details.cat1.erb +16 -0
- data/templates/cat1/r4/_medication_dispense.cat1.erb +22 -0
- data/templates/cat1/r4/_ordinality.cat1.erb +10 -0
- data/templates/cat1/r4/_organization.cat1.erb +9 -0
- data/templates/cat1/r4/_patient_data.cat1.erb +17 -0
- data/templates/cat1/r4/_providers.cat1.erb +76 -0
- data/templates/cat1/r4/_reason.cat1.erb +34 -0
- data/templates/cat1/r4/_record_target.cat1.erb +54 -0
- data/templates/cat1/r4/_reporting_parameters.cat1.erb +31 -0
- data/templates/cat1/r4/_result_value.cat1.erb +28 -0
- data/templates/cat1/r4/_telecom.cat1.erb +1 -0
- data/templates/cat1/r4/show.cat1.erb +192 -0
- data/templates/cat3/{_address.cat3.erb → r1/_address.cat3.erb} +0 -0
- data/templates/cat3/r1/_author.cat3.erb +28 -0
- data/templates/cat3/{_continuous_variable_value.cat3.erb → r1/_continuous_variable_value.cat3.erb} +0 -0
- data/templates/cat3/r1/_id.cat3.erb +1 -0
- data/templates/cat3/{_measure_data.cat3.erb → r1/_measure_data.cat3.erb} +7 -6
- data/templates/cat3/{_organization.cat3.erb → r1/_organization.cat3.erb} +0 -0
- data/templates/cat3/{_performance_rate.cat3.erb → r1/_performance_rate.cat3.erb} +1 -3
- data/templates/cat3/{_providers.cat3.erb → r1/_providers.cat3.erb} +0 -0
- data/templates/cat3/{_reporting_parameters.cat3.erb → r1/_reporting_parameters.cat3.erb} +0 -0
- data/templates/cat3/{_supplemental_data.cat3.erb → r1/_supplemental_data.cat3.erb} +2 -0
- data/templates/cat3/r1/_telecom.cat3.erb +1 -0
- data/templates/cat3/{show.cat3.erb → r1/show.cat3.erb} +5 -5
- data/templates/cat3/r1_1/_address.cat3.erb +9 -0
- data/templates/cat3/r1_1/_author.cat3.erb +28 -0
- data/templates/cat3/r1_1/_continuous_variable_value.cat3.erb +20 -0
- data/templates/cat3/r1_1/_id.cat3.erb +1 -0
- data/templates/cat3/r1_1/_measure_data.cat3.erb +136 -0
- data/templates/cat3/r1_1/_organization.cat3.erb +6 -0
- data/templates/cat3/r1_1/_performance_rate.cat3.erb +18 -0
- data/templates/{cat1/_providers.cat1.erb → cat3/r1_1/_providers.cat3.erb} +18 -18
- data/templates/{cat1/_reporting_parameters.cat1.erb → cat3/r1_1/_reporting_parameters.cat3.erb} +5 -1
- data/templates/cat3/r1_1/_supplemental_data.cat3.erb +38 -0
- data/templates/cat3/r1_1/_telecom.cat3.erb +1 -0
- data/templates/cat3/r1_1/show.cat3.erb +150 -0
- data/templates/cat3/r2/_address.cat3.erb +9 -0
- data/templates/cat3/r2/_author.cat3.erb +28 -0
- data/templates/cat3/r2/_continuous_variable_value.cat3.erb +20 -0
- data/templates/cat3/r2/_id.cat3.erb +1 -0
- data/templates/cat3/r2/_measure_data.cat3.erb +136 -0
- data/templates/cat3/r2/_organization.cat3.erb +6 -0
- data/templates/cat3/r2/_performance_rate.cat3.erb +19 -0
- data/templates/cat3/r2/_providers.cat3.erb +57 -0
- data/templates/cat3/r2/_reporting_parameters.cat3.erb +29 -0
- data/templates/cat3/r2/_supplemental_data.cat3.erb +38 -0
- data/templates/cat3/r2/_telecom.cat3.erb +1 -0
- data/templates/cat3/r2/show.cat3.erb +150 -0
- data/templates/cat3/r2_1/_address.cat3.erb +9 -0
- data/templates/cat3/r2_1/_author.cat3.erb +28 -0
- data/templates/cat3/r2_1/_continuous_variable_value.cat3.erb +20 -0
- data/templates/cat3/r2_1/_id.cat3.erb +1 -0
- data/templates/cat3/r2_1/_measure_data.cat3.erb +136 -0
- data/templates/cat3/r2_1/_organization.cat3.erb +6 -0
- data/templates/cat3/r2_1/_performance_rate.cat3.erb +19 -0
- data/templates/cat3/r2_1/_providers.cat3.erb +57 -0
- data/templates/cat3/r2_1/_reporting_parameters.cat3.erb +20 -0
- data/templates/cat3/r2_1/_reporting_parameters_act.cat3.erb +10 -0
- data/templates/cat3/r2_1/_supplemental_data.cat3.erb +38 -0
- data/templates/cat3/r2_1/_telecom.cat3.erb +1 -0
- data/templates/cat3/r2_1/show.cat3.erb +153 -0
- data/templates/ccda/_medical_equipment.ccda.erb +1 -1
- data/templates/ccda/_social_history.ccda.erb +2 -2
- data/templates/ccda/_vital_signs.ccda.erb +1 -1
- data/templates/html/_entries_by_section.html.erb +1 -1
- metadata +425 -153
- data/lib/health-data-standards/import/cat1/procedure_importer.rb +0 -42
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.11.cat1.erb +0 -55
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.13.cat1.erb +0 -38
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.17.cat1.erb +0 -22
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.31.cat1.erb +0 -22
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.37.cat1.erb +0 -20
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.47.cat1.erb +0 -27
- data/templates/cat1/_2.16.840.1.113883.10.20.24.3.51.cat1.erb +0 -13
- data/templates/cat1/_reason.cat1.erb +0 -23
@@ -1,5 +1,19 @@
|
|
1
1
|
<excerpt typeCode="XCRPT">
|
2
|
+
|
3
|
+
<!-- Subset operator for: <%= subset.type %> -->
|
4
|
+
<% if HQMF2::SubsetOperator::ORDER_SUBSETS.include? subset.type %>
|
5
|
+
<sequenceNumber value="<%= (HQMF2::SubsetOperator::ORDER_SUBSETS.index subset.type) + 1%>"/>
|
6
|
+
<% elsif HQMF2::SubsetOperator::LAST_SUBSETS.include? subset.type %>
|
7
|
+
<qdm:subsetCode code="QDM_LAST"/>
|
8
|
+
<% elsif subset.type == 'COUNT' %>
|
9
|
+
<subsetCode code="SUM"/>
|
10
|
+
<qdm:subsetCode code="QDM_SUM"/>
|
11
|
+
<% else %>
|
12
|
+
<% if HQMF2::SubsetOperator::TIME_SUBSETS.include? subset.type %>
|
13
|
+
<!-- NOTE: DATEDIFF and TIMEDIFF are not valid in population criteria... measure requires rewrite -->
|
14
|
+
<%end%>
|
2
15
|
<subsetCode code="<%= subset.type %>"/>
|
16
|
+
<% end %>
|
3
17
|
<<%= element_name_prefix(criteria) %>Criteria moodCode="EVN" classCode="<%= reference_type_name(criteria.id) %>">
|
4
18
|
<id root="2.16.840.1.113883.3.100.1" extension="<%= criteria.id %>"/>
|
5
19
|
<%- if subset && subset.value -%>
|
@@ -18,4 +32,5 @@
|
|
18
32
|
<%- end -%>
|
19
33
|
<%- end -%>
|
20
34
|
</<%= element_name_prefix(criteria) %>Criteria>
|
35
|
+
|
21
36
|
</excerpt>
|
@@ -1,6 +1,11 @@
|
|
1
1
|
<temporallyRelatedInformation typeCode="<%= relationship.type %>">
|
2
|
-
|
3
|
-
<%=
|
4
|
-
|
2
|
+
|
3
|
+
<qdm:temporalInformation precisionUnit="<%=percision_unit_for_range(relationship)%>">
|
4
|
+
<%= xml_for_temporal_relationship_attribute(criteria, relationship) %>
|
5
|
+
<%- if relationship.range -%>
|
6
|
+
<%= xml_for_value(relationship.range, 'qdm:delta', false) %>
|
7
|
+
<%- end -%>
|
8
|
+
</qdm:temporalInformation>
|
9
|
+
|
5
10
|
<%= xml_for_reference(relationship.reference) %>
|
6
11
|
</temporallyRelatedInformation>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% data[:sourceKeys].each do |key| %>
|
2
|
+
<qdm:sourceAttribute name="<%= key.titleize%>" bound="effectiveTime.<%=temporal_relationship_attribute_effective_time(key)%>">
|
3
|
+
<qdm:id root="<%= "#{criteria.id}_#{key.parameterize.underscore}" %>"/>
|
4
|
+
</qdm:sourceAttribute>
|
5
|
+
<% end %>
|
6
|
+
<% data[:targetKeys].each do |key| %>
|
7
|
+
<qdm:targetAttribute name="<%= key.titleize%>" bound="effectiveTime.<%=temporal_relationship_attribute_effective_time(key)%>">
|
8
|
+
<qdm:id root="<%= "#{targetCriteria.id}_#{key.parameterize.underscore}" %>"/>
|
9
|
+
</qdm:targetAttribute>
|
10
|
+
<% end %>
|
@@ -7,8 +7,8 @@
|
|
7
7
|
<%= xml_for_value(value.high, 'high') if value.high -%>
|
8
8
|
</uncertainRange>
|
9
9
|
<%- else -%>
|
10
|
-
|
11
|
-
|
10
|
+
<%- if value.low -%><%= xml_for_value(value.low, 'low', false) -%><%- else -%><low nullFlavor="NINF"/><%- end -%>
|
11
|
+
<%- if value.high -%><%= xml_for_value(value.high, 'high', false) -%><%- else -%><high nullFlavor="PINF"/><%- end -%>
|
12
12
|
<%- end -%>
|
13
13
|
</<%= name %>>
|
14
14
|
<%- elsif value.class==HQMF::Coded -%>
|
@@ -112,14 +112,13 @@
|
|
112
112
|
"property":"languages",
|
113
113
|
"not_supported":false},
|
114
114
|
"patient_characteristic_clinical_trial_participant":{
|
115
|
-
"title":"patient characteristic
|
115
|
+
"title":"patient characteristic",
|
116
116
|
"category":"characteristic",
|
117
|
-
"definition":"
|
117
|
+
"definition":"patient_characteristic",
|
118
118
|
"status":"",
|
119
|
-
"sub_category":"
|
119
|
+
"sub_category":"",
|
120
120
|
"hard_status":false,
|
121
|
-
"patient_api_function":"",
|
122
|
-
"property":"clinicalTrialParticipant",
|
121
|
+
"patient_api_function":"allProblems",
|
123
122
|
"not_supported":false},
|
124
123
|
"patient_characteristic_gender":{
|
125
124
|
"title":"patient characteristic, gender",
|
@@ -333,6 +332,15 @@
|
|
333
332
|
"hard_status":false,
|
334
333
|
"patient_api_function":"allProblems",
|
335
334
|
"not_supported":true},
|
335
|
+
"family_history":{
|
336
|
+
"title":"family history",
|
337
|
+
"category":"family_history",
|
338
|
+
"definition":"family_history",
|
339
|
+
"status":"",
|
340
|
+
"sub_category":"",
|
341
|
+
"hard_status":true,
|
342
|
+
"patient_api_function":"family_history",
|
343
|
+
"not_supported":false},
|
336
344
|
"diagnostic_study":{
|
337
345
|
"title":"diagnostic study",
|
338
346
|
"category":"diagnostic_studies",
|
@@ -387,6 +395,15 @@
|
|
387
395
|
"hard_status":true,
|
388
396
|
"patient_api_function":"allProcedures",
|
389
397
|
"not_supported":false},
|
398
|
+
"diagnostic_study_recommended":{
|
399
|
+
"title":"diagnostic study, recommended",
|
400
|
+
"category":"diagnostic_studies",
|
401
|
+
"definition":"diagnostic_study",
|
402
|
+
"status":"recommended",
|
403
|
+
"sub_category":"",
|
404
|
+
"hard_status":true,
|
405
|
+
"patient_api_function":"allProcedures",
|
406
|
+
"not_supported":false},
|
390
407
|
"medication":{
|
391
408
|
"title":"medication",
|
392
409
|
"category":"medications",
|
@@ -468,6 +485,42 @@
|
|
468
485
|
"hard_status":false,
|
469
486
|
"patient_api_function":"allergies",
|
470
487
|
"not_supported":false},
|
488
|
+
"immunization_administered":{
|
489
|
+
"title":"immunization, administered",
|
490
|
+
"category":"immunizations",
|
491
|
+
"definition":"immunization",
|
492
|
+
"status":"administered",
|
493
|
+
"sub_category":"",
|
494
|
+
"hard_status":true,
|
495
|
+
"patient_api_function":"allMedications",
|
496
|
+
"not_supported":false},
|
497
|
+
"immunization_ordered":{
|
498
|
+
"title":"immunization, order",
|
499
|
+
"category":"immunizations",
|
500
|
+
"definition":"immunization",
|
501
|
+
"status":"ordered",
|
502
|
+
"sub_category":"",
|
503
|
+
"hard_status":true,
|
504
|
+
"patient_api_function":"allMedications",
|
505
|
+
"not_supported":false},
|
506
|
+
"immunization_allergy":{
|
507
|
+
"title":"immunization, allergy",
|
508
|
+
"category":"immunizations",
|
509
|
+
"definition":"immunization_allergy",
|
510
|
+
"status":"",
|
511
|
+
"sub_category":"allergy",
|
512
|
+
"hard_status":false,
|
513
|
+
"patient_api_function":"allergies",
|
514
|
+
"not_supported":false},
|
515
|
+
"immunization_intolerance":{
|
516
|
+
"title":"immunization, intolerance",
|
517
|
+
"category":"immunizations",
|
518
|
+
"definition":"immunization_intolerance",
|
519
|
+
"status":"",
|
520
|
+
"sub_category":"intolerance",
|
521
|
+
"hard_status":false,
|
522
|
+
"patient_api_function":"allergies",
|
523
|
+
"not_supported":false},
|
471
524
|
"physical_exam":{
|
472
525
|
"title":"physical exam, finding",
|
473
526
|
"category":"physical_exams",
|
@@ -509,7 +562,7 @@
|
|
509
562
|
"category":"laboratory_tests",
|
510
563
|
"definition":"laboratory_test",
|
511
564
|
"status":"",
|
512
|
-
"sub_category":"",
|
565
|
+
"sub_category":"result",
|
513
566
|
"hard_status":false,
|
514
567
|
"patient_api_function":"laboratoryTests",
|
515
568
|
"not_supported":false},
|
@@ -574,7 +627,7 @@
|
|
574
627
|
"status":"",
|
575
628
|
"sub_category":"from_patient_to_provider",
|
576
629
|
"hard_status":false,
|
577
|
-
"patient_api_function":"
|
630
|
+
"patient_api_function":"communications",
|
578
631
|
"not_supported":false},
|
579
632
|
"communication_from_provider_to_patient":{
|
580
633
|
"title":"communication, from provider to patient",
|
@@ -583,7 +636,7 @@
|
|
583
636
|
"status":"",
|
584
637
|
"sub_category":"from_provider_to_patient",
|
585
638
|
"hard_status":false,
|
586
|
-
"patient_api_function":"
|
639
|
+
"patient_api_function":"communications",
|
587
640
|
"not_supported":false},
|
588
641
|
"communication_from_provider_to_provider":{
|
589
642
|
"title":"communication, from provider to provider",
|
@@ -592,7 +645,7 @@
|
|
592
645
|
"status":"",
|
593
646
|
"sub_category":"from_provider_to_provider",
|
594
647
|
"hard_status":false,
|
595
|
-
"patient_api_function":"
|
648
|
+
"patient_api_function":"communications",
|
596
649
|
"not_supported":false},
|
597
650
|
"device":{
|
598
651
|
"title":"device",
|
@@ -884,22 +937,22 @@
|
|
884
937
|
"not_supported":false},
|
885
938
|
"provider_care_experience":{
|
886
939
|
"title":"provider care experience",
|
887
|
-
"category":"
|
940
|
+
"category":"care_experiences",
|
888
941
|
"definition":"provider_care_experience",
|
889
942
|
"status":"",
|
890
|
-
"sub_category":"",
|
943
|
+
"sub_category":"provider",
|
891
944
|
"hard_status":false,
|
892
|
-
"patient_api_function":"",
|
893
|
-
"not_supported":
|
945
|
+
"patient_api_function":"careExperiences",
|
946
|
+
"not_supported":false},
|
894
947
|
"patient_care_experience":{
|
895
948
|
"title":"patient care experience",
|
896
|
-
"category":"
|
949
|
+
"category":"care_experiences",
|
897
950
|
"definition":"patient_care_experience",
|
898
951
|
"status":"",
|
899
|
-
"sub_category":"",
|
952
|
+
"sub_category":"patient",
|
900
953
|
"hard_status":false,
|
901
|
-
"patient_api_function":"",
|
902
|
-
"not_supported":
|
954
|
+
"patient_api_function":"careExperiences",
|
955
|
+
"not_supported":false},
|
903
956
|
"preference_provider":{
|
904
957
|
"title":"provider preference",
|
905
958
|
"category":"preferences",
|
@@ -953,5 +1006,23 @@
|
|
953
1006
|
"sub_category":"to",
|
954
1007
|
"hard_status":false,
|
955
1008
|
"patient_api_function":"encounters",
|
1009
|
+
"not_supported":false},
|
1010
|
+
"assessment_performed":{
|
1011
|
+
"title":"assessment performed",
|
1012
|
+
"category":"assessments",
|
1013
|
+
"definition":"assessment",
|
1014
|
+
"status":"performed",
|
1015
|
+
"sub_category":"",
|
1016
|
+
"hard_status":false,
|
1017
|
+
"patient_api_function":"assessments",
|
1018
|
+
"not_supported":false},
|
1019
|
+
"assessment_recommended":{
|
1020
|
+
"title":"assessment recommended",
|
1021
|
+
"category":"assessments",
|
1022
|
+
"definition":"assessment",
|
1023
|
+
"status":"recommended",
|
1024
|
+
"sub_category":"",
|
1025
|
+
"hard_status":false,
|
1026
|
+
"patient_api_function":"assessments",
|
956
1027
|
"not_supported":false}
|
957
1028
|
}
|
@@ -6,7 +6,7 @@ module HQMF
|
|
6
6
|
|
7
7
|
SOURCE_DATA_CRITERIA_TEMPLATE_ID = '2.16.840.1.113883.3.100.1.1'
|
8
8
|
SOURCE_DATA_CRITERIA_TEMPLATE_TITLE = 'Source data criteria'
|
9
|
-
|
9
|
+
|
10
10
|
XPRODUCT = 'XPRODUCT'
|
11
11
|
UNION = 'UNION'
|
12
12
|
INTERSECT = 'INTERSECT'
|
@@ -15,57 +15,125 @@ module HQMF
|
|
15
15
|
SATISFIES_ANY = 'satisfies_any'
|
16
16
|
VARIABLE = 'variable'
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
18
|
+
# An object containing metadata information for all attributes that are used within the measure data criteria being parsed.
|
19
|
+
#
|
20
|
+
# fields include:
|
21
|
+
# `title`: The QDM human readable title for the attribute.
|
22
|
+
# `coded_entry_method`: this appears to be a way that fields here are referenced within Bonnie.
|
23
|
+
# `field_type`: The type of whatever will be stored for this attribute. This will often be `:timestamp` or `:value`.
|
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
|
+
# `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
|
+
# `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},
|
28
|
+
'ACTIVE_DATETIME' => {title:'Active Date/Time', coded_entry_method: :active_date_time, field_type: :timestamp},
|
29
|
+
'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
|
+
'ANATOMICAL_APPROACH_SITE' => {title:'Anatomical Approach Site', coded_entry_method: :anatomical_approach, field_type: :value},
|
31
|
+
'ANATOMICAL_LOCATION_SITE' => {title:'Anatomical Location Site', coded_entry_method: :anatomical_location, field_type: :value},
|
32
|
+
'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},
|
33
|
+
'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},
|
34
|
+
'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},
|
35
|
+
# MISSING Date - The date that the patient passed away. - Patient Characteristic Expired
|
36
|
+
'DIAGNOSIS' => {title:'Diagnosis', coded_entry_method: :diagnosis, field_type: :value},
|
37
|
+
'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},
|
38
|
+
'DISCHARGE_STATUS' => {title:'Discharge Status', 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},
|
39
|
+
'DOSE' => {title:'Dose', 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},
|
40
|
+
'FACILITY_LOCATION' => {title:'Facility Location', coded_entry_method: :facility, code: 'SDLOC', field_type: :value},
|
41
|
+
'FACILITY_LOCATION_ARRIVAL_DATETIME' => {title:'Facility Location Arrival Date/Time', coded_entry_method: :facility_arrival, code: 'SDLOC_ARRIVAL', field_type: :nested_timestamp},
|
42
|
+
'FACILITY_LOCATION_DEPARTURE_DATETIME' => {title:'Facility Location Departure Date/Time', coded_entry_method: :facility_departure, code: 'SDLOC_DEPARTURE', field_type: :nested_timestamp},
|
43
|
+
'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},
|
44
|
+
'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},
|
45
|
+
'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},
|
46
|
+
'LATERALITY' => {title:'Laterality', coded_entry_method: :laterality, code: '272741003', code_system:'2.16.840.1.113883.6.96', template_id: '', field_type: :value},
|
47
|
+
'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},
|
48
|
+
'METHOD' => {title:'Method', coded_entry_method: :method, template_id: '', field_type: :value},
|
49
|
+
# Negation Rationale isn't encoded
|
50
|
+
'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},
|
51
|
+
'ONSET_DATETIME' => {title:'Onset Datetime', coded_entry_method: :start_date, field_type: :timestamp},
|
52
|
+
'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
|
53
|
+
'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},
|
54
|
+
'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},
|
55
|
+
'PRINCIPAL_DIAGNOSIS' => {title:'Principal Diagnosis', coded_entry_method: :principal_diagnosis, field_type: :value},
|
56
|
+
'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},
|
57
|
+
'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},
|
58
|
+
'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},
|
59
|
+
'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},
|
60
|
+
'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},
|
61
|
+
'RECORDED_DATETIME' => {title:'Recorded Datetime', coded_entry_method: :start_date, field_type: :timestamp},
|
62
|
+
'REFERENCE_RANGE_HIGH' => {title:'Reference Range High', coded_entry_method: :reference_range_high, field_type: :value},
|
63
|
+
'REFERENCE_RANGE_LOW' => {title:'Reference Range Low', coded_entry_method: :reference_range_low, field_type: :value},
|
64
|
+
'REFILLS' => {title:'Refills', coded_entry_method: :refills, field_type: :value},
|
65
|
+
'RELATED_TO' => {title:'Related To', coded_entry_method: :related_to, code: 'REL', codeSystem: '2.16.840.1.113883.1.11.11603', field_type: :value},
|
66
|
+
'RELATIONSHIP' => {title:'Relationship', coded_entry_method: :relationship_to_patient, field_type: :value},
|
67
|
+
'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},
|
68
|
+
# Result isn't encoded
|
69
|
+
'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},
|
70
|
+
'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},
|
71
|
+
'SIGNED_DATETIME' => {title:'Signed Date/Time', coded_entry_method: :signed_date_time, field_type: :timestamp},
|
72
|
+
'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},
|
73
|
+
# STATUS is referenced in the code as `qdm_status` because entry/Record already has a `status`/`status_code` field which has a different meaning
|
74
|
+
'STATUS' => {title: 'Status', coded_entry_method: :qdm_status, code: '33999-4', code_system:'2.16.840.1.113883.6.1', field_type: :value},
|
75
|
+
'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},
|
76
|
+
'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},
|
77
|
+
# MISSING Time - The time that the patient passed away
|
78
|
+
|
79
|
+
# Custom field values
|
80
|
+
'FLFS' => {title:'Fulfills', coded_entry_method: :fulfills, code: 'FLFS', field_type: :reference},
|
81
|
+
'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},
|
82
|
+
'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},
|
83
|
+
'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},
|
84
|
+
'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},
|
85
|
+
'TRANSFER_TO_DATETIME' => {title:'Transfer To Date/Time', coded_entry_method: :transfer_to_time, code: 'DST_TIME', template_id: '2.16.840.1.113883.10.20.24.3.82', field_type: :nested_timestamp}
|
86
|
+
}
|
87
|
+
|
88
|
+
# maps attribute codes to the attribute keys
|
89
|
+
VALUE_FIELDS = {'399423000' => 'ADMISSION_DATETIME',
|
90
|
+
'42752001' => 'CAUSE',
|
91
|
+
'261773006' => 'CUMULATIVE_MEDICATION_DURATION',
|
92
|
+
'363819003' => 'CUMULATIVE_MEDICATION_DURATION', # previous
|
49
93
|
'442864001' => 'DISCHARGE_DATETIME',
|
50
94
|
'309039003' => 'DISCHARGE_STATUS',
|
51
|
-
'399423000' => 'ADMISSION_DATETIME',
|
52
|
-
'183797002' => 'LENGTH_OF_STAY',
|
53
95
|
'398232005' => 'DOSE',
|
96
|
+
'SDLOC' => 'FACILITY_LOCATION',
|
97
|
+
'SDLOC_ARRIVAL' => 'FACILITY_LOCATION_ARRIVAL_DATETIME',
|
98
|
+
'SDLOC_DEPARTURE' => 'FACILITY_LOCATION_DEPARTURE_DATETIME',
|
99
|
+
'307430002' => 'FREQUENCY',
|
100
|
+
'260864003' => 'FREQUENCY', # previous
|
101
|
+
'395676008' => 'HEALTH_RECORD_FIELD',
|
102
|
+
'34896006' => 'INCISION_DATETIME',
|
103
|
+
'272741003' => 'LATERALITY',
|
104
|
+
'183797002' => 'LENGTH_OF_STAY',
|
105
|
+
'445518008' => 'ONSET_AGE',
|
106
|
+
'117363000' => 'ORDINALITY',
|
107
|
+
'PAT' => 'PATIENT_PREFERENCE',
|
108
|
+
'103323008' => 'PROVIDER_PREFERENCE',
|
109
|
+
'228815006' => 'RADIATION_DOSAGE',
|
110
|
+
'306751006' => 'RADIATION_DURATION',
|
111
|
+
'263851003' => 'REACTION',
|
112
|
+
'410666004' => 'REASON',
|
113
|
+
'REL' => 'RELATED_TO',
|
114
|
+
'118292001' => 'REMOVAL_DATETIME',
|
54
115
|
'263513008' => 'ROUTE',
|
116
|
+
'SEV' => 'SEVERITY',
|
55
117
|
'398201009' => 'START_DATETIME',
|
56
|
-
'
|
57
|
-
'91723000' => 'ANATOMICAL_STRUCTURE',
|
118
|
+
'33999-4' => 'STATUS',
|
58
119
|
'397898000' => 'STOP_DATETIME',
|
59
|
-
'
|
60
|
-
|
61
|
-
|
62
|
-
'
|
120
|
+
'385676005' => 'TARGET_OUTCOME',
|
121
|
+
|
122
|
+
# Custom field values
|
123
|
+
'91723000' => 'ANATOMICAL_STRUCTURE',
|
124
|
+
'FLFS' => 'FLFS',
|
125
|
+
'260753009' => 'SOURCE',
|
126
|
+
'TRANSFER_FROM' => 'TRANSFER_FROM',
|
127
|
+
'ORG_TIME' => 'TRANSFER_FROM_DATETIME',
|
128
|
+
'TRANSFER_TO' => 'TRANSFER_TO',
|
129
|
+
'DST_TIME' => 'TRANSFER_TO_DATETIME'
|
130
|
+
|
63
131
|
}
|
64
|
-
|
132
|
+
|
65
133
|
|
66
134
|
attr_reader :title, :description, :code_list_id, :derivation_operator , :specific_occurrence, :specific_occurrence_const, :source_data_criteria, :variable
|
67
135
|
attr_accessor :id, :value, :field_values, :children_criteria, :effective_time, :status, :temporal_references, :subset_operators, :definition, :inline_code_list, :negation_code_list_id, :negation, :display_name, :comments
|
68
|
-
|
136
|
+
|
69
137
|
# Create a new data criteria instance
|
70
138
|
# @param [String] id
|
71
139
|
# @param [String] title
|
@@ -88,7 +156,7 @@ module HQMF
|
|
88
156
|
# @param [String] specific_occurrence
|
89
157
|
# @param [String] specific_occurrence_const
|
90
158
|
# @param [String] source_data_criteria (id for the source data criteria, important for specific occurrences)
|
91
|
-
# @param [String] user comments for the criteria
|
159
|
+
# @param [String] user comments for the criteria
|
92
160
|
# @param [Boolean] variable defines if the element is a QDM variable
|
93
161
|
def initialize(id, title, display_name, description, code_list_id, children_criteria, derivation_operator, definition, status, value, field_values, effective_time, inline_code_list, negation, negation_code_list_id, temporal_references, subset_operators, specific_occurrence, specific_occurrence_const, source_data_criteria=nil, comments=nil, variable=false)
|
94
162
|
|
@@ -118,7 +186,7 @@ module HQMF
|
|
118
186
|
@comments = comments
|
119
187
|
@variable = variable
|
120
188
|
end
|
121
|
-
|
189
|
+
|
122
190
|
# create a new data criteria given a category and sub_category. A sub category can either be a status or a sub category
|
123
191
|
def self.create_from_category(id, title, description, code_list_id, category, sub_category=nil, negation=false, negation_code_list_id=nil)
|
124
192
|
settings = HQMF::DataCriteria.get_settings_for_definition(category, sub_category)
|
@@ -154,7 +222,7 @@ module HQMF
|
|
154
222
|
|
155
223
|
# Create a new data criteria instance from a JSON hash keyed with symbols
|
156
224
|
def self.from_json(id, json)
|
157
|
-
|
225
|
+
|
158
226
|
title = json["title"] if json["title"]
|
159
227
|
display_name = json["display_name"] if json["display_name"]
|
160
228
|
description = json["description"] if json["description"]
|
@@ -182,7 +250,7 @@ module HQMF
|
|
182
250
|
end
|
183
251
|
|
184
252
|
def is_same_type?(criteria)
|
185
|
-
return @definition == criteria.definition && @hard_status == criteria.hard_status &&
|
253
|
+
return @definition == criteria.definition && @hard_status == criteria.hard_status &&
|
186
254
|
@negation == criteria.negation && all_code_set_oids.sort == criteria.all_code_set_oids.sort
|
187
255
|
end
|
188
256
|
|
@@ -211,13 +279,13 @@ module HQMF
|
|
211
279
|
def has_subset(subset_operator)
|
212
280
|
@subset_operators.reduce(false) {|found, item| found ||= item == subset_operator }
|
213
281
|
end
|
214
|
-
|
282
|
+
|
215
283
|
def self.statuses_by_definition
|
216
284
|
settings_file = File.expand_path('../data_criteria.json', __FILE__)
|
217
285
|
settings_map = JSON.parse(File.read(settings_file))
|
218
286
|
all_defs = (settings_map.map {|key, value| {category: value['category'],definition:value['definition'],status:(value['status'].empty? ? nil : value['status']), sub_category: value['sub_category'],title:value['title']} unless value['not_supported']}).compact
|
219
287
|
by_categories = {}
|
220
|
-
all_defs.each do |definition|
|
288
|
+
all_defs.each do |definition|
|
221
289
|
by_categories[definition[:category]]||={}
|
222
290
|
status = definition[:status]
|
223
291
|
def_key = definition[:definition]
|
@@ -240,7 +308,7 @@ module HQMF
|
|
240
308
|
referenced = []
|
241
309
|
if (@children_criteria)
|
242
310
|
@children_criteria.each do |id|
|
243
|
-
dc = document.data_criteria(id)
|
311
|
+
dc = document.data_criteria(id)
|
244
312
|
referenced << id
|
245
313
|
referenced.concat(dc.referenced_data_criteria(document))
|
246
314
|
end
|
@@ -249,7 +317,7 @@ module HQMF
|
|
249
317
|
@temporal_references.each do |tr|
|
250
318
|
id = tr.reference.id
|
251
319
|
if (id != HQMF::Document::MEASURE_PERIOD_ID)
|
252
|
-
dc = document.data_criteria(id)
|
320
|
+
dc = document.data_criteria(id)
|
253
321
|
referenced << id
|
254
322
|
referenced.concat(dc.referenced_data_criteria(document))
|
255
323
|
end
|
@@ -257,25 +325,25 @@ module HQMF
|
|
257
325
|
end
|
258
326
|
referenced
|
259
327
|
end
|
260
|
-
|
328
|
+
|
261
329
|
def all_code_set_oids
|
262
|
-
|
330
|
+
|
263
331
|
# root oid
|
264
332
|
referenced_oids = [code_list_id]
|
265
|
-
|
333
|
+
|
266
334
|
# value oid
|
267
335
|
referenced_oids << value.code_list_id if value != nil and value.type == 'CD'
|
268
|
-
|
336
|
+
|
269
337
|
# negation oid
|
270
338
|
referenced_oids << negation_code_list_id if negation_code_list_id != nil
|
271
|
-
|
339
|
+
|
272
340
|
# field oids
|
273
341
|
if field_values != nil
|
274
342
|
referenced_oids.concat (field_values.map {|key,field| field.code_list_id if field != nil and field.type == 'CD'})
|
275
343
|
end
|
276
|
-
|
344
|
+
|
277
345
|
referenced_oids
|
278
|
-
|
346
|
+
|
279
347
|
end
|
280
348
|
|
281
349
|
def self.get_settings_map
|
@@ -289,22 +357,24 @@ module HQMF
|
|
289
357
|
settings_map = get_settings_map
|
290
358
|
key = definition + ((status.nil? || status.empty?) ? '' : "_#{status}")
|
291
359
|
settings = settings_map[key]
|
292
|
-
|
360
|
+
|
293
361
|
raise "data criteria is not supported #{key}" if settings.nil? || settings["not_supported"]
|
294
362
|
|
295
363
|
settings
|
296
364
|
end
|
297
365
|
|
298
|
-
def self.definition_for_template_id(template_id)
|
299
|
-
get_template_id_map()[template_id]
|
366
|
+
def self.definition_for_template_id(template_id, version='r1')
|
367
|
+
get_template_id_map(version)[template_id]
|
300
368
|
end
|
301
369
|
|
302
|
-
def self.template_id_for_definition(definition, status, negation)
|
303
|
-
|
370
|
+
def self.template_id_for_definition(definition, status, negation, version="r1")
|
371
|
+
# in r2 negation uses the same template as a positive assertion
|
372
|
+
negation = false if version == "r2"
|
373
|
+
get_template_id_map(version).key({'definition' => definition, 'status' => status || '', 'negation' => negation})
|
304
374
|
end
|
305
375
|
|
306
|
-
def self.title_for_template_id(template_id)
|
307
|
-
value = get_template_id_map()[template_id]
|
376
|
+
def self.title_for_template_id(template_id, version='r1')
|
377
|
+
value = get_template_id_map(version)[template_id]
|
308
378
|
if value
|
309
379
|
settings = self.get_settings_for_definition(value['definition'], value['status'])
|
310
380
|
if settings
|
@@ -317,15 +387,14 @@ module HQMF
|
|
317
387
|
end
|
318
388
|
end
|
319
389
|
|
320
|
-
def self.get_template_id_map
|
321
|
-
|
322
|
-
@@template_id_map
|
390
|
+
def self.get_template_id_map(version="r1")
|
391
|
+
read_template_id_map(version)
|
323
392
|
end
|
324
|
-
|
393
|
+
|
325
394
|
private
|
326
|
-
|
327
|
-
def self.read_template_id_map
|
328
|
-
HealthDataStandards::Util::HQMFTemplateHelper.template_id_map
|
395
|
+
|
396
|
+
def self.read_template_id_map(version)
|
397
|
+
HealthDataStandards::Util::HQMFTemplateHelper.template_id_map(version)
|
329
398
|
end
|
330
399
|
|
331
400
|
def normalize_status(definition, status)
|
@@ -351,7 +420,7 @@ module HQMF
|
|
351
420
|
case type
|
352
421
|
when 'TS', 'PQ'
|
353
422
|
value = HQMF::Value.from_json(json)
|
354
|
-
when 'IVL_PQ'
|
423
|
+
when 'IVL_PQ', 'IVL_TS'
|
355
424
|
value = HQMF::Range.from_json(json)
|
356
425
|
when 'CD'
|
357
426
|
value = HQMF::Coded.from_json(json)
|
@@ -359,6 +428,9 @@ module HQMF
|
|
359
428
|
value = HQMF::AnyValue.from_json(json)
|
360
429
|
when 'FLFS'
|
361
430
|
value = HQMF::TypedReference.from_json(json)
|
431
|
+
when 'ACT'
|
432
|
+
# Currentlty forcing this as the SimpleXML reresentation contains a fulfills for these types
|
433
|
+
value = HQMF::TypedReference.new(json["reference"], 'FLFS', '')
|
362
434
|
else
|
363
435
|
raise "Unknown value type [#{type}]"
|
364
436
|
end
|