def test_procedureGET(self): self.add_procedure() self.login() rv = self.client.get('/api/patient/%s/procedure' % TEST_USER_ID) data = json.loads(rv.data) self.assertEquals( '367336001', data['entry'][0]['resource']['code']['coding'][0]['code']) self.assertEquals( 'Chemotherapy', data['entry'][0]['resource']['code']['coding'][0]['display']) self.assertEquals( Reference.patient(TEST_USER_ID).as_fhir()['reference'], data['entry'][0]['resource']['meta']['by']['reference']) last_updated = FHIR_datetime.parse( data['entry'][0]['resource']['meta']['lastUpdated']) self.assertAlmostEquals(datetime.utcnow(), last_updated, delta=timedelta(seconds=5)) start_time = FHIR_datetime.parse( data['entry'][0]['resource']['performedPeriod']['start']) self.assertAlmostEquals(datetime.utcnow(), start_time, delta=timedelta(seconds=5)) self.assertEquals(current_app.config.metadata.version, data['entry'][0]['resource']['meta']['version'])
def test_microsecond_truncation(): """Microseconds should be rounded in FHIR output""" sample = datetime.utcnow() sample = sample.replace(tzinfo=pytz.utc) if sample.microsecond == 0: sample = sample.replace(microsecond=1234567890) assert sample.isoformat() != FHIR_datetime.as_fhir(sample) expected = sample.replace(microsecond=0) assert expected.isoformat() == FHIR_datetime.as_fhir(sample)
def test_tz_aware_output(): """FHIR_datetime.as_fhir() should always be tz aware (UTC)""" unaware = datetime(2016, 7, 15, 9, 20, 37, 0) # generate fhir - expect UTC tz info at end isostring = FHIR_datetime.as_fhir(unaware) assert isostring[-6:] == '+00:00'
def test_tz_aware_conversion(): eastern = pytz.timezone('US/Eastern') aware = datetime(2016, 7, 15, 9, 20, 37, 0, eastern) parsed = FHIR_datetime.parse(aware.strftime("%Y-%m-%dT%H:%M:%S%z")) # FHIR_datetime converts to UTC and strips the tzinfo # for safe comparisons with other tz unaware strings assert parsed.tzinfo is None # Add it back in to confirm values match parsed = parsed.replace(tzinfo=pytz.utc) assert aware == parsed
def test_procedureGET(self): self.add_procedure() self.login() response = self.client.get('/api/patient/%s/procedure' % TEST_USER_ID) data = response.json assert ('367336001' == data['entry'][0]['resource']['code']['coding'][0]['code']) assert ('Chemotherapy' == data['entry'][0]['resource']['code']['coding'][0]['display']) assert (Reference.patient(TEST_USER_ID).as_fhir()['reference'] == data['entry'][0]['resource']['meta']['by']['reference']) last_updated = FHIR_datetime.parse( data['entry'][0]['resource']['meta']['lastUpdated']) self.assertAlmostEqual( datetime.utcnow(), last_updated, delta=timedelta(seconds=5)) start_time = FHIR_datetime.parse( data['entry'][0]['resource']['performedPeriod']['start']) self.assertAlmostEqual( datetime.utcnow(), start_time, delta=timedelta(seconds=5)) assert (current_app.config.metadata['version'] == data['entry'][0]['resource']['meta']['version'])
def test_tz_unaware_conversion(self): unaware = datetime(2016, 7, 15, 9, 20, 37, 0) parsed = FHIR_datetime.parse(unaware.strftime("%Y-%m-%dT%H:%M:%S")) self.assertEquals(unaware, parsed)
def test_tz_aware_conversion(self): eastern = pytz.timezone('US/Eastern') aware = datetime(2016, 7, 15, 9, 20, 37, 0, eastern) parsed = FHIR_datetime.parse(aware.strftime("%Y-%m-%dT%H:%M:%S%z")) self.assertEquals(aware, parsed) self.assertEquals(pytz.utc, parsed.tzinfo)
def test_tz_unaware_conversion(): unaware = datetime(2016, 7, 15, 9, 20, 37, 0) parsed = FHIR_datetime.parse(unaware.strftime("%Y-%m-%dT%H:%M:%S")) assert unaware == parsed