Update Condition Mapping authored by Henke, Elisa's avatar Henke, Elisa
# Condition Mapping # Condition Mapping
![fhir-to-omop-Condition](uploads/d829bf5e1cda8c8e7cdc86ea33eadf71/fhir-to-omop-Condition.png) ![fhir-to-omop-Condition.drawio](uploads/833c8e6c2f269d2d959dacb375ca353b/fhir-to-omop-Condition.drawio.png)
:information_source: All ICD codes will also be mapped to a SNOMED Code. The mapping information is available in OMOP in the `cds_etl_helper.MATERIALIZED VIEW.icd_snomed_domain_lookup`, which is generated from ICD10GM vocabulary (CONCEPT) and CONCEPT_RELATIONSHIP tables. :information_source: All ICD codes will also be mapped to a SNOMED Code. The mapping information is available in OMOP in the `cds_etl_helper.MATERIALIZED VIEW.icd_snomed_domain_lookup`, which is generated from ICD10GM vocabulary (CONCEPT) and CONCEPT_RELATIONSHIP tables.
...@@ -9,94 +9,144 @@ ...@@ -9,94 +9,144 @@
| FHIR | FHIR - required | OMOP | OMOP - required | Comments | | FHIR | FHIR - required | OMOP | OMOP - required | Comments |
| :------: | :------: | :------: |:------: |:------: | | :------: | :------: | :------: |:------: |:------: |
| | | condition_occurrence_id | :heavy_check_mark:| This id is generated for each condition resource automatically. | | | | condition_occurrence_id | :heavy_check_mark:| This id is generated for each condition resource automatically. |
| subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in FHIR_ID_TO_OMOP_ID_MAP. | | subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in PERSON. |
| | | condition_concept_id | :heavy_check_mark: | SNOMED concept associated with the ICD code from condition_source_value without special characters | | | | condition_concept_id | :heavy_check_mark: | SNOMED concept associated with the ICD code from condition_source_value without special characters |
| recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | condition_start_date | :heavy_check_mark: | | | recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | condition_start_date | :heavy_check_mark: | |
| recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | condition_start_datetime | | | | recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | condition_start_datetime | | |
| onsetPeriod.end | | condition_end_date | | | | onsetPeriod.end | | condition_end_date | | |
| onsetPeriod.end | | condition_end_datetime | | | | onsetPeriod.end | | condition_end_datetime | | |
| | | condition_type_concept_id| :heavy_check_mark: | See post processing for diagnosis rank. | | | | condition_type_concept_id| :heavy_check_mark: | default value: 44803913 (Diagnosis) or <br> See post processing for diagnosis rank. |
|code.coding.extension| | condition_status_concept_id | | See mapping in source_to_concept_map. | |code.coding.extension| | condition_status_concept_id | | See mapping in source_to_concept_map. |
| | | :x: stop_reason | | | | | | :x: stop_reason | | |
| | | :x: provider_id | | | | | | :x: provider_id | | |
| encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in FHIR_ID_TO_OMOP_ID_MAP. | | encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in VISIT_OCCURRENCE. |
| | |visit_detail_id| | See post processing for visit_detail_id | | | |visit_detail_id| | See post processing for visit_detail_id |
| code.coding.code | :heavy_check_mark: | condition_source_value | | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" | | code.coding.code | :heavy_check_mark: | condition_source_value | | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" |
| | | condition_source_concept_id | | ICD-code from condition_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = condition_source_value | | | | condition_source_concept_id | | ICD-code from condition_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = condition_source_value |
|code.coding.extension| |condition_status_source_value| | | |code.coding.extension| |condition_status_source_value| | |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
## Condition to MEASUREMENT ## Condition to MEASUREMENT
| FHIR | FHIR - required | OMOP | OMOP - required | Comments | | FHIR | FHIR - required | OMOP | OMOP - required | Comments |
| :------: | :------: |:------: |:------: |:------: | | :------: | :------: |:------: |:------: |:------: |
| | | measurement_id | :heavy_check_mark: | This id is generated for each condition resource automatically. | | | | measurement_id | :heavy_check_mark: | This id is generated for each condition resource automatically. |
| subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in FHIR_ID_TO_OMOP_ID_MAP. | | subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in PERSON. |
| | |measurement_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from measurement_source_value without special characters | | | |measurement_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from measurement_source_value without special characters |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |measurement_date |:heavy_check_mark:| | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |measurement_date |:heavy_check_mark:| |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |measurement_datetime|| | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |measurement_datetime|| |
| | | :x: measurement_time | | | | | | :x: measurement_time | | |
| | |measurement_type_concept_id| :heavy_check_mark: | See post processing for diagnosis rank. | | | |measurement_type_concept_id| :heavy_check_mark: | default value: 44803913 (Diagnosis) or <br> See post processing for diagnosis rank. |
| | | :x: operator_concept_id | | | | | | :x: operator_concept_id | | |
| | | :x: value_as_number | | | | | | :x: value_as_number | | |
| | | :x: value_as_concept_id | | | | | | :x: value_as_concept_id | | |
| | | :x: unit_concept_id | | | | | | :x: unit_concept_id | | |
| | | :x: range_low | | | | | | :x: range_low | | |
| | | :x: range_high | | | | | | :x: range_high | | |
| encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in FHIR_ID_TO_OMOP_ID_MAP. | | encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in VISIT_OCCURRENCE. |
| | |visit_detail_id| | See post processing for visit_detail_id | | | |visit_detail_id| | See post processing for visit_detail_id |
| code.coding.code | :heavy_check_mark: |measurement_source_value || ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" | | code.coding.code | :heavy_check_mark: |measurement_source_value || ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" |
| | |measurement_source_concept_id| | ICD-code from measurement_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = measurement_source_value | | | |measurement_source_concept_id| | ICD-code from measurement_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = measurement_source_value |
| | | :x: unit_source_value | | | | | | :x: unit_source_value | | |
| | | :x: value_source_value | | | | | | :x: value_source_value | | |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
## Condition to PROCEDURE_OCCURRENCE ## Condition to PROCEDURE_OCCURRENCE
| FHIR |FHIR - required | OMOP | OMOP - required | Comments | | FHIR |FHIR - required | OMOP | OMOP - required | Comments |
|:------: |:------: |:------: |:------: |:------: | |:------: |:------: |:------: |:------: |:------: |
| | | procedure_occurrence_id| :heavy_check_mark: |This id is generated for each condition resource automatically. | | | | procedure_occurrence_id| :heavy_check_mark: |This id is generated for each condition resource automatically. |
| subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in FHIR_ID_TO_OMOP_ID_MAP. | | subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in PERSON. |
| | |procedure_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from procedure_source_value without special characters | | | |procedure_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from procedure_source_value without special characters |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |procedure_date| :heavy_check_mark: | | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |procedure_date| :heavy_check_mark: | |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |procedure_datetime| | | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |procedure_datetime| | |
| | |procedure_type_concept_id| :heavy_check_mark: |See post processing for diagnosis rank. | | | |procedure_type_concept_id| :heavy_check_mark: |default value: 44803913 (Diagnosis) or <br> See post processing for diagnosis rank. |
| | | :x: modifier_concept_id | | | | | | :x: modifier_concept_id | | |
| | | :x: quantity | | | | | | :x: quantity | | |
| | | :x: provider_id | | | | | | :x: provider_id | | |
| encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in FHIR_ID_TO_OMOP_ID_MAP. | | encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in VISIT_OCCURRENCE. |
| | |visit_detail_id| |See post processing for visit_detail_id | | | |visit_detail_id| |See post processing for visit_detail_id |
| code.coding.code | :heavy_check_mark: |procedure_source_value| | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" | | code.coding.code | :heavy_check_mark: |procedure_source_value| | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" |
| | |procedure_source_concept_id| | ICD-code from procedure_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = procedure_source_value | | | |procedure_source_concept_id| | ICD-code from procedure_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = procedure_source_value |
| | | :x: modifier_source_value | | | | | | :x: modifier_source_value | | |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
## Condition to OBSERVATION ## Condition to OBSERVATION
### Information for ICD diagnosis
| FHIR | FHIR - required | OMOP | OMOP - required | Comments | | FHIR | FHIR - required | OMOP | OMOP - required | Comments |
|:------: |:------: |:------: |:------: |:------: | |:------: |:------: |:------: |:------: |:------: |
| | | observation_id | :heavy_check_mark: |This id is generated for each condition resource automatically. | | | | observation_id | :heavy_check_mark: |This id is generated for each condition resource automatically. |
| subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in FHIR_ID_TO_OMOP_ID_MAP. | | subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in PERSON. |
| | |observation_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from observation_source_value without special characters | | | |observation_concept_id| :heavy_check_mark: | SNOMED concept associated with the ICD code from observation_source_value without special characters |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_date|:heavy_check_mark: | | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_date|:heavy_check_mark: | |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_datetime| | | |recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_datetime| | |
| | |observation_type_concept_id| :heavy_check_mark: |See post processing for diagnosis rank. | | | |observation_type_concept_id| :heavy_check_mark: |default value: 44803913 (Diagnosis) or <br> See post processing for diagnosis rank. |
| | | :x: value_as_number | | | | | | :x: value_as_number | | |
| | | :x: value_as_string | | | | | | :x: value_as_string | | |
| | | :x: value_as_concept_id | | | | | | :x: value_as_concept_id | | |
| | | :x: qualifier_concept_id | | | | | | :x: qualifier_concept_id | | |
| | | :x: unit_concept_id | | | | | | :x: unit_concept_id | | |
| | | :x: provider_id | | | | | | :x: provider_id | | |
| encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in FHIR_ID_TO_OMOP_ID_MAP. | | encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in VISIT_OCCURRENCE. |
| | |visit_detail_id| | See post processing for visit_detail_id | | | |visit_detail_id| | See post processing for visit_detail_id |
| code.coding.code | :heavy_check_mark: |observation_source_value| | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" | | code.coding.code | :heavy_check_mark: |observation_source_value| | ICD-code WHERE system = "http://fhir.de/CodeSystem/dimdi/icd-10-gm" |
| | |observation_source_concept_id| | ICD-code from observation_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = observation_source_value | | | |observation_source_concept_id| | ICD-code from observation_source_value <br> CONCEPT.concept_id WHERE CONCEPT.concept_code = observation_source_value |
| | | :x: unit_source_value | | | | | | :x: unit_source_value | | |
| | | :x: qualifier_source_value | | | | | | :x: qualifier_source_value | | |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
### Information for ICD site localization
| FHIR | FHIR - required | OMOP | OMOP - required | Comments |
|:------: |:------: |:------: |:------: |:------: |
| | | observation_id | :heavy_check_mark: |This id is generated for each condition resource automatically. |
| subject.reference or <br> subject.identifier.value | | person_id | :heavy_check_mark: | The patient reference is used to search for the person_id in PERSON. |
| | |observation_concept_id| :heavy_check_mark: | SNOMED concept associated with the value from observation_source_value <br> See mapping in source_to_concept_map. |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_date|:heavy_check_mark: | |
|recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> |observation_datetime| | |
| | |observation_type_concept_id| :heavy_check_mark: |default value: 38000280 (Observation recorded from EHR) |
| | | :x: value_as_number | | |
| code.coding.code.extension.valueCoding.value | | value_as_string | | Extension WHERE system = "http://fhir.de/CodeSystem/kbv/s-icd-seitenlokalisation" |
| | | :x: value_as_concept_id | | |
| | | :x: qualifier_concept_id | | |
| | | :x: unit_concept_id | | |
| | | :x: provider_id | | |
| encounter.reference or <br> encounter.identifier.value | | visit_occurrence_id | | The encounter reference is used to search for the visit_occurrence_id in VISIT_OCCURRENCE. |
| | |visit_detail_id| | See post processing for visit_detail_id |
| code.coding.code.extension.valueCoding.value | |observation_source_value| | Extension WHERE system = "http://fhir.de/CodeSystem/kbv/s-icd-seitenlokalisation" |
| | | :x: observation_source_concept_id| | |
| | | :x: unit_source_value | | |
| | | :x: qualifier_source_value | | |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
## Condition to POST_PROCESS_MAP ## Condition to POST_PROCESS_MAP
### Information for primary and secondary ICD
| FHIR | FHIR - required | OMOP | OMOP - required | Comments | | FHIR | FHIR - required | OMOP | OMOP - required | Comments |
| ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | ------ |
| | | data_id | | This id is generated for each condition resource automatically. | | | | data_id | | This id is generated for each condition resource automatically. |
| | | type | | default value: "CONDITION" | | | | type | | default value: "CONDITION" |
| id | | data_one | | | | id | | data_one | | |
| recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | data_two | | "v" + the linkage between visit_occurrence_id and the *_start_datetime | | recordedDate or <br> onsetPeriod.start or <br> onsetDateTime.value | :heavy_check_mark: <br> <br> | data_two | | "v" + the linkage between visit_occurrence_id and the *_start_datetime |
| | | omop_id | | This id represents the person_id of the person table. | | | | omop_id | | This id represents the person_id of the PERSON table. |
| code.coding.code | :heavy_check_mark: | omop_table | | It represents the linkage between the primary and the secondary ICD code including indication of the respective domain. | | code.coding.code | :heavy_check_mark: | omop_table | | It represents the linkage between the primary and the secondary ICD code including indication of the respective domain. |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
### Information for ICD site localization
| FHIR | FHIR - required | OMOP | OMOP - required | Comments |
| ------ | ------ | ------ | ------ | ------ |
| | | data_id | | This id is generated for each condition resource automatically. |
| | | type | | default value: "CONDITION" |
| code.coding.code.extension.valueCoding.value | | data_one | | siteLocalization + ":Observation" |
| code.coding.code | :heavy_check_mark: | data_two | | It represents the linkage between the ICD code its respective domain. |
| | | omop_id | | This id represents the person_id of the PERSON table. |
| | | omop_table | | default value: "site_localization" |
| id | | fhir_logical_id | | |
| identifier.value| | fhir_identifier | | |
## Example ## Example
...@@ -117,6 +167,15 @@ ...@@ -117,6 +167,15 @@
"system": "http://fhir.de/CodeSystem/dimdi/icd-10-gm", "system": "http://fhir.de/CodeSystem/dimdi/icd-10-gm",
"version": "2018" "version": "2018"
} }
},
{
"url": "http://fhir.de/StructureDefinition/seitenlokalisation",
"valueCoding": {
"code": "B",
"system": "http://fhir.de/CodeSystem/kbv/s-icd-seitenlokalisation",
"display": "beiderseits",
"version": "1.00"
}
} }
] ]
} }
...@@ -144,13 +203,26 @@ ...@@ -144,13 +203,26 @@
### Output OMOP tables ### Output OMOP tables
+ CONDITION_OCCURRENCE + CONDITION_OCCURRENCE
|condition_occurrence_id|person_id|condition_concept_id|condition_start_date|condition_start_datetime|condition_type_concept_id|visit_occurrence_id|condition_source_value|condition_source_concept_id| |condition_occurrence_id|person_id|condition_concept_id|condition_start_date|condition_start_datetime|condition_type_concept_id|visit_occurrence_id|condition_source_value|condition_source_concept_id|fhir_logical_id|fhir_identifier|
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
|1|1|4295950|2018-02-15|2018-02-15 17:25:00|44786627|1|Z71|37097751| |1|1|4295950|2018-02-15|2018-02-15 17:25:00|44786627|1|Z71|37097751|id-1|id-1|
|2|1|4238738|2018-02-15|2018-02-15 17:25:00|44786627|1|Z50.1|37097284| |2|1|4238738|2018-02-15|2018-02-15 17:25:00|44786627|1|Z50.1|37097284|id-1|id-1|
+ OBSERVATION
|observation_id|person_id|observation_concept_id|observation_date|observation_datetime|observation_type_concept_id|value_as_string|visit_occurrence_id|observation_source_value|fhir_logical_id|fhir_identifier|
|----|----|----|----|----|----|----|----|----|----|----|
|1|1|4197258|2018-02-15|2018-02-15 17:25:00|38000280|B|1|B|id-1|id-1|
+ POST_PROCESS_MAP + POST_PROCESS_MAP
|data_id|type|data_one|data_two|omop_id|omop_table| Information for primary and secondary ICD
|:----:|:----:|:----:|:----:|:----:|:----:| |data_id|type|data_one|data_two|omop_id|omop_table|fhir_logical_id|fhir_identifier|
| 1 | CONDITION | id-1 | v1:2018-02-15 17:25:00 | 1 | Z71:Condition:Z50.1:Condition | |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
\ No newline at end of file | 1 | CONDITION | id-1 | v1:2018-02-15 17:25:00 | 1 | Z71:Condition:Z50.1:Condition |id-1|id-1|
Information for ICD site localization
|data_id|type|data_one|data_two|omop_id|omop_table|fhir_logical_id|fhir_identifier|
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
| 2 | CONDITION | B:Observation | Z71:Condition | 1 | site_localization |id-1|id-1|
| 3 | CONDITION | B:Observation | Z50.1:Condition | 1 | site_localization |id-1|id-1|
\ No newline at end of file