refs/refs/fhir-to-omop-demo/demo/translate/map/Encounter.jq
147 lines · jq
2# Transforms FHIR Encounters into OMOP table records. 8# An alias for the unit of the measurement. 10 .valueQuantity.concept 14 .participant[] | select(.type[].coding[].code == "PPRF") | .individual 17def code_concept(domain): 18 (.type[].coding[] | [select(.concept.domain_id == domain)]) as $concepts | 19 if ($concepts | length) > 1 then 20 error("Multiple \(domain) codings in Encounter/\(.id) code: \($concepts)") 21 elif ($concepts | length) == 0 then 28def condition: code_concept("Condition"); 29def procedure: code_concept("Procedure"); 30def visit: code_concept("Visit"); 33 ["Condition", "Device", "Drug", "Measurement", "Procedure"] as $forbidden | 36 | [select(.concept.domain_id | IN($forbidden[]) | not)] 38 if ($concepts | length) > 1 then 39 error("Multiple encounter codings in Encounter/\(.id) code") 40 elif ($concepts | length) == 0 then 49 "visit_occurrence", # TABLE COLUMNS 50 .id, # visit_occurrence_id 51 .subject.id, # person_id 52 visit.concept_id, # visit_concept_id 53 .period.start, # visit_start_date 54 .period.start, # visit_start_datetime 55 .period.end, # visit_end_date 56 .period.end, # visit_end_datetime 57 44818518, # visit_type_concept_id - EHR visit 58 primary_performer.id, # provider_id 59 .location[0].location.id, # care_site_id 60 null, # visit_source_value 61 null, # visit_source_concept_id 62 null, # admitted_from_concept_id 63 null, # admitted_from_source_value 64 null, # discharge_to_concept_id 65 null, # discharge_to_source_value 66 null # preceding_visit_occurrence_id 69 "condition_occurrence", # TABLE COLUMNS 70 .id, # condition_occurrence_id 71 .subject.id, # person_id 72 condition.concept.concept_id, # condition_concept_id 73 .period.start, # condition_start_date 74 .period.start, # condition_start_datetime 75 .period.end, # condition_end_date 76 .period.end, # condition_end_datetime 77 32817, # condition_type_concept_id # provenance: EHR 78 null, # condition_status_concept_id 80 primary_performer.id, # provider_id 81 .id, # visit_occurrence_id 82 null, # visit_detail_id 83 condition.concept_code, # condition_source_value 84 condition.source_concept_id, # condition_source_concept_id 85 null # condition_status_source_value 88 "observation", # TABLE COLUMNS 90 .subject.id, # person_id 91 observation.concept_id, # observation_concept_id 92 .period.start, # observation_date 93 .period.start, # observation_datetime 94 32817, # observation_type_concept_id - source EHR 95 null, # value_as_number 96 null, # value_as_string 97 null, # value_as_concept_id 98 null, # qualifier_concept_id 99 null, # unit_concept_id 100 primary_performer.id, # provider_id 101 .id, # visit_occurrence_id 102 null, # visit_detail_id 103 observation.concept_code, # observation_source_value 104 observation.concept_id, # observation_source_concept_id 105 null, # unit_source_value 106 null, # qualifier_source_value 107 null, # value_source_value 108 .id, # observation_event_id 109 null # obs_event_field_concept_id 112 "observation_period", # TABLE COLUMNS 113 .id, # observation_period_id 114 .subject.id, # person_id 115 .period.start, # observation_period_start_date 116 .period.end, # observation_period_end_date 117 32827 # period_type_concept_id - EHR encounter record 120 "procedure_occurrence", # TABLE COLUMNS 121 .id, # procedure_occurrence_id 122 .subject.id, # person_id 123 procedure.concept_id, # procedure_concept_id 124 .period.start, # procedure_date 125 .period.start, # procedure_datetime 126 .period.end, # procedure_end_date 127 .period.end, # procedure_end_datetime 128 32817, # procedure_type_concept_id - source EHR 129 null, # modifier_concept_id 131 primary_performer.id, # provider_id 132 .id, # visit_occurrence_id 133 null, # visit_detail_id 134 procedure.concept_code, # procedure_source_value 135 procedure.source_concept_id, # procedure_source_concept_id 136 null # modifier_source_value 139 ((.[0] == "condition_occurrence") and length == 17) or 140 ((.[0] == "visit_occurrence") and length == 18) or 141 ((.[0] == "observation") and length == 22) or 142 ((.[0] == "observation_period") and length == 6) or 143 ((.[0] == "procedure_occurrence") and length == 17)