Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Apr 14, 2024
1 parent d34c356 commit c602bc2
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 37 deletions.
10 changes: 2 additions & 8 deletions src/femr/labelers/ehrshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/femr/post_etl_pipelines/stanford.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)


Expand Down
55 changes: 33 additions & 22 deletions src/femr/transforms/stanford.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
8 changes: 2 additions & 6 deletions tests/labelers/test_CodeLabelers.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit c602bc2

Please sign in to comment.