Skip to content

Commit 066b871

Browse files
committed
update mappers
1 parent 8cb9f48 commit 066b871

File tree

1 file changed

+111
-79
lines changed

1 file changed

+111
-79
lines changed

phenex/mappers.py

+111-79
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,14 @@ def get_mapped_tables(self, con) -> Dict[str, PhenexTable]:
6969
# OMOP Column Mappers
7070
#
7171
class OMOPPersonTable(PhenexPersonTable):
72+
NAME_TABLE = 'PERSON'
7273
JOIN_KEYS = {
7374
'OMOPConditionOccurenceTable': ['PERSON_ID'],
7475
'OMOPVisitDetailTable': ['PERSON_ID']
7576
}
7677

7778
class OMOPVisitDetailTable(PhenexVisitDetailTable):
79+
NAME_TABLE = 'VISIT_DETAIL'
7880
JOIN_KEYS = {
7981
'OMOPPersonTable': ['PERSON_ID'],
8082
'OMOPConditionOccurenceTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
@@ -92,89 +94,119 @@ class OMOPConditionOccurenceTable(CodeTable):
9294
'CODE': "CONDITION_CONCEPT_ID",
9395
}
9496

97+
class OMOPDeathTable(PhenexTable):
98+
NAME_TABLE = 'DEATH'
99+
JOIN_KEYS = {
100+
'OMOPPersonTable': ['PERSON_ID']
101+
}
102+
KNOWN_FIELDS = [
103+
'PERSON_ID',
104+
'DATE_OF_DEATH'
105+
]
106+
DEFAULT_MAPPING = {
107+
'PERSON_ID': "PERSON_ID",
108+
'DATE_OF_DEATH': "DEATH_DATE"
109+
}
110+
111+
class OMOPProcedureOccurrenceTable(CodeTable):
112+
NAME_TABLE = 'PROCEDURE_OCCURRENCE'
113+
JOIN_KEYS = {
114+
'OMOPPersonTable': ['PERSON_ID'],
115+
'OMOPVisitDetailTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
116+
}
117+
DEFAULT_MAPPING = {
118+
'PERSON_ID': "PERSON_ID",
119+
'EVENT_DATE': "PROCEDURE_DATE",
120+
'CODE': "PROCEDURE_CONCEPT_ID",
121+
}
122+
123+
class OMOPDrugExposureTable(CodeTable):
124+
NAME_TABLE = 'DRUG_EXPOSURE'
125+
JOIN_KEYS = {
126+
'OMOPPersonTable': ['PERSON_ID'],
127+
'OMOPVisitDetailTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
128+
}
129+
DEFAULT_MAPPING = {
130+
'PERSON_ID': "PERSON_ID",
131+
'EVENT_DATE': "DRUG_EXPOSURE_START_DATE",
132+
'CODE': "DRUG_CONCEPT_ID",
133+
}
134+
135+
class OMOPConditionOccurrenceSourceTable(CodeTable):
136+
NAME_TABLE = 'CONDITION_OCCURRENCE'
137+
JOIN_KEYS = {
138+
'OMOPPersonTable': ['PERSON_ID'],
139+
'OMOPVisitDetailTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
140+
}
141+
DEFAULT_MAPPING = {
142+
'PERSON_ID': "PERSON_ID",
143+
'EVENT_DATE': "CONDITION_START_DATE",
144+
'CODE': "CONDITION_SOURCE_VALUE",
145+
}
146+
147+
class OMOPProcedureOccurrenceSourceTable(CodeTable):
148+
NAME_TABLE = 'PROCEDURE_OCCURRENCE'
149+
JOIN_KEYS = {
150+
'OMOPPersonTable': ['PERSON_ID'],
151+
'OMOPVisitDetailTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
152+
}
153+
DEFAULT_MAPPING = {
154+
'PERSON_ID': "PERSON_ID",
155+
'EVENT_DATE': "PROCEDURE_DATE",
156+
'CODE': "PROCEDURE_SOURCE_VALUE",
157+
}
158+
159+
class OMOPDrugExposureSourceTable(CodeTable):
160+
NAME_TABLE = 'DRUG_EXPOSURE'
161+
JOIN_KEYS = {
162+
'OMOPPersonTable': ['PERSON_ID'],
163+
'OMOPVisitDetailTable': ['PERSON_ID', 'VISIT_DETAIL_ID']
164+
}
165+
DEFAULT_MAPPING = {
166+
'PERSON_ID': "PERSON_ID",
167+
'EVENT_DATE': "DRUG_EXPOSURE_START_DATE",
168+
'CODE': "DRUG_SOURCE_VALUE",
169+
}
170+
171+
class OMOPPersonTableSource(PhenexPersonTable):
172+
NAME_TABLE = 'PERSON'
173+
JOIN_KEYS = {
174+
'OMOPConditionOccurenceTable': ['PERSON_ID'],
175+
'OMOPVisitDetailTable': ['PERSON_ID']
176+
}
177+
DEFAULT_MAPPING = {
178+
'PERSON_ID': "PERSON_ID",
179+
'DATE_OF_BIRTH': "BIRTH_DATETIME",
180+
'YEAR_OF_BIRTH': "YEAR_OF_BIRTH",
181+
'SEX': "GENDER_SOURCE_VALUE",
182+
'ETHNICITY': "ETHNICITY_SOURCE_VALUE",
183+
}
184+
185+
class OMOPObservationPeriodTable(PhenexObservationPeriodTable):
186+
NAME_TABLE = 'OBSERVATION_PERIOD'
187+
JOIN_KEYS = {
188+
'OMOPPersonTable': ['PERSON_ID']
189+
}
190+
DEFAULT_MAPPING = {
191+
'PERSON_ID': "PERSON_ID",
192+
'OBSERVATION_PERIOD_START_DATE': "OBSERVATION_PERIOD_START_DATE",
193+
'OBSERVATION_PERIOD_END_DATE': 'OBSERVATION_PERIOD_END_DATE'
194+
}
195+
95196
#
96197
# Domains
97198
#
98199
OMOPs = {
99200
"PERSON": OMOPPersonTable,
100-
"VISIT": OMOPVisitDetailTable,
201+
"VISIT_DETAIL": OMOPVisitDetailTable,
101202
"CONDITION_OCCURRENCE": OMOPConditionOccurenceTable,
102-
# "DEATH": OMOPDeathTable,
103-
# "CONDITION_OCCURRENCE": OMOPConditionOccurrence,
104-
# "PROCEDURE_OCCURRENCE": OMOPProcedureOccurrence,
105-
# "DRUG_EXPOSURE": OMOPDrugExposure,
106-
# "PERSON_SOURCE": OMOPPersonTableSource,
107-
# "CONDITION_OCCURRENCE_SOURCE": OMOPConditionOccurrenceSource,
108-
# "PROCEDURE_OCCURRENCE_SOURCE": OMOPProcedureOccurrenceSource,
109-
# "DRUG_EXPOSURE_SOURCE": OMOPDrugExposureSource,
110-
# "OBSERVATION_PERIOD": OMOPObservationPeriod,
203+
"DEATH": OMOPDeathTable,
204+
"PROCEDURE_OCCURRENCE": OMOPProcedureOccurrenceTable,
205+
"DRUG_EXPOSURE": OMOPDrugExposureTable,
206+
"CONDITION_OCCURRENCE_SOURCE": OMOPConditionOccurrenceSourceTable,
207+
"PROCEDURE_OCCURRENCE_SOURCE": OMOPProcedureOccurrenceSourceTable,
208+
"DRUG_EXPOSURE_SOURCE": OMOPDrugExposureSourceTable,
209+
"PERSON_SOURCE": OMOPPersonTableSource,
210+
"OBSERVATION_PERIOD": OMOPObservationPeriodTable,
111211
}
112-
OMOPDomains = DomainsDictionary(OMOPs)
113-
114-
#
115-
# OLD vvvvv
116-
#
117-
# OMOPPersonTable = PersonTable(
118-
# NAME_TABLE="PERSON",
119-
# PERSON_ID="PERSON_ID",
120-
# DATE_OF_BIRTH="BIRTH_DATETIME",
121-
# YEAR_OF_BIRTH="YEAR_OF_BIRTH",
122-
# SEX="GENDER_CONCEPT_ID",
123-
# ETHNICITY="ETHNICITY_CONCEPT_ID",
124-
# )
125-
126-
# OMOPDeathTable = PersonTable(
127-
# NAME_TABLE="DEATH", PERSON_ID="PERSON_ID", DATE_OF_DEATH="DEATH_DATE"
128-
# )
129-
130-
# OMOPPersonTableSource = PersonTable(
131-
# NAME_TABLE="PERSON",
132-
# PERSON_ID="PERSON_ID",
133-
# DATE_OF_BIRTH="BIRTH_DATETIME",
134-
# YEAR_OF_BIRTH="YEAR_OF_BIRTH",
135-
# SEX="GENDER_SOURCE_VALUE",
136-
# ETHNICITY="ETHNICITY_SOURCE_VALUE",
137-
# )
138-
139-
# OMOPConditionOccurrence = CodeTable(
140-
# NAME_TABLE="CONDITION_OCCURRENCE",
141-
# EVENT_DATE="CONDITION_START_DATE",
142-
# CODE="CONDITION_CONCEPT_ID",
143-
# )
144-
145-
# OMOPConditionOccurrenceSource = CodeTable(
146-
# NAME_TABLE="CONDITION_OCCURRENCE",
147-
# EVENT_DATE="CONDITION_START_DATE",
148-
# CODE="CONDITION_SOURCE_VALUE",
149-
# )
150-
151-
# OMOPProcedureOccurrence = CodeTable(
152-
# NAME_TABLE="PROCEDURE_OCCURRENCE",
153-
# EVENT_DATE="PROCEDURE_DATE",
154-
# CODE="PROCEDURE_CONCEPT_ID",
155-
# )
156-
157-
# OMOPProcedureOccurrenceSource = CodeTable(
158-
# NAME_TABLE="PROCEDURE_OCCURRENCE",
159-
# EVENT_DATE="PROCEDURE_DATE",
160-
# CODE="PROCEDURE_SOURCE_VALUE",
161-
# )
162-
163-
# OMOPDrugExposure = CodeTable(
164-
# NAME_TABLE="DRUG_EXPOSURE",
165-
# EVENT_DATE="DRUG_EXPOSURE_START_DATE",
166-
# CODE="DRUG_CONCEPT_ID",
167-
# )
168-
169-
# OMOPDrugExposureSource = CodeTable(
170-
# NAME_TABLE="DRUG_EXPOSURE",
171-
# EVENT_DATE="DRUG_EXPOSURE_START_DATE",
172-
# CODE="DRUG_SOURCE_VALUE",
173-
# )
174-
175-
# OMOPObservationPeriod = PhenexObservationPeriodTable(
176-
# NAME_TABLE="OBSERVATION_PERIOD",
177-
# PERSON_ID="PERSON_ID",
178-
# OBSERVATION_PERIOD_START_DATE="OBSERVATION_PERIOD_START_DATE",
179-
# OBSERVATION_PERIOD_END_DATE="OBSERVATION_PERIOD_END_DATE",
180-
# )
212+
OMOPDomains = DomainsDictionary(OMOPs)

0 commit comments

Comments
 (0)