Overview
The following document contains information about FHIR servers performance: Hearth and HAPI FHIR. Tests contain create, update and read actions on a location resource. Each section presents the request structure and response times. To execute tests, the Taurus tool has been used. The following machine has been used for tests:
Memory: 7.7 GiB Processor: Intel Core i7-6700HQ 2.60GHz x 8 Graphics: GeForce GTX 960M/Pcie/SSE2 OS: Ubuntu 18.04.1 LTS (64-bit)
The following variables have been set and used to avoid duplication in tests. Some of them are used in request bodies.
fhir-server-url: http://192.168.88.183/fhir/Location (Hearth) | http://192.168.88.183/hapifhir/baseDstu3/Location (HAPI FHIR) scenario-iterations: 1000 # how many times a scenario/test will be executed scenario-concurrency: 1 # how many users will execute the given scenario/test identifier_value: # this value is generated for each location resource so searching by identifier always returns a single resource location_id: # set by a FHIR server when a resource is created
Create a new location
Note: When an X test is being executed, there are X - 1 resources in the FHIR server. For the first resource creation, the FHIR server will not contain any resources.
Request body
URL: ${fhir-server-url}/Location Method: POST Headers: Content-Type: application/json Body: { resourceType: "Location", alias: [ "N007" ], identifier: { { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/programs/418bdc1d-c303-4bd0-b2d3-d8901150a983" }, { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/facilityTypes/ac1d268b-ce10-455f-bf87-9c667da8f060" }, { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/facilityOperators/9456c3e9-c4a6-4a28-9e08-47ceb16a4121" }, { system: "https://test.openlmis.org", value: ${identifier_value} } }, name: "Lurio, Cuamba", position: { longitude: 36.852509 latitude: -14.78975 }, physicalType: { coding: [ { system: "http://hl7.org/fhir/location-physical-type", code: "si", display: "Site" } ] }, partOf: { reference: "https://test.openlmis.org/api/Location/9b8cfb5a-217a-4261-a64f-16ca06ae79fa" }, status: "active" }
Response times
FHIR server | 1st attempt | 2nd attempt | 3rd attempt | 4th attempt | 5th attempt | |||||
---|---|---|---|---|---|---|---|---|---|---|
avg | p90 | avg | p90 | avg | p90 | avg | p90 | avg | p90 | |
Hearth | ||||||||||
HAPI FHIR |
Update the location
Note: When an X test is being executed, there are X - 1 resources in the FHIR server. For the first resource update, the FHIR server will contain a single resource.
Request body
URL: ${fhir-server-url}/Location Method: PUT Headers: Content-Type: application/json Body: { resourceType: "Location", alias: [ "N007" ], identifier: { { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/programs/418bdc1d-c303-4bd0-b2d3-d8901150a983" }, { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/facilityTypes/ac1d268b-ce10-455f-bf87-9c667da8f060" }, { system: "urn:ietf:rfc:3986", value: "https://test.openlmis.org/api/facilityOperators/9456c3e9-c4a6-4a28-9e08-47ceb16a4121" }, { system: "https://test.openlmis.org", value: ${identifier_value} } }, name: "Lurio, Cuamba (Updated)", position: { longitude: 36.852509 latitude: -14.78975 }, physicalType: { coding: [ { system: "http://hl7.org/fhir/location-physical-type", code: "si", display: "Site" } ] }, partOf: { reference: "https://test.openlmis.org/api/Location/9b8cfb5a-217a-4261-a64f-16ca06ae79fa" }, status: "active" }
Response times
FHIR server | 1st attempt | 2nd attempt | 3rd attempt | 4th attempt | 5th attempt | |||||
---|---|---|---|---|---|---|---|---|---|---|
avg | p90 | avg | p90 | avg | p90 | avg | p90 | avg | p90 | |
Hearth | ||||||||||
HAPI FHIR |
Get a location by an id
Note: When an X test is being executed, there are X - 1 resources in the FHIR server. For the first resource search, the FHIR server will contain only one resource.
Request body
URL: ${fhir-server-url}/fhir/Location/${location_id} Method: GET Headers: Accept: application/json
Response times
FHIR server | 1st attempt | 2nd attempt | 3rd attempt | 4th attempt | 5th attempt | |||||
---|---|---|---|---|---|---|---|---|---|---|
avg | p90 | avg | p90 | avg | p90 | avg | p90 | avg | p90 | |
Hearth | ||||||||||
HAPI FHIR |
Search single location by an identifier
Note: When an X test is being executed, there are X - 1 resources in the FHIR server. For the first resource search, the FHIR server will contain only one resource.
Request body
URL: ${fhir-server-url}/Location?identifier=https://test.openlmis.org|${identifier_value} Method: GET
Response times
FHIR server | 1st attempt | 2th attempt | 3th attempt | 4th attempt | 5th attempt | |||||
---|---|---|---|---|---|---|---|---|---|---|
avg | p90 | avg | p90 | avg | p90 | avg | p90 | avg | p90 | |
Hearth | ||||||||||
HAPI FHIR |
Search locations
Note: When an X test is being executed, there are 1000 * number of attempt resources in the FHIR server. The search endpoint returns only 10 resources.
Request body
URL: ${fhir-server-url}/fhir/Location Method: GET
Response times
FHIR server | 1st attempt | 2th attempt | 3th attempt | 4th attempt | 5th attempt | |||||
---|---|---|---|---|---|---|---|---|---|---|
avg | p90 | avg | p90 | avg | p90 | avg | p90 | avg | p90 | |
Hearth | ||||||||||
HAPI FHIR |