コード例 #1
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_identifier(store: FHIRStore):
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("managingOrganization:identifier", "98765")])
    )
    assert (
        result.content["entry"][0]["resource"]["managingOrganization"]["identifier"][0]["value"]
        == "98765"
    )
コード例 #2
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_param_modifier_str_not(store: FHIRStore):
    """Checks that "not" string modifier works
    """
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("name.family:not", "Donald")])
    )
    assert all(
        element["resource"]["name"][0]["family"] != "Donald" for element in result.content["entry"]
    )
コード例 #3
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_two_elements(store: FHIRStore):
    result = store.comprehensive_search("Patient", ImmutableMultiDict([("_elements", "birthDate")]))
    assert result.content["total"] == 3
    assert result.content["tag"]["code"] == "SUBSETTED"
    assert result.content["entry"] == [
        {"resource": {}, "search": {"mode": "match"}},
        {"resource": {"birthDate": "1932-09-24"}, "search": {"mode": "match"}},
        {"resource": {"birthDate": "1974-12-25"}, "search": {"mode": "match"}},
    ]
コード例 #4
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_param_simple(store: FHIRStore):
    """Checks simple one parameter search
    """
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("identifier.value", "654321")])
    )
    assert len(result.content["entry"]) == 1
    assert all(
        element["resource"]["identifier"][0]["value"] == "654321"
        for element in result.content["entry"]
    )
コード例 #5
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_summary_text(store: FHIRStore):
    result = store.comprehensive_search("Patient", ImmutableMultiDict([("_summary", "text")]))
    assert result.content["total"] == 3
    assert result.content["tag"]["code"] == "SUBSETTED"
    assert result.content["entry"] == [
        {
            "resource": {
                "meta": {
                    "tag": [
                        {
                            "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
                            "code": "HTEST",
                            "display": "test health data",
                        }
                    ]
                },
                "id": "pat1",
                "text": {
                    "div": '<div xmlns="http://www.w3.org/1999/xhtml">\n      \n      <p>Patient Donald DUCK @ Acme Healthcare, Inc. MR = 654321</p>\n    \n    </div>',
                    "status": "generated",
                },
            },
            "search": {"mode": "match"},
        },
        {
            "resource": {
                "id": "xcda",
                "text": {
                    "div": '<div xmlns="http://www.w3.org/1999/xhtml">\n      \n      <p>Henry Levin the 7th</p>\n    \n    </div>',
                    "status": "generated",
                },
            },
            "search": {"mode": "match"},
        },
        {
            "resource": {
                "meta": {
                    "tag": [
                        {
                            "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
                            "code": "HTEST",
                            "display": "test health data",
                        }
                    ]
                },
                "id": "example",
                "text": {
                    "div": '<div xmlns="http://www.w3.org/1999/xhtml">\n\t\t\t<table>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Name</td>\n\t\t\t\t\t\t<td>Peter James \n              <b>Chalmers</b> (&quot;Jim&quot;)\n            </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Address</td>\n\t\t\t\t\t\t<td>534 Erewhon, Pleasantville, Vic, 3999</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Contacts</td>\n\t\t\t\t\t\t<td>Home: unknown. Work: (03) 5555 6473</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Id</td>\n\t\t\t\t\t\t<td>MRN: 12345 (Acme Healthcare)</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>',
                    "status": "generated",
                },
            },
            "search": {"mode": "match"},
        },
    ]
コード例 #6
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_param_modifier_str_exact(store: FHIRStore):
    """Checks that "exact" string modifier works
    """
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("name.family:exact", "Donald")])
    )
    assert len(result.content["entry"]) == 1
    assert all(
        element["resource"]["name"][0]["family"] == "Donald" for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["family"] != ("Chalmers" or "Levin")
        for element in result.content["entry"]
    )
コード例 #7
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_handle_pipe(store: FHIRStore):
    result = store.comprehensive_search(
        "MedicationRequest",
        ImmutableMultiDict([("contained.code.coding", "http://snomed.info/sct|324252006")]),
    )
    assert result.content["entry"][0]["resource"]["id"] == "medrx0302"
    assert (
        result.content["entry"][0]["resource"]["contained"][0]["code"]["coding"][0]["system"]
        == "http://snomed.info/sct"
    )
    assert (
        result.content["entry"][0]["resource"]["contained"][0]["code"]["coding"][0]["code"]
        == "324252006"
    )
