From 5a68a7f135e75a4bcd63fcbb46be2ae77a425510 Mon Sep 17 00:00:00 2001 From: gkennos Date: Tue, 4 Aug 2026 09:39:33 +1000 Subject: [PATCH] modality intent join fix --- CHANGELOG.md | 5 ++++- pyproject.toml | 2 +- .../alchemy/episodes/modality_intent_join.py | 20 +++++++++---------- uv.lock | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28699e3..3343af6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -195,4 +195,7 @@ - ecog_dx_mv now also carries value_as_concept_id: ECOG performance status is a precoordinated-concept answer (OHDSI convention), not a plain number, so downstream measure logic needs the concept alongside (or instead of) value_as_number ## 0.5.3 -- adding separate distinct handling for joining surgeries in with episodes when there is an explicit link to a specific diagnosis \ No newline at end of file +- adding separate distinct handling for joining surgeries in with episodes when there is an explicit link to a specific diagnosis + +## 0.5.4 +- fix for episode intent - this actually modifies procedure, not episode \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 7aafd7a..435d8ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "omop-constructs" -version = "0.5.3" +version = "0.5.4" description = "For building complex constructs on top of the omop-alchemy library." readme = "README.md" authors = [ diff --git a/src/omop_constructs/alchemy/episodes/modality_intent_join.py b/src/omop_constructs/alchemy/episodes/modality_intent_join.py index 6dff5ea..e10e7db 100644 --- a/src/omop_constructs/alchemy/episodes/modality_intent_join.py +++ b/src/omop_constructs/alchemy/episodes/modality_intent_join.py @@ -1,10 +1,8 @@ import sqlalchemy as sa -import sqlalchemy.orm as so -from omop_alchemy.cdm.model import Episode, Episode_Event, Measurement, Drug_Exposure, Procedure_Occurrence, Concept +from omop_alchemy.cdm.model import Episode, Episode_Event, Drug_Exposure, Procedure_Occurrence from omop_semantics.runtime.default_valuesets import runtime from ...semantics import registry - -intent_concept = so.aliased(Concept, name='intent_concept') +from ..modifiers.procedure_modifier_mv import ModifiedProcedure modality_sact = ( sa.select( @@ -47,19 +45,19 @@ Episode.episode_start_date, Episode.episode_end_date, Episode.episode_parent_id, - Measurement.measurement_concept_id, - intent_concept.concept_name, + ModifiedProcedure.intent_concept_id.label('measurement_concept_id'), + ModifiedProcedure.intent_concept.label('concept_name'), ) .join( - Measurement, + Episode_Event, sa.and_( - Measurement.measurement_event_id==Episode.episode_id, - Measurement.meas_event_field_concept_id==runtime.modifiers.modifier_fields.episode_id + Episode_Event.episode_id==Episode.episode_id, + Episode_Event.episode_event_field_concept_id==runtime.modifiers.modifier_fields.procedure_occurrence_id ) ) - .join(intent_concept, intent_concept.concept_id==Measurement.measurement_concept_id) + .join(ModifiedProcedure, ModifiedProcedure.procedure_occurrence_id==Episode_Event.event_id) .filter( - Measurement.measurement_concept_id.in_(runtime.treatment_modifiers.treatment_intent.ids) + ModifiedProcedure.intent_concept_id.in_(runtime.treatment_modifiers.treatment_intent.ids) ) .subquery() ) diff --git a/uv.lock b/uv.lock index cc4e21a..8015143 100644 --- a/uv.lock +++ b/uv.lock @@ -1542,7 +1542,7 @@ postgres = [ [[package]] name = "omop-constructs" -version = "0.5.3" +version = "0.5.4" source = { editable = "." } dependencies = [ { name = "oa-configurator" },