FHIR:Vissue-MM-2759 Search result examples

Uit informatiestandaarden
Naar navigatie springen Naar zoeken springen


Example: read support for all resources

The server offers read support for all resources that it has; each resource has a stable Resource.id and is accessible through a stable RESTful URL.

<Bundle xmlns="http://hl7.org/fhir" >
    <id value="example-id1"/> <!-- Bundle.id is not different than any other Resource.id -->
    <type value="searchset"/> <!-- Bundle.type should be set to 'searchset' -->
    <total value="1"/>        <!-- Bundle.total is set to the number of matches for the request -->
    <link>
        <relation value="self"/>
        <url value="https://example-server.nl/fhir/Observation?code=http://loinc.org|85354-9"/> <!-- The "self link" shows the search request as how it was understood by the server -->
    </link>
    <entry>
        <fullUrl value="https://example-server.nl/fhir/Observation/observation-123"/> <!-- The Observation resource is accessible through a RESTful URL, which is used for the fullUrl -->
        <resource>
            <Observation>
                <id value="observation-123" />
                ...
                <subject>
                    <reference value="Patient/patient-123" /> <!-- The Patient resource resides on the same server and can be referenced using a relative URL.
                                                                   An absolute URL could be used in this case as well. -->
                </subject>
            </Observation>
        </resource>
        <search>
            <mode value="match"/> <!-- Resources that match the search request have mode set to 'match' -->
        </search>
    </entry>
</Bundle>

Example 2: server only supports search

<Bundle xmlns="http://hl7.org/fhir" >
    <id value="example-id2"/> <!-- Bundle.id is not different than any other Resource.id -->
    <type value="searchset"/> <!-- Bundle.type should be set to 'searchset' -->
    <total value="1"/> <!-- Bundle.total is still set to the number of _matches_, even though more resources are included -->
    <link>
        <relation value="self"/>
        <url value="https://example-server.nl/fhir/Observation?code=http://loinc.org|85354-9"/> <!-- The "self link" reflects the search as it was understood by the server -->
    </link>
    <entry>
        <fullUrl value="urn:uuid:799c5790-f2aa-4045-8c19-a0d54773a059"/> <!-- The server doesn't support read, so the fullUrl is an ephemeral identifier that only has value within the Bundle -->
        <resource>
            <Observation>
                <!-- <id value="799c5790-f2aa-4045-8c19-a0d54773a059" /> it is recommended NOT to use the ephemeral id as Resource.id, but the opinions on this topic are divided -->
                ...
                <subject>
                    <reference value="urn:uuid:69aefd96-b37d-4323-866b-762536c03375" /> <!-- The server doesn't support read for the Patient resource, so it's included in the Bundle using an ephemeral fullUrl -->
                </subject>
            </Observation>
        </resource>
        <search>
            <mode value="match"/> <!-- Resources that match the search request have mode set to 'match' -->
        </search>
    </entry>
    <entry>
        <fullUrl value="urn:uuid:69aefd96-b37d-4323-866b-762536c03375"> <!-- The ephemeral fullUrl to refer the Patient resource -->
        <resource>
            <Patient>
                ....
            </Patient>
        </resource>
        <search>
            <mode value="include" />
        </search>
    </entry>
</Bundle>

Example 3: read support for some resources (hypothetical)

<Bundle xmlns="http://hl7.org/fhir" >
    <id value="example-id3"/> <!-- Bundle.id is not different than any other Resource.id -->
    <type value="searchset"/> <!-- Bundle.type should be set to 'searchset' -->
    <total value="1"/> <!-- Bundle.total is still set to the number of _matches_, even though more resources are included -->
    <link>
        <relation value="self"/>
        <url value="https://example-server.nl/fhir/Observation?code=http://loinc.org|85354-9"/> <!-- The "self link" reflects the search as it was understood by the server -->
    </link>
    <entry>
        <fullUrl value="urn:uuid:799c5790-f2aa-4045-8c19-a0d54773a059"/> <!-- The server doesn't support read, so the fullUrl is an ephemeral identifier that only has value within the Bundle -->
        <resource>
            <Observation>
                <!-- <id value="799c5790-f2aa-4045-8c19-a0d54773a059" /> it is recommended NOT to use the ephemeral id as Resource.id, but the opinions on this topic are divided -->
                ...
                <subject>
                    <reference value="http://example-server.nl/Patient/patient-123" /> <!-- The server supports read for the Patient resource, so an absolute URL could be used -->
                    <!-- <reference value="Patient/patient-123" /> However, a relative URL is invalid because it is relative to the fullUrl of the Observation resource.
                                                                   Since this fullUrl is not a RESTful URL, the relative URL cannot be resolved to an actual URL. -->
                </subject>
            </Observation>
        </resource>
        <search>
            <mode value="match"/> <!-- Resources that match the search request have mode set to 'match' -->
        </search>
    </entry>
</Bundle>