Source code for fhirpack.utils_test
import tests.data as td
import fhirpack as fp
import pytest as pt
import numpy as np
import pandas as pd
import tests as ts
# this is an example of a test that uses
# the fixture defined at /conftest.py with session scope
# def test_usesGlobalSessionFixture(globalSessionFixture):
# print(globalSessionFixture)
# assert 1 == 1
[docs]def test_keys_forPatients():
input = td.jsonFile("fhirpack.utils.keys.forPatients.00.in")
expected = td.jsonFile("fhirpack.utils.keys.forPatients.00.out")
result = list(fp.utils.keys(input))
ok = result == expected
assert ok
[docs]def test_valuesForKeys_onlyDicts():
"""only dictionaries in input data"""
input = td.jsonFile("fhirpack.utils.valuesForKeys.patient.00.in")
expected = ["Boston", "Springfield"]
result = list(fp.utils.valuesForKeys(input, ["city"]))
ok = result == expected
assert ok
[docs]def test_valuesForKeys_dictsAndLists():
"""only dicts in input data"""
input = td.jsonFile("fhirpack.utils.valuesForKeys.patient.00.in")
expected = [
"https://smarthealthit.org/tags",
"urn:oid:2.16.840.1.113883.6.238",
"urn:oid:2.16.840.1.113883.6.238",
9.195822017359179,
18.804177982640823,
"https://github.com/synthetichealth/synthea",
"http://terminology.hl7.org/CodeSystem/v2-0203",
"http://hospital.smarthealthit.org",
"http://terminology.hl7.org/CodeSystem/v2-0203",
"http://hl7.org/fhir/sid/us-ssn",
"http://terminology.hl7.org/CodeSystem/v2-0203",
"urn:oid:2.16.840.1.113883.4.3.25",
"http://terminology.hl7.org/CodeSystem/v2-0203",
"http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"phone",
42.115454,
-72.539978,
"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"urn:ietf:bcp:47",
]
result = list(fp.utils.valuesForKeys(input, ["system", "valueDecimal"]))
ok = result == expected
assert ok
[docs]def test_guessBufferMIMEType(globalSessionFixture):
assert 1 == 1
[docs]@pt.mark.reqdocker
@pt.mark.parametrize("input", [np.nan, None, pd.NA, np.NaN])
def test_validateFrame_NullValues(input, packDocker):
d = packDocker
p = d.getPatients(["1"])
nullValues = fp.base.Frame({"data": [input]})
brokenFrame = pd.concat([p, nullValues])
with pt.raises(fp.exceptions.InvalidInputDataException):
fp.utils.validateFrame(brokenFrame)
[docs]def test_validateFrame_Unconnected(packUnconnected):
d = packUnconnected
d.client = None
dataPath = f"{ts.TEST_DATA_DIR}/fhirpack.extraction.base.getFromFiles.patient.00.in"
p = d.getFromFiles([dataPath]).data[0]
with pt.raises(fp.exceptions.ServerConnectionException):
fp.utils.validateFrame(p)