From 7da7b31b43b1f4e69850ba5d907ce1c8b9b07294 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 14 Apr 2020 15:36:46 +0200 Subject: [PATCH] import of the new format from tns --- .../importer/csv_tns_visit_import_reader.py | 20 +++++++++++++++---- .../tests/data/tns_vouchers_lab_id_import.csv | 4 ++++ .../test_tns_csv_visit_import_reader.py | 19 ++++++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 smash/web/tests/data/tns_vouchers_lab_id_import.csv diff --git a/smash/web/importer/csv_tns_visit_import_reader.py b/smash/web/importer/csv_tns_visit_import_reader.py index eb20cae0..8bc4942a 100644 --- a/smash/web/importer/csv_tns_visit_import_reader.py +++ b/smash/web/importer/csv_tns_visit_import_reader.py @@ -1,3 +1,4 @@ +# coding=utf-8 import csv import datetime import logging @@ -56,7 +57,9 @@ class TnsCsvVisitImportReader: else: study_subject = study_subjects[0] date = self.extract_date(data['dateofvisit']) - location = self.extract_location(data['adressofvisit']) + + location = self.extract_location(data) + visit_number = data['visit_id'] visit_number = int(visit_number) + 1 @@ -125,9 +128,18 @@ class TnsCsvVisitImportReader: logger.warn("Invalid date: " + text) return result - def extract_location(self, text): - # type: (unicode) -> Location - + def extract_location(self, data): + # type: (dict) -> Location + + text = data.get('adressofvisit', None) + if text is None: + text = data['lab_id'] + if text.startswith('lab-reunis'): + text = u"Laboratoires réunis" + if text.startswith('lab-ketterthill'): + text = u"Ketterthill" + if text.startswith('lab-bionex'): + text = u"BioneXt" locations = Location.objects.filter(name=text) if len(locations) > 0: return locations[0] diff --git a/smash/web/tests/data/tns_vouchers_lab_id_import.csv b/smash/web/tests/data/tns_vouchers_lab_id_import.csv new file mode 100644 index 00000000..5b748f97 --- /dev/null +++ b/smash/web/tests/data/tns_vouchers_lab_id_import.csv @@ -0,0 +1,4 @@ +donor_id;visit_id;dateofvisit;lab_id +cov-000111;0;20200410;lab-reunis-15 +cov-222333;0;20200410;lab-ketterthill-18 +cov-444444;0;20200410;lab-bionextpd-17 diff --git a/smash/web/tests/importer/test_tns_csv_visit_import_reader.py b/smash/web/tests/importer/test_tns_csv_visit_import_reader.py index 44b62187..351988cd 100644 --- a/smash/web/tests/importer/test_tns_csv_visit_import_reader.py +++ b/smash/web/tests/importer/test_tns_csv_visit_import_reader.py @@ -132,6 +132,25 @@ class TestTnsCsvSubjectReader(TestCase): self.assertEquals(1, self.get_warnings_count()) + def test_load_data_with_lab_id(self): + filename = get_resource_path('tns_vouchers_lab_id_import.csv') + visits = TnsCsvVisitImportReader().load_data(filename) + self.assertEqual(3, len(visits)) + + visit = Visit.objects.filter(id=visits[0].id)[0] + appointment = Appointment.objects.filter(visit=visit)[0] + self.assertEqual(u"Laboratoires réunis", appointment.location.name) + + visit = Visit.objects.filter(id=visits[1].id)[0] + appointment = Appointment.objects.filter(visit=visit)[0] + self.assertEqual(u"Ketterthill", appointment.location.name) + + visit = Visit.objects.filter(id=visits[2].id)[0] + appointment = Appointment.objects.filter(visit=visit)[0] + self.assertEqual(u"BioneXt", appointment.location.name) + + self.assertEquals(3, self.get_warnings_count()) + def get_warnings_count(self): if "WARNING" in self.warning_counter.level2count: return self.warning_counter.level2count["WARNING"] -- GitLab