コード例 #8
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_param_multiple(store: FHIRStore):
    """Checks that multiple elements of one parameter are queried
    """
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("name.family", "Chalmers,Levin")])
    )
    assert len(result.content["entry"]) == 2
    assert any(
        element["resource"]["name"][0]["family"] == ("Chalmers" or "Levin")
        for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["family"] != "Donald" for element in result.content["entry"]
    )
コード例 #9
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_params_and(store: FHIRStore):
    """Checks one parameter "and" search
    """
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("name.given", "Peter,James")])
    )
    assert len(result.content["entry"]) == 1
    assert any(
        element["resource"]["name"][0]["given"] == "Peter" or "James"
        for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["given"] != "Henry" for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["given"] != "Duck" for element in result.content["entry"]
    )
コード例 #10
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_one_param_modifier_str_contains(store: FHIRStore):
    """Checks that "contains" string modifier works
    """
    result = store.comprehensive_search(
        "Patient",
        ImmutableMultiDict([("managingOrganization.reference:contains", "Organization")]),
    )
    assert len(result.content["entry"]) == 3
    assert any(
        element["resource"]["managingOrganization"]["reference"] == "Organization/1"
        for element in result.content["entry"]
    )
    assert any(
        element["resource"]["managingOrganization"]["reference"]
        != "Organization/2.16.840.1.113883.19.5"
        for element in result.content["entry"]
    )
コード例 #11
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_and_or(store: FHIRStore):
    """Checks two parameter "and,or" search
    """
    result = store.comprehensive_search(
        "Patient",
        ImmutableMultiDict([("name.family", "Levin,Chalmers"), ("identifier.value", "12345")]),
    )
    assert len(result.content["entry"]) == 2
    assert all(
        element["resource"]["identifier"][0]["value"] != "654321"
        for element in result.content["entry"]
    )
    assert all(
        element["resource"]["identifier"][0]["value"] == "12345"
        for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["family"] == "Levin" or "Chalmers"
        for element in result.content["entry"]
    )
    assert all(
        element["resource"]["name"][0]["family"] != "Donald" for element in result.content["entry"]
    )
コード例 #12
0
def test_search_bad_resource_type(store: FHIRStore):
    """search() raises error if resource type is unknown"""

    with raises(NotFoundError, match='unsupported FHIR resource: "unknown"'):
        store.comprehensive_search(resource_type="unknown", args={})
コード例 #13
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_count_all(store: FHIRStore):
    result = store.comprehensive_search("Patient", ImmutableMultiDict([("_summary", "count")]))
    assert result.content["total"] == 3
    assert result.content["tag"]["code"] == "SUBSETTED"
コード例 #14
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_medicationrequest(store: FHIRStore, insert_medicationrequest):
    """Check that medicationrequest was inserted properly
    """
    result = store.comprehensive_search("MedicationRequest", {})
    assert result.content["total"] == 2
コード例 #15
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_no_parameters(store: FHIRStore):
    """Checks that all elements of the resource are returned
    """
    result = store.comprehensive_search("Patient", ImmutableMultiDict([]))
    assert len(result.content["entry"]) == 3
コード例 #16
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_search_output_type(store: FHIRStore, insert_patient):
    """Check that the output type is correct
    """
    result = store.comprehensive_search("Patient", ImmutableMultiDict([]))
    assert result.content["resource_type"] == "Bundle"
コード例 #17
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_includes(store: FHIRStore):
    result = store.comprehensive_search(
        "MedicationRequest", ImmutableMultiDict([("_include", "MedicationRequest:subject")]),
    )
    assert len(result.content["entry"]) == 4
コード例 #18
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_sort_desc(store: FHIRStore):
    result = store.comprehensive_search("Patient", ImmutableMultiDict([("_sort", "-birthDate")]))
    assert (
        result.content["entry"][0]["resource"]["birthDate"]
        >= result.content["entry"][1]["resource"]["birthDate"]
    )
コード例 #19
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_count_medicationrequest(store: FHIRStore):
    result = store.comprehensive_search(
        "MedicationRequest", ImmutableMultiDict([("_summary", "count")])
    )
    assert result.content["total"] == 2
コード例 #20
0
ファイル: test_search.py プロジェクト: joeportela/pyfhirstore
def test_count_some(store: FHIRStore):
    result = store.comprehensive_search(
        "Patient", ImmutableMultiDict([("_summary", "count"), ("identifier.value", "ne12345")]),
    )
    assert result.content["total"] == 1
    assert result.content["tag"]["code"] == "SUBSETTED"