From c602bc21ed27fb8fd99c0337b3166bce48e49d63 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 14 Apr 2024 11:40:54 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/femr/labelers/ehrshot.py | 10 +---- src/femr/post_etl_pipelines/stanford.py | 2 +- src/femr/transforms/stanford.py | 55 +++++++++++++++---------- tests/labelers/test_CodeLabelers.py | 8 +--- 4 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/femr/labelers/ehrshot.py b/src/femr/labelers/ehrshot.py index 1ad8946..2697c96 100644 --- a/src/femr/labelers/ehrshot.py +++ b/src/femr/labelers/ehrshot.py @@ -95,10 +95,7 @@ def get_outpatient_visit_measurements( measurements: List[meds.Measurement] = [] for e in patient["events"]: for m in e["measurements"]: - if ( - m["metadata"]["table"] == "visit" - and m["code"] in admission_codes - ): + if m["metadata"]["table"] == "visit" and m["code"] in admission_codes: if isinstance(m["metadata"]["end"], str): m["metadata"]["end"] = datetime.datetime.fromisoformat(m["metadata"]["end"]) # Error checking @@ -120,10 +117,7 @@ def get_inpatient_admission_measurements( measurements: List[Tuple[datetime.datetime, meds.Measurement]] = [] for e in patient["events"]: for m in e["measurements"]: - if ( - m["metadata"]["table"] == "visit" - and m["code"] in admission_codes - ): + if m["metadata"]["table"] == "visit" and m["code"] in admission_codes: if isinstance(m["metadata"]["end"], str): m["metadata"]["end"] = datetime.datetime.fromisoformat(m["metadata"]["end"]) # Error checking diff --git a/src/femr/post_etl_pipelines/stanford.py b/src/femr/post_etl_pipelines/stanford.py index 7e18fd3..e0f9c3d 100644 --- a/src/femr/post_etl_pipelines/stanford.py +++ b/src/femr/post_etl_pipelines/stanford.py @@ -11,12 +11,12 @@ from femr.transforms import delta_encode, remove_nones from femr.transforms.stanford import ( + join_consecutive_day_visits, move_billing_codes, move_pre_birth, move_to_day_end, move_visit_start_to_first_event_start, switch_to_icd10cm, - join_consecutive_day_visits, ) diff --git a/src/femr/transforms/stanford.py b/src/femr/transforms/stanford.py index 4abae69..7f5ea4e 100644 --- a/src/femr/transforms/stanford.py +++ b/src/femr/transforms/stanford.py @@ -163,52 +163,63 @@ def join_consecutive_day_visits(patient: meds.Patient) -> meds.Patient: current_visit_end: datetime.datetime = None old_visit_id_2_new_visit_id: Dict[int, int] = {} for e_idx, event in enumerate(patient["events"]): - for m_idx, m in enumerate(event['measurements']): - if m['metadata']['visit_id'] is not None and m['metadata']['table'] == 'visit': + for m_idx, m in enumerate(event["measurements"]): + if m["metadata"]["visit_id"] is not None and m["metadata"]["table"] == "visit": # Found visit measurement - m_end = datetime.datetime.fromisoformat(m['metadata']['end']) if isinstance(m['metadata']['end'], str) else m['metadata']['end'] + m_end = ( + datetime.datetime.fromisoformat(m["metadata"]["end"]) + if isinstance(m["metadata"]["end"], str) + else m["metadata"]["end"] + ) if current_visit_id is None: # Start a new visit - current_visit_id = m['metadata']['visit_id'] + current_visit_id = m["metadata"]["visit_id"] current_visit_end = m_end - elif m['metadata']['visit_id'] == current_visit_id: + elif m["metadata"]["visit_id"] == current_visit_id: # Same visit, so update its end time current_visit_end = max(m_end, current_visit_end) - elif m['metadata']['visit_id'] in old_visit_id_2_new_visit_id: + elif m["metadata"]["visit_id"] in old_visit_id_2_new_visit_id: # We have already merged this visit, so update its end time current_visit_end = max(m_end, current_visit_end) else: - if (event['time'] - current_visit_end).days <= 1: + if (event["time"] - current_visit_end).days <= 1: # Merge the two visits current_visit_end = max(m_end, current_visit_end) else: # Start a new visit - current_visit_id = m['metadata']['visit_id'] + current_visit_id = m["metadata"]["visit_id"] current_visit_end = m_end - old_visit_id_2_new_visit_id[m['metadata']['visit_id']] = { - 'visit_id' : current_visit_id, - 'end' : current_visit_end, + old_visit_id_2_new_visit_id[m["metadata"]["visit_id"]] = { + "visit_id": current_visit_id, + "end": current_visit_end, } drop_idxs: List[int] = [] events = [] for e_idx, event in enumerate(patient["events"]): - for m_idx, m in enumerate(event['measurements']): - if m['metadata']['visit_id']: - if m['metadata']['table'] == 'visit': + for m_idx, m in enumerate(event["measurements"]): + if m["metadata"]["visit_id"]: + if m["metadata"]["table"] == "visit": # If this is a visit event, update its end time and delete (if not original visit_id) - patient['events'][e_idx]['measurements'][m_idx]['metadata']['end'] = old_visit_id_2_new_visit_id[m['metadata']['visit_id']]['end'] - if old_visit_id_2_new_visit_id[m['metadata']['visit_id']]['visit_id'] != m['metadata']['visit_id']: + patient["events"][e_idx]["measurements"][m_idx]["metadata"]["end"] = old_visit_id_2_new_visit_id[ + m["metadata"]["visit_id"] + ]["end"] + if old_visit_id_2_new_visit_id[m["metadata"]["visit_id"]]["visit_id"] != m["metadata"]["visit_id"]: drop_idxs.append(m_idx) else: # Update the visit_id - patient['events'][e_idx]['measurements'][m_idx]['metadata']['visit_id'] = old_visit_id_2_new_visit_id[m['metadata']['visit_id']]['visit_id'] - events.append({ - 'time' : event['time'], - 'measurements' : [m for m_idx, m in enumerate(event['measurements']) if m_idx not in drop_idxs], - }) - patient['events'] = events + patient["events"][e_idx]["measurements"][m_idx]["metadata"]["visit_id"] = ( + old_visit_id_2_new_visit_id[m["metadata"]["visit_id"]]["visit_id"] + ) + events.append( + { + "time": event["time"], + "measurements": [m for m_idx, m in enumerate(event["measurements"]) if m_idx not in drop_idxs], + } + ) + patient["events"] = events return patient + def move_billing_codes(patient: meds.Patient) -> meds.Patient: """Move billing codes to the end of each visit. diff --git a/tests/labelers/test_CodeLabelers.py b/tests/labelers/test_CodeLabelers.py index 397d343..aa74551 100644 --- a/tests/labelers/test_CodeLabelers.py +++ b/tests/labelers/test_CodeLabelers.py @@ -6,12 +6,8 @@ from femr_test_tools import EventsWithLabels, run_test_for_labeler from femr.labelers import TimeHorizon -from femr.labelers.omop import ( - CodeLabeler, - LupusCodeLabeler, - MortalityCodeLabeler, - OMOPConceptCodeLabeler, -) +from femr.labelers.omop import CodeLabeler, LupusCodeLabeler, MortalityCodeLabeler, OMOPConceptCodeLabeler + # from femr.labelers.ehrshot import ( # AnemiaCodeLabeler, # HyperkalemiaCodeLabeler,