Skip to content

Commit

Permalink
Merge pull request #1066 from openhealthcare/add-patient-id
Browse files Browse the repository at this point in the history
add in the patient id to episode subrecords
  • Loading branch information
davidmiller committed Apr 5, 2017
2 parents 4cb11d9 + 50de14b commit e439c52
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
21 changes: 15 additions & 6 deletions opal/core/search/extract.py
Expand Up @@ -56,19 +56,18 @@ def get_row(self, instance):


class PatientSubrecordCsvRenderer(CsvRenderer):
def get_headers(self):
headers = super(PatientSubrecordCsvRenderer, self).get_headers()
headers.insert(0, "episode_id")
return headers

def get_field_names_to_render(self):
field_names = super(
PatientSubrecordCsvRenderer, self
).get_field_names_to_render()
field_names.remove("id")
field_names.remove("patient_id")
return field_names

def get_headers(self):
headers = super(PatientSubrecordCsvRenderer, self).get_headers()
headers.insert(0, "episode_id")
return headers

def get_row(self, instance, episode_id):
row = super(PatientSubrecordCsvRenderer, self).get_row(instance)
row.insert(0, text_type(episode_id))
Expand All @@ -83,6 +82,16 @@ def get_field_names_to_render(self):
field_names.remove("id")
return field_names

def get_headers(self):
headers = super(EpisodeSubrecordCsvRenderer, self).get_headers()
headers.insert(0, "patient_id")
return headers

def get_row(self, instance):
row = super(EpisodeSubrecordCsvRenderer, self).get_row(instance)
row.insert(0, text_type(instance.episode.patient_id))
return row


def subrecord_csv(episodes, subrecord, file_name):
"""
Expand Down
15 changes: 9 additions & 6 deletions opal/tests/test_search_extract.py
Expand Up @@ -101,6 +101,7 @@ def test_no_episodes(self, csv):
headers = csv.writer().writerow.call_args_list[0][0][0]
self.assertEqual(csv.writer().writerow.call_count, 1)
expected_headers = [
'patient_id',
'created',
'updated',
'created_by_id',
Expand All @@ -124,6 +125,7 @@ def test_with_subrecords(self, csv):
headers = csv.writer().writerow.call_args_list[0][0][0]
row = csv.writer().writerow.call_args_list[1][0][0]
expected_headers = [
'patient_id',
'created',
'updated',
'created_by_id',
Expand All @@ -132,7 +134,7 @@ def test_with_subrecords(self, csv):
'name'
]
expected_row = [
u'None', u'None', u'None', u'None', str(self.episode.id), u'blue'
"1", 'None', 'None', 'None', 'None', str(self.episode.id), u'blue'
]
self.assertEqual(headers, expected_headers)
self.assertEqual(row, expected_row)
Expand Down Expand Up @@ -170,6 +172,7 @@ def test_strips_pid(self, csv):
'updated',
'created_by_id',
'updated_by_id',
'patient_id',
'hospital_number',
'nhs_number',
'date_of_birth',
Expand All @@ -182,7 +185,7 @@ def test_strips_pid(self, csv):
self.assertTrue(h in headers)

expected_row = [
'1', u'None', u'None', u'None', u'None', u'12345678',
'1', u'None', u'None', u'None', u'None', '1', u'12345678',
u'None', u'1976-01-01', u'False', u'', u''
]
self.assertEqual(row, expected_row)
Expand Down Expand Up @@ -293,15 +296,15 @@ def test_get_header(self, field_names_to_extract):
"patient_id", "name", "consistency_token", "id"
]
renderer = extract.PatientSubrecordCsvRenderer(PatientColour)
self.assertEqual(["episode_id", "name"], renderer.get_headers())
self.assertEqual(["episode_id", "patient_id", "name"], renderer.get_headers())

def test_get_row(self, field_names_to_extract):
field_names_to_extract.return_value = [
"patient_id", "name", "consistency_token", "id"
]
renderer = extract.PatientSubrecordCsvRenderer(PatientColour)
rendered = renderer.get_row(self.patient_colour, self.episode.id)
self.assertEqual(["1", u("blue")], rendered)
self.assertEqual(["1", "1", "blue"], rendered)


@patch.object(Colour, "_get_fieldnames_to_extract")
Expand All @@ -318,12 +321,12 @@ def test_get_header(self, field_names_to_extract):
"episode_id", "name", "consistency_token", "id"
]
renderer = extract.EpisodeSubrecordCsvRenderer(Colour)
self.assertEqual([u("episode_id"), u("name")], renderer.get_headers())
self.assertEqual(["patient_id", "episode_id", "name"], renderer.get_headers())

def test_get_row(self, field_names_to_extract):
field_names_to_extract.return_value = [
"episode_id", "name", "consistency_token", "id"
]
renderer = extract.EpisodeSubrecordCsvRenderer(Colour)
rendered = renderer.get_row(self.colour)
self.assertEqual(["1", u("blue")], rendered)
self.assertEqual(["1", "1", "blue"], rendered)

0 comments on commit e439c52

Please sign in to comment.