diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/bloodPressure/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/bloodPressure/all.sql index 612fd2e09..1654930f5 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/bloodPressure/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/bloodPressure/all.sql @@ -15,7 +15,7 @@ SELECT WHEN status_code = '4' THEN 'Normal' ELSE 'Unknown' END AS status_code_name, - CAST(FLOOR(TIMESTAMP_DIFF(xbp.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(xbp.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, xbp.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/bmi/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/bmi/all.sql index 802234733..fd9c87de1 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/bmi/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/bmi/all.sql @@ -16,7 +16,7 @@ SELECT mvc.concept_name AS value_as_concept_name, mo.unit_concept_id, muc.concept_name AS unit_concept_name, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/conditionOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/conditionOccurrence/all.sql index 36f579e29..c7be15a92 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/conditionOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/conditionOccurrence/all.sql @@ -11,7 +11,7 @@ SELECT DISTINCT (CASE WHEN cc.standard_concept IS NULL THEN 'Source' WHEN cc.standard_concept = 'S' THEN 'Standard' ELSE 'Unknown' END) AS standard_concept, co.condition_source_value, co.condition_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(co.condition_start_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(co.condition_start_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, co.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/deviceOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/deviceOccurrence/all.sql index 82a0251d5..edbb91fa6 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/deviceOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/deviceOccurrence/all.sql @@ -8,7 +8,7 @@ SELECT de.device_exposure_end_date, de.device_source_value, de.device_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(de.device_exposure_start_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(de.device_exposure_start_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, de.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/familyHistory/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/familyHistory/all.sql index f2e07c9f0..08a9034ed 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/familyHistory/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/familyHistory/all.sql @@ -6,7 +6,7 @@ SELECT xfh.item AS note_text, xfh.family_history_src_name, xfh.relation_name, - CAST(FLOOR(TIMESTAMP_DIFF(xfh.entry_date, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(xfh.entry_date, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, xfh.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/height/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/height/all.sql index ac2945205..189b7c3ba 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/height/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/height/all.sql @@ -16,7 +16,7 @@ SELECT mvc.concept_name AS value_as_concept_name, mo.unit_concept_id, muc.concept_name AS unit_concept_name, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/ingredientOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/ingredientOccurrence/all.sql index 26edb1e73..3677df050 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/ingredientOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/ingredientOccurrence/all.sql @@ -11,7 +11,7 @@ SELECT de.days_supply, de.drug_source_value, de.drug_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(de.drug_exposure_start_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(de.drug_exposure_start_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, de.visit_occurrence_id, de.drug_type_concept_id, tc.concept_name AS drug_type_concept_name, diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/measurementOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/measurementOccurrence/all.sql index a8d952a80..89358603f 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/measurementOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/measurementOccurrence/all.sql @@ -12,7 +12,7 @@ SELECT uc.concept_name AS unit_concept_name, mo.measurement_source_value, mo.measurement_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name, diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/measurementVumcVocab/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/measurementVumcVocab/all.sql index 25c386c42..15fd5c662 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/measurementVumcVocab/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/measurementVumcVocab/all.sql @@ -5,9 +5,9 @@ SELECT c.concept_code, -- standard_concept is empty in concept table 'Source' AS standard_concept -FROM (SELECT DISTINCT measurement_concept_id FROM `${omopDataset}.measurement` - WHERE measurement_concept_id IS NOT NULL - AND measurement_concept_id != 0) m -JOIN `${omopDataset}.concept` c ON m.measurement_concept_id = c.concept_id +FROM (SELECT DISTINCT measurement_source_concept_id FROM `${omopDataset}.measurement` + WHERE measurement_source_concept_id IS NOT NULL + AND measurement_concept_id = 0) m +JOIN `${omopDataset}.concept` c ON m.measurement_source_concept_id = c.concept_id WHERE c.domain_id = 'Measurement' AND c.vocabulary_id = 'VUMC Meas Value' diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/noteOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/noteOccurrence/all.sql index dc873f45b..b59598f2e 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/noteOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/noteOccurrence/all.sql @@ -8,7 +8,7 @@ SELECT n.note_title, n.note_text, n.note_source_value, - CAST(FLOOR(TIMESTAMP_DIFF(n.note_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(n.note_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, n.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/observationOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/observationOccurrence/all.sql index 58cd502d3..dfd22ef5a 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/observationOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/observationOccurrence/all.sql @@ -14,7 +14,7 @@ SELECT DISTINCT (CASE WHEN oc.standard_concept IS NULL THEN 'Source' WHEN oc.standard_concept = 'S' THEN 'Standard' ELSE 'Unknown' END) AS standard_concept, o.observation_source_value, o.observation_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(o.observation_date, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(o.observation_date, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, o.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/procedureOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/procedureOccurrence/all.sql index 3cfc6a0c7..27cfccaf1 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/procedureOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/procedureOccurrence/all.sql @@ -9,7 +9,7 @@ SELECT po.procedure_date, po.procedure_source_value, po.procedure_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(po.procedure_date, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(po.procedure_date, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, po.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/pulse/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/pulse/all.sql index 24fe6dd1f..3cdc59c5d 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/pulse/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/pulse/all.sql @@ -8,7 +8,7 @@ SELECT mvc.concept_name AS value_as_concept_name, mo.unit_concept_id, muc.concept_name AS unit_concept_name, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/respiratoryRate/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/respiratoryRate/all.sql index c54aba8a3..19feeab87 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/respiratoryRate/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/respiratoryRate/all.sql @@ -8,7 +8,7 @@ SELECT mvc.concept_name AS value_as_concept_name, mo.unit_concept_id, muc.concept_name AS unit_concept_name, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/visitOccurrence/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/visitOccurrence/all.sql index dae05efb3..22f231c4f 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/visitOccurrence/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/visitOccurrence/all.sql @@ -8,7 +8,7 @@ SELECT vo.visit_end_date, vo.visit_source_value, vo.visit_source_concept_id, - CAST(FLOOR(TIMESTAMP_DIFF(vo.visit_start_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence + CAST(FLOOR(TIMESTAMP_DIFF(vo.visit_start_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence FROM `${omopDataset}.visit_occurrence` AS vo JOIN `${omopDataset}.person_ext` AS p ON p.person_id = vo.person_id diff --git a/underlay/src/main/resources/config/datamapping/sd/entity/weight/all.sql b/underlay/src/main/resources/config/datamapping/sd/entity/weight/all.sql index 9eab2f141..3bf03e75c 100644 --- a/underlay/src/main/resources/config/datamapping/sd/entity/weight/all.sql +++ b/underlay/src/main/resources/config/datamapping/sd/entity/weight/all.sql @@ -16,7 +16,7 @@ SELECT mvc.concept_name AS value_as_concept_name, mo.unit_concept_id, muc.concept_name AS unit_concept_name, - CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.birth_datetime, DAY) / 365.25) AS INT64) AS age_at_occurrence, + CAST(FLOOR(TIMESTAMP_DIFF(mo.measurement_datetime, p.date_of_birth, DAY) / 365.25) AS INT64) AS age_at_occurrence, mo.visit_occurrence_id, vo.visit_concept_id, vc.concept_name AS visit_concept_name diff --git a/underlay/src/main/resources/config/indexer/sd/sd_20250831.json b/underlay/src/main/resources/config/indexer/sd/sd_20250831.json new file mode 100644 index 000000000..5cc308bc8 --- /dev/null +++ b/underlay/src/main/resources/config/indexer/sd/sd_20250831.json @@ -0,0 +1,26 @@ +{ + "underlay": "sd", + "bigQuery": { + "sourceData": { + "projectId": "vumc-sd-dev", + "datasetId": "sd_20250831", + "sqlSubstitutions": { + "omopDataset": "vumc-sd-dev.sd_20250831", + "staticTablesDataset": "vumc-sd-dev.sd_20250831" + } + }, + "indexData": { + "projectId": "vumc-sd-dev", + "datasetId": "indexed_sd_20250831" + }, + "queryProjectId": "vumc-sd-dev", + "dataLocation": "us-central1" + }, + "dataflow": { + "serviceAccountEmail": "sd-dev-dataflow-indexer@vumc-sd-dev.iam.gserviceaccount.com", + "gcsTempDirectory": "gs://dataflow-indexing-sd-dev/temp/", + "workerMachineType": "n1-standard-4", + "usePublicIps": false, + "vpcSubnetworkName": "us-central1" + } +} diff --git a/underlay/src/main/resources/config/service/sd/sd_20250831_dev.json b/underlay/src/main/resources/config/service/sd/sd_20250831_dev.json new file mode 100644 index 000000000..c2d89cf70 --- /dev/null +++ b/underlay/src/main/resources/config/service/sd/sd_20250831_dev.json @@ -0,0 +1,21 @@ +{ + "underlay": "sd", + "bigQuery": { + "sourceData": { + "projectId": "vumc-sd-dev", + "datasetId": "sd_20250831", + "sqlSubstitutions": { + "indexedDataset": "vumc-sd-dev.indexed_sd_20250831", + "omopDataset": "vumc-sd-dev.sd_20250831", + "staticTablesDataset": "vumc-sd-dev.sd_20250831" + } + }, + "indexData": { + "projectId": "vumc-sd-dev", + "datasetId": "indexed_sd_20250831" + }, + "queryProjectId": "vumc-sd-dev", + "dataLocation": "us-central1" + }, + "uiConfigFile": "ui.json" +} diff --git a/underlay/src/main/resources/config/service/sd/sd_20250831_prod.json b/underlay/src/main/resources/config/service/sd/sd_20250831_prod.json new file mode 100644 index 000000000..2721f726a --- /dev/null +++ b/underlay/src/main/resources/config/service/sd/sd_20250831_prod.json @@ -0,0 +1,21 @@ +{ + "underlay": "sd", + "bigQuery": { + "sourceData": { + "projectId": "vumc-sd-prod", + "datasetId": "sd_20250228", + "sqlSubstitutions": { + "indexedDataset": "vumc-sd-prod.indexed_sd_20250831", + "omopDataset": "vumc-sd-prod.sd_20250831", + "staticTablesDataset": "vumc-sd-prod.sd_20250831" + } + }, + "indexData": { + "projectId": "vumc-sd-prod", + "datasetId": "indexed_sd_20250831" + }, + "queryProjectId": "vumc-sd-prod", + "dataLocation": "us-central1" + }, + "uiConfigFile": "ui.json" +} diff --git a/underlay/src/main/resources/config/service/sd/sd_20250831_test.json b/underlay/src/main/resources/config/service/sd/sd_20250831_test.json new file mode 100644 index 000000000..c57babda0 --- /dev/null +++ b/underlay/src/main/resources/config/service/sd/sd_20250831_test.json @@ -0,0 +1,21 @@ +{ + "underlay": "sd", + "bigQuery": { + "sourceData": { + "projectId": "vumc-sd-test", + "datasetId": "sd_20250831", + "sqlSubstitutions": { + "indexedDataset": "vumc-sd-test.indexed_sd_20250831", + "omopDataset": "vumc-sd-test.sd_20250831", + "staticTablesDataset": "vumc-sd-test.sd_20250831" + } + }, + "indexData": { + "projectId": "vumc-sd-test", + "datasetId": "indexed_sd_20250831" + }, + "queryProjectId": "vumc-sd-test", + "dataLocation": "us-central1" + }, + "uiConfigFile": "ui.json" +}