diff --git a/smash/web/importer/csv_tns_visit_import_reader.py b/smash/web/importer/csv_tns_visit_import_reader.py index eb20cae09f93abf78f67fecbfbb07a1d3be82cf7..8bc4942a9639dff41e4885e24cd727543360720e 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 0000000000000000000000000000000000000000..5b748f9796060262168f065c792a68396a512906 --- /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 44b62187a96d6cbb78f58dc9249609a6cbb9bc1a..351988cd9ef810eb8229c80ff4b55a60811f6f14 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"]