Skip to content

Commit

Permalink
removes the old code that saves the lab tests in the intrahospital_api
Browse files Browse the repository at this point in the history
  • Loading branch information
fredkingham committed Jun 2, 2019
1 parent 4ef61a2 commit 5087680
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 74 deletions.
11 changes: 1 addition & 10 deletions intrahospital_api/management/commands/load_tests_from_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
from django.core.management.base import BaseCommand
from django.db import transaction
from opal import models
from elcid import models as emodels
from lab import models as lmodels
from intrahospital_api import update_lab_tests


Expand All @@ -18,14 +16,7 @@ def add_arguments(self, parser):

@transaction.atomic
def process(self, patient, results):
lmodels.LabTest.objects.filter(
patient=patient
).filter(
lab_test_type__in=[
emodels.UpstreamLabTest.get_display_name(),
emodels.UpstreamBloodCulture.get_display_name(),
]
).delete()
patient.lab_tests.all().delete()
update_lab_tests.update_tests(patient, results)

def handle(self, patient_id, file_name, *args, **options):
Expand Down
20 changes: 6 additions & 14 deletions intrahospital_api/test/test_load_tests_from_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,29 +56,21 @@ def test_loads_in_tests(self, json_load):
patient, _ = self.new_patient_and_episode_please()
command.process(patient, test_results)
self.assertEqual(
patient.labtest_set.count(), 1
patient.lab_tests.count(), 1
)
lab_test = patient.lab_tests.get()
self.assertEqual(
patient.labtest_set.first().extras["test_code"],
"b12_and_folate_screen"
lab_test.test_code, "b12_and_folate_screen"
)
expected_ordered = datetime.datetime(2018, 7, 19, 15, 4, 22)
self.assertEqual(
timezone.make_naive(patient.labtest_set.first().datetime_ordered),
timezone.make_naive(lab_test.datetime_ordered),
expected_ordered
)

def test_deletes_existing_tests(self, json_load):
command = load_tests_from_json.Command()
patient, _ = self.new_patient_and_episode_please()
patient.labtest_set.create(
lab_test_type=emodels.UpstreamLabTest.get_display_name()
)
patient.labtest_set.create(
lab_test_type=emodels.GramStain.get_display_name()
)
patient.lab_tests.create()
command.process(patient, [])
self.assertEqual(
patient.labtest_set.get().lab_test_type,
emodels.GramStain.get_display_name()
)
self.assertFalse(patient.lab_tests.exists())
39 changes: 21 additions & 18 deletions intrahospital_api/test/test_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.utils import timezone
from opal.core.test import OpalTestCase
from elcid import models as emodels
from plugins.labtests import models as lab_test_models
from intrahospital_api import models as imodels
from intrahospital_api import loader
from intrahospital_api.exceptions import BatchLoadError
Expand Down Expand Up @@ -124,7 +125,7 @@ def test_integration(self):
self.patient_2.id
)

upstream_patients = emodels.UpstreamLabTest.objects.values_list(
upstream_patients = lab_test_models.LabTest.objects.values_list(
"patient_id", flat=True
).distinct()
self.assertEqual(
Expand Down Expand Up @@ -538,16 +539,14 @@ def setUp(self, *args, **kwargs):
demographics = self.patient.demographics_set.first()
demographics.hospital_number = "123"
demographics.save()
emodels.UpstreamLabTest.objects.create(
patient=self.patient,
external_identifier="234",
extras=dict(
observations=[{
"observation_number": "345",
"result": "Pending"
}],
test_name="some_test"
)
lab_test = self.patient.lab_tests.create(
lab_number="234",
test_name="some_test"
)
lab_test.observation_set.create(
observation_value="Pending",
observation_number="345",

)
self.data_deltas = {
"demographics": {
Expand All @@ -567,26 +566,30 @@ def setUp(self, *args, **kwargs):
"observation_datetime": "19/07/2015 04:15:10",
"observation_name": "Aerobic bottle culture",
"observation_number": "345",
"observation_value": "123",
"reference_range": "3.5 - 11",
"result": "Positive"
"observation_value": "Positive"
}],
}]
}

def test_update_patient_from_batch_integration(self):
# check before its pending
observation = self.patient.lab_tests.get().observation_set.get()
self.assertEqual(
observation.observation_value, "Pending"
)

loader.update_patient_from_batch(
emodels.Demographics.objects.all(),
self.data_deltas
)
self.assertEqual(
self.patient.demographics_set.first().first_name, "Jane"
)
observation = self.patient.labtest_set.first().extras[
"observations"
][0]

# Confirm its been updated
observation = self.patient.lab_tests.get().observation_set.get()
self.assertEqual(
observation["result"], "Positive"
observation.observation_value, "Positive"
)


Expand Down
32 changes: 0 additions & 32 deletions intrahospital_api/update_lab_tests.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
from elcid import models as emodels
from plugins.labtests import models as lab_test_models
from elcid.utils import timing
from intrahospital_api import get_api

api = get_api()
Expand All @@ -13,39 +11,9 @@ def update_tests(patient, lab_tests):
updating.
"""
for lab_test in lab_tests:
lab_model = get_model_for_lab_test_type(patient, lab_test)
get_or_create_lab_test(patient, lab_test)
lab_model.update_from_api_dict(patient, lab_test, api.user)


def get_model_for_lab_test_type(patient, lab_test):
if lab_test["test_name"] == "BLOOD CULTURE":
mod = emodels.UpstreamBloodCulture
else:
mod = emodels.UpstreamLabTest

external_identifier = lab_test["external_identifier"]
lab_test_type = lab_test["test_name"]
filtered = mod.objects.filter(
external_identifier=external_identifier,
patient=patient
)
by_test_type = [
f for f in filtered if f.extras["test_name"] == lab_test_type
]

if len(by_test_type) > 1:
raise ValueError(
"multiple test types found for {} {}".format(
external_identifier, lab_test_type
)
)

if by_test_type:
return by_test_type[0]
else:
return mod()

def get_or_create_lab_test(patient, lab_test):
""""
Updates the plugins.labtest lab test if it exists
Expand Down

0 comments on commit 5087680

Please sign in to comment.