1+
2+ from omop_alchemy .cdm .model import Condition_Occurrence , Episode_Event , Concept
3+ import sqlalchemy as sa
4+ import sqlalchemy .orm as so
5+
6+ from omop_semantics .runtime .default_valuesets import runtime
7+
8+ from .modifier_mappers import (
9+ TStage ,
10+ NStage ,
11+ MStage ,
12+ GroupStage ,
13+ GradeModifier ,
14+ SizeModifier ,
15+ LatModifier ,
16+ )
17+
18+ condition_concept = so .aliased (Concept , name = 'condition_concept' )
19+
20+ modified_conditions_join = (
21+ sa .select (
22+ sa .func .row_number ().over ().label ('mv_id' ),
23+ Condition_Occurrence .person_id ,
24+ Condition_Occurrence .condition_start_date ,
25+ Condition_Occurrence .condition_occurrence_id ,
26+ Condition_Occurrence .condition_source_value ,
27+ Condition_Occurrence .condition_concept_id ,
28+ condition_concept .concept_name .label ('condition_concept' ),
29+ Episode_Event .episode_id .label ('condition_episode' ),
30+ TStage .stage_id .label ('t_stage_id' ),
31+ TStage .stage_date .label ('t_stage_date' ),
32+ TStage .stage_concept_id .label ('t_stage_concept_id' ),
33+ TStage .stage_label .label ('t_stage_label' ),
34+ NStage .stage_id .label ('n_stage_id' ),
35+ NStage .stage_date .label ('n_stage_date' ),
36+ NStage .stage_concept_id .label ('n_stage_concept_id' ),
37+ NStage .stage_label .label ('n_stage_label' ),
38+ MStage .stage_id .label ('m_stage_id' ),
39+ MStage .stage_date .label ('m_stage_date' ),
40+ MStage .stage_concept_id .label ('m_stage_concept_id' ),
41+ MStage .stage_label .label ('m_stage_label' ),
42+ GroupStage .stage_id .label ('group_stage_id' ),
43+ GroupStage .stage_date .label ('group_stage_date' ),
44+ GroupStage .stage_concept_id .label ('group_stage_concept_id' ),
45+ GroupStage .stage_label .label ('group_stage_label' ),
46+ GradeModifier .measurement_id .label ('grade_id' ),
47+ GradeModifier .measurement_date .label ('grade_date' ),
48+ GradeModifier .concept_name .label ('grade_concept' ),
49+ SizeModifier .measurement_id .label ('size_id' ),
50+ SizeModifier .measurement_date .label ('size_date' ),
51+ SizeModifier .value_as_number .label ('size_value' ),
52+ SizeModifier .concept_name .label ('size_concept' ),
53+ LatModifier .measurement_id .label ('laterality_id' ),
54+ LatModifier .measurement_date .label ('laterality_date' ),
55+ LatModifier .concept_name .label ('laterality_concept' ),
56+ )
57+ .join (
58+ Episode_Event ,
59+ sa .and_ (
60+ Episode_Event .event_id == Condition_Occurrence .condition_occurrence_id ,
61+ Episode_Event .episode_event_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id
62+ ),
63+ isouter = True
64+ )
65+ .join (
66+ TStage ,
67+ sa .and_ (
68+ TStage .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
69+ Condition_Occurrence .condition_occurrence_id == TStage .modifier_of_event_id
70+ ),
71+ isouter = True
72+ )
73+ .join (
74+ NStage ,
75+ sa .and_ (
76+ NStage .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
77+ Condition_Occurrence .condition_occurrence_id == NStage .modifier_of_event_id
78+ ),
79+ isouter = True
80+ )
81+ .join (
82+ MStage ,
83+ sa .and_ (
84+ MStage .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
85+ Condition_Occurrence .condition_occurrence_id == MStage .modifier_of_event_id
86+ ),
87+ isouter = True
88+ )
89+ .join (
90+ GroupStage ,
91+ sa .and_ (
92+ GroupStage .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
93+ Condition_Occurrence .condition_occurrence_id == GroupStage .modifier_of_event_id
94+ ),
95+ isouter = True
96+ )
97+ .join (
98+ GradeModifier ,
99+ sa .and_ (
100+ GradeModifier .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
101+ Condition_Occurrence .condition_occurrence_id == GradeModifier .modifier_of_event_id
102+ ),
103+ isouter = True
104+ )
105+ .join (
106+ SizeModifier ,
107+ sa .and_ (
108+ SizeModifier .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
109+ Condition_Occurrence .condition_occurrence_id == SizeModifier .modifier_of_event_id
110+ ),
111+ isouter = True
112+ )
113+ .join (
114+ LatModifier ,
115+ sa .and_ (
116+ LatModifier .modifier_of_field_concept_id == runtime .modifiers .modifier_fields .condition_occurrence_id ,
117+ Condition_Occurrence .condition_occurrence_id == LatModifier .modifier_of_event_id
118+ ),
119+ isouter = True
120+ )
121+ .join (condition_concept , condition_concept .concept_id == Condition_Occurrence .condition_concept_id )
122+ )
0 commit comments