IBM fhir-server Log

Russell Bateman
June 2020

Here's my experience later after learning a few more things.

russ@gondolin /home2/FHIR/runtime $ ./fhir-server/wlp/bin/server start fhir-server

Starting server fhir-server.
Server fhir-server started with process ID 14422.
russ@gondolin /home2/FHIR/runtime $ netstat -a | grep 14422
russ@gondolin /home2/FHIR/runtime $ netstat -tulpn | grep 14422
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 127.0.0.1:47919         :::*                    LISTEN      14422/java
tcp6       0      0 :::9443                 :::*                    LISTEN      14422/java
tcp6       0      0 :::36775                :::*                    LISTEN      14422/java
russ@gondolin /home2/FHIR/runtime $ pwdx 14422
14422: /media/home2/FHIR/runtime/fhir-server/wlp/usr/servers/fhir-server
russ@gondolin /home2/FHIR/runtime $ telnet localhost 9443
Trying 127.0.0.1...
Escape character is '^]'.
^CConnection closed by foreign host.
russ@gondolin /home2/FHIR/runtime $ curl -k \
> -H 'Content-Type: application/json' \
> -u 'fhiruser:change-password' 'https://localhost:9443/fhir-server/api/v4/Patient' -d '
> {
>     "resourceType" : "Patient",
>     "active" : true,
>     "name" : [ {
>         "family" : "Munster",
>         "given" : [ "Herman" ]
>     } ],
>     "gender" : "male"
> }
> '

Whereupon, I went here in a browser:
https://localhost:9443/fhir-server/api/v4/Patient
Advanced
Proceed to localhost (unsafe)
fhiruser/change-password
Sign in
<Bundle xmlns="http://hl7.org/fhir">
  <id value="e83cc5d4-f0df-42e1-920c-2916fc9d4645"/>
  <type value="searchset"/>
  <total value="2"/>
  <link>
    <relation value="self"/>
    <url value="https://localhost:9443/fhir-server/api/v4/Patient?_count=10&_page=1"/>
  </link>
  <entry>
    <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/21163177-49a1-44bd-b93f-d60a995f4ac6"/>
    <resource>
      <Patient>
        <id value="21163177-49a1-44bd-b93f-d60a995f4ac6"/>
        <meta>
          <versionId value="1"/>
          <lastUpdated value="2020-06-17T15:45:20.589Z"/>
        </meta>
        <active value="true"/>
        <name>
          <family value="Ortiz"/>
          <given value="David"/>
        </name>
        <gender value="male"/>
      </Patient>
    </resource>
  </entry>
  <entry>
    <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/5dfe7ef4-eeac-4c53-a5df-4b3a2e2adf22"/>
    <resource>
      <Patient>
        <id value="5dfe7ef4-eeac-4c53-a5df-4b3a2e2adf22"/>
        <meta>
          <versionId value="1"/>
          <lastUpdated value="2020-06-26T03:48:43.478Z"/>
        </meta>
        <active value="true"/>
        <name>
          <family value="Munster"/>
          <given value="Herman"/>
        </name>
        <gender value="male"/>
      </Patient>
    </resource>
  </entry>
</Bundle>

This proves that my IMB fhir-server is up and running.

</> RESTED experience

</> RESTED is a browser utility similar to Postman. Let's remember that, at this point, we have authenticated to the server.

GET https://localhost:9443/fhir-server/api/v4/Patient
Accept         application/json

200
{
  "resourceType": "Bundle",
  "id": "227351d4-730b-42dd-b9b9-07b38b33e044",
  "type": "searchset",
  "total": 22,
  "link": [
    {
      "relation": "self",
      "url": "https://localhost:9443/fhir-server/api/v4/Patient?_count=10&_page=1"
    },
    {
      "relation": "next",
      "url": "https://localhost:9443/fhir-server/api/v4/Patient?_count=10&_page=2"
    }
  ],
  "entry": [
    {
      "fullUrl": "https://localhost:9443/fhir-server/api/v4/Patient/1c60c89d-9dca-4449-ae68-45823631be50",
      "resource": {
        "resourceType": "Patient",
        "id": "1c60c89d-9dca-4449-ae68-45823631be50",
        "meta": {
          "versionId": "1",
          "lastUpdated": "2020-06-25T22:12:28.89Z"
        },
        "active": true,
        "name": [
          {
            "family": "Munster",
            "given": [
              "Herman"
            ]
          }
        ],
        "gender": "male"
      }
    },
    ...
  ]
}

We did this last week over and over again and so the response today is already filled by Herman Munsters with different ids.

Let's create a new patient...

POST https://localhost:9443/fhir-server/api/v4/Patient
Accept         application/json
Content-Type   application/json
Custom Request body
{
  "resourceType" : "Patient",
  "active" : true,
  "name" : [ {
    "family" : "Munster",
    "given" : [ "Lily", "Dracula" ]
  } ],
  "gender" : "male"
}

201

Oddly, we never get this new patient. Changing what we'll accept back in the HTTP header, let's ask for XML:

GET https://localhost:9443/fhir-server/api/v4/Patient
Accept         application/xml

200
<Bundle xmlns="http://hl7.org/fhir">
    <id value="27b0345b-efff-4cdc-8371-5e040927beb4"/>
    <type value="searchset"/>
    <total value="22"/>
    <link>
        <relation value="self"/>
        <url value="https://localhost:9443/fhir-server/api/v4/Patient?_count=10&_page=1"/>
    </link>
    <link>
        <relation value="next"/>
        <url value="https://localhost:9443/fhir-server/api/v4/Patient?_count=10&_page=2"/>
    </link>
    <entry>
        <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/1c60c89d-9dca-4449-ae68-45823631be50"/>
        <resource>
            <Patient>
                <id value="1c60c89d-9dca-4449-ae68-45823631be50"/>
                <meta>
                    <versionId value="1"/>
                    <lastUpdated value="2020-06-25T22:12:28.89Z"/>
                </meta>
                <active value="true"/>
                <name>
                    <family value="Munster"/>
                    <given value="Herman"/>
                </name>
                <gender value="male"/>
            </Patient>
        </resource>
    </entry>
    ...
</Bundle>

Oddly, we never get this new patient. Changing what we'll accept back in the HTTP header, let's ask for XML:

GET https://localhost:9443/fhir-server/api/v4/Patient?_count=100
Accept         application/xml

200
<Bundle xmlns="http://hl7.org/fhir">
    <id value="3e652b1e-ce40-43f2-b88d-6ebb6da884b6"/>
    <type value="searchset"/>
    <total value="5"/>
    <link>
        <relation value="self"/>
        <url value="https://localhost:9443/fhir-server/api/v4/Patient?_count=100&_page=1"/>
    </link>
    <entry>
        <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/21163177-49a1-44bd-b93f-d60a995f4ac6"/>
        <resource>
            <Patient>
                <id value="21163177-49a1-44bd-b93f-d60a995f4ac6"/>
                <meta>
                    <versionId value="1"/>
                    <lastUpdated value="2020-06-17T15:45:20.589Z"/>
                </meta>
                <active value="true"/>
                <name>
                    <family value="Ortiz"/>
                    <given value="David"/>
                </name>
                <gender value="male"/>
            </Patient>
        </resource>
    </entry>
    <entry>
        <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/5dfe7ef4-eeac-4c53-a5df-4b3a2e2adf22"/>
        <resource>
            <Patient>
                <id value="5dfe7ef4-eeac-4c53-a5df-4b3a2e2adf22"/>
                <meta>
                    <versionId value="1"/>
                    <lastUpdated value="2020-06-26T03:48:43.478Z"/>
                </meta>
                <active value="true"/>
                <name>
                    <family value="Munster"/>
                    <given value="Herman"/>
                </name>
                <gender value="male"/>
            </Patient>
        </resource>
    </entry>
    .
    .
    .
    <entry>
        <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/3c9b1619-e019-4d91-ad46-5b0b398b7bca"/>
        <resource>
            <Patient>
                <id value="3c9b1619-e019-4d91-ad46-5b0b398b7bca"/>
                <meta>
                    <versionId value="1"/>
                    <lastUpdated value="2020-06-26T15:25:54.115Z"/>
                </meta>
                <active value="true"/>
                <name>
                    <family value="Munster"/>
                    <given value="Lily"/>
                    <given value="Dracula"/>
                </name>
                <gender value="female"/>
            </Patient>
        </resource>
    </entry>
    <entry>
        <fullUrl value="https://localhost:9443/fhir-server/api/v4/Patient/01e7a037-176c-4347-9448-79d660215450"/>
        <resource>
            <Patient>
                <id value="01e7a037-176c-4347-9448-79d660215450"/>
                <meta>
                    <versionId value="1"/>
                    <lastUpdated value="2020-06-26T15:29:04.128Z"/>
                </meta>
                <active value="true"/>
                <name>
                    <family value="Munster"/>
                    <given value="Marilyn"/>
                </name>
                <gender value="female"/>
            </Patient>
        </resource>
    </entry>
</Bundle>

Let's look at patient Marilyn Munster alone. The RESTful API says to do this: GET [base]/[type]/[id].

GET https://localhost:9443/fhir-server/api/v4/Patient/01e7a037-176c-4347-9448-79d660215450
Accept         application/xml

200
<Patient xmlns="http://hl7.org/fhir">
    <id value="01e7a037-176c-4347-9448-79d660215450"/>
    <meta>
        <versionId value="1"/>
        <lastUpdated value="2020-06-26T15:29:04.128Z"/>
    </meta>
    <active value="true"/>
    <name>
        <family value="Munster"/>
        <given value="Marilyn"/>
    </name>
    <gender value="female"/>
</Patient>