PMD API Specification
Pasientens Måledata (PMD) is a data sharing service being established in Norway to centralize and share vital health measurements, such as pulse and blood pressure, among healthcare providers.
PMD is a NOT a master data storage, and has no opinion and does no interpretation about it's data.
PMD is a FHIR-API
PMD implements a subset of the FHIR REST API specification, with the following limitations:
- Only one resource type is available:
Observation(see Observation). - Bundle endpoint only accepts Observation resources. For other constrains, see bundle-
- Patients are automatically created and managed internally by the system.
Getting started
In order to use the PMD APIs, you must:
Select an environment
| Environment | URL | Usage | Authentication | Availabilty |
|---|---|---|---|---|
| Dev | pmd.dev.nhn.no | Internal development environment | None | Internett, Helsenett |
| Test | pmd.test.nhn.no | Close-to-production test environment | HelseID | Internett, Helsenett |
| Production | pmd.nhn.no | Production environment | HelseID | Helsenett |
Authenticate with HelseID
You can explore our APIs without authentication in our Dev environment.
All endpoints are guarded by HelseID. To use the PMD API the client therefore must implement HelseID with DPoP. The end users must log in at security level 4 (BankID or Buypass Security).
See the official HelseID documentation and their official support channels for more information about HelseID, OpenID Connect and DPoP.
How PMD implements FHIR
PMD API follows the FHIR R5 specification, while also being backwards compatible with R4 for observation resources.
Resource: Observation
Clients can expect to find Observation resources to the Base observation profile
, as well as the Observation variant from VKP (Velferdsteknologisk
Knutepunkt) - VkpObservation - as described here:
Consume or produce FHIR observations to PMD
FHIR observations can be created to PMD through bundles, and read through search.
At the time of writing, updating or deleting observations is NOT POSSIBLE through the APIs. This comes from the restriction that the API consumer currently has no way of knowing the ID of stored observations. As such, updating or deleting observations must be done manually by contacting NHN.
Deleting and updating observations must be done manually.
Bundle endpoints
Endpoints for uploading bundles should target the root URL (e.g.
https://pmd.dev.nhn.no/ for the internal development environment).
Currently only bundles of type=collection is supported.
Collection bundle endpoint
PMD supports uploading bundles of type=collection. This allows inserting observations into PMD.
Only resources of resourceType=observation will be stored in PMD, others will be ignored.
Currenly, it is not possible to update observations using the collection endpoint; if the same observation is sendt to PMD twice, two separate observations will be stored in PMD.
Each resource will be treated independently.
A successful request will return a response bundle of type type=batch-response. It contains an entry array that corresponds one-to-one with the entries in the request bundle - including resources not processed (e.g not observations). Each entry has a response object that contains a standard HTTP status code from the processing of the given resource.
Since the order of the entries in the response bundle matches the order in the request bundle, you can correlate the HTTP status for each resource from their position in the arrays.
Search
POST [base_url]/Observation/_search
Notes:
- Observation search will only return results for one patient at a time.
- Search through GET parameters is not allowed.
- Following filters are available:
date(comparators eq, ge, gt, lt, le, see FHIR search prefixes)codepatient.identifiercurrently implemented as headerX-Pmd-Patient