DIPS Core Implementation Guide
0.1.0 - ci-build
Norway
DIPS Core Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
The intended audience for this document is personnel developing integrations to FHIR R4 modules. This document contains information about the implemented API and authentication. All integration through this resource is subjected to the access control mechanisms in DIPS. This means that results of operations reflect the access level of the calling user; e.g. the number of Procedures returned will be limited if the calling user is not authorized to view some of DIPS Procedures.
All communications with FHIR R4 Core are required to be secure at the transport level. In addition, every interaction with a FHIR R4 Core application requires a token to identify the caller. The caller must be a known user entity in DIPS.
By default, all FHIR R4 Core applications are installed with security requirements. This means that the use of SSL is required for communicating with the services. The server is required to provide an SSL certificate when negotiating security with clients. The use of client certificates is not a required feature of FHIR R4 Core, so any client certificate requirement should be considered at each separate deployment. The base URL for all requests is where the FHIR R4 server is installed.
FHIR R4 Core requires the usage of “security tokens”. To find out which type of security token you are required to send, contact the organization you are integrating with. Different methods to add security tokens are described in chapter below.
The security framework in FHIR R4 Core supports TicketHeader and OAuth token schemes, including the DIPS authentication ticket (AKA “ticket”) and federated security, using an OAuth 2.0 Bearer token. Failure to provide a security token, regardless of the mechanism used by FHIR R4 Core, will result in a failed request. The HTTP response status will be HTTP 401 “Unauthorized”. Details on failed authentication and authorization can also be found for each resource.
This security token is the security token generated by the DIPS core system when a user is authenticated. The token is passed along with each call. The ticket can be attached to the call in the following ways:
The ticket is sent in a custom HTTP header called “Auth-Ticket”:
POST https://localhost/DIPS-WebAPI/HL7/FHIR-R4/<resource> HTTP/1.1
Accept-Encoding: gzip,deflate
Auth-Ticket: E73CA55A-F8C7-4D81-8F55-A2C6FBD88C62
The ticket is sent in the standard HTTP Authorization header, with a scheme named “Auth-Ticket”
POST https://localhost/DIPS-WebAPI/HL7/FHIR-R4/<resource> HTTP/1.1
Authorization: Auth-Ticket E73CA55A-F8C7-4D81-8F55-A2C6FBD88C62
Federated security in FHIR R4 Core requires Bearer tokens obtained from an OAuth 2.0 enabled authorization server if federated security is enabled.
See the section "Enable Federated Security" below for information about enabling federated security.
For a detailed description of federated security in FHIR R4 Core, please see the Administrator’s Guide.
A detailed description of OAuth 2.0 can be found here: https://tools.ietf.org/html/rfc6749
A detailed description of the Bearer Token usage can be found here: https://tools.ietf.org/html/rfc6750
A request for a FHIR resource using the Bearer token will use the standard HTTP Authorization header, but with the scheme Bearer:
POST https://localhost/DIPS-WebAPI/HL7/FHIR-R4/<resource> HTTP/1.1
Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYW
RtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
The Bearer token must be a Base64-encoded JSON Web Token (JWT). For detailed info about the JWT, please see here:( https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32)
When federated security is enabled, all other forms of authentication will be
disabled
The service will respond with HTTP status codes which describe the result of the call to the service:
| Name | Code | Description |
|---|---|---|
| OK | 200 | The request succeeded. |
| Bad Request | 400 | Invalid Request. |
| Unauthorized | 401 | The caller is not authorized to access the resource. |
| NotFound | 404 | Data not in the database. |
| Unprocessable Entity | 422 | The request contained values which were not accepted, or missing required properties. |
| Unprocessable Entity | 500 | A validation error or an unknown error occurred while processing the request. |
FHIR Organization is a shared registry of contact and other information for various organizations. It can be used as a support for other resources that need to reference organizations, perhaps as a document, message or as a contained resource.
The service implements the following FHIR resources in conformance with FHIR R4.
https://{server}/DIPS-WebAPI/HL7/FHIR-R4/organization/
The Organization resource may be used in a shared registry of contact and other information for various organizations. It can be used as a support for other resources that need to reference organizations.
It implements the DIPSOrganization profile with the following interactions:
The following organizational units are included in the Organization:
To represent the whole organization hierarchy, partOf on a Organization resource is pointing to its parent in the hierarchy:
Access is checked for the DIPS user in the provided ticket or the config file (depending on the authorization method used). Only the records that the user has access to are returned.
These codes must be used in security attributes returned in each resource entity:
P=Permit
D=Deny
U=Unknown
A=ALL
Example requests
_security=http://dips.no/fhir/ValueSet/v1-OrgAccess|PERMIT
_security=http://dips.no/fhir/ValueSet/v1-OrgAccess|DENY
_security=http://dips.no/fhir/ValueSet/v1-OrgAccess|ALL
This code must be returned in every resource returned in the field: Organization.meta.security
Search for an organization by organization ID, ReshID, name, business registration number, part of, StdNumber and type.
Request format
GET .../Organization?<parameters>
Table 1. Parameters
| Parameter | Description |
|---|---|
| _id | Search for an organization by given logical ID |
| identifier | Supports search for RESH ID, Organization ID and Standard department number |
| name | Search by phrase, contains at the beginning of the organization name |
| name:contains | Returns results that include the supplied parameter value anywhere within the field being searched |
| name:exact | Returns results that match the entire supplied parameter, including casing and accents |
| type | Search for organization by type |
| partOf | Returns organizations that are part of the given organization |
| _security | Search parameter for an organization’s authorization |
| _pretty | Format the case of the response strings. Available statuses are true and false |
| _summary | Change the content of the response. Available stauses are true, false, data, text and count |
Valid coding systems for search with "identifier"
Table 2. Valid OIDs and identifiers
| OID/System | Description | Example |
|---|---|---|
| urn:oid:1.3.6.1.4.1.9038.70.1 | Organization ID | 27 |
| urn:oid:1.3.6.1.4.1.9038.70.2 | Hospital ID | 1 |
| urn:oid:1.3.6.1.4.1.9038.70.3 | Department ID | 22 |
| urn:oid:1.3.6.1.4.1.9038.70.4 | Ward ID | 21 |
| urn:oid:1.3.6.1.4.1.9038.70.5 | Section ID | 21 |
| urn:oid:1.3.6.1.4.1.9038.70.6 | Location ID | 1000021 |
| urn:oid:2.16.578.1.12.4.1.4.101 | Business registration number | 000000000 |
| urn:oid:2.16.578.1.12.4.1.4.102 | RESH-ID | 10013 |
| http://dips.no/fhir/namingsystem/dipsdepartmentshortname | Department short name | KIR |
| http://dips.no/fhir/namingsystem/dipswardshortname | Ward short name | K1 |
| http://dips.no/fhir/namingsystem/dipssectionshortname | Section short name | URO |
| http://dips.no/fhir/namingsystem/dipslocationshortname | Location short name | TDBYGGA |
| http://dips.no/fhir/namingsystem/dipsstandardnumber | Standard number | 70008 |
Use the AuthorizedOrgUnits query to search for organizations by userroleid to get authorized organizations.
GET .../Organization?_query=AuthorizedOrgUnits&userroleid={user role ID}
Table 3. Parameters
| Parameter | Description |
|---|---|
| userroleid | Search organizations by user role id |
Includes
Example requests
Search for organizations with organization ID aks1000090:
GET .../Organization?_id=aks1000090
Search for organizations with organization ID 1000090:
GET .../Organization?identifier=urn:oid:1.3.6.1.4.1.9038.70.1|1000090
Search for organizations with organization number (business registration number) 883974832:
GET .../Organization?identifier=urn:oid:2.16.578.1.12.4.1.4.101|883974832
Search for organizations with Resh ID 5004:
GET .../Organization?identifier=urn:oid:2.16.578.1.12.4.1.4.102|5004
Search for organizations with standardnumber 8180:
GET .../Organization?identifier=http://dips.no/fhir/namingsystem/dips-standardnumber|8180
Search for organizations with short name Med Kn:
GET .../Organization?identifier=http://dips.no/fhir/namingsystem/dips-departmentshortname|Med Kn
Search for organizations where name starts with ABC:
GET .../Organization?name=ABC
Search for organizations with organization name containing the string HF in any place:
GET .../Organization?name:contains=HF
Search for organizations with exact name Testsykehuset HF
GET .../Organization?name:exact=Testsykehuset FH
Search for organizations with organization type urn:oid:2.16.578.1.12.4.1.1.8628|1 and organization name contains "HF:
GET .../Organization?type=urn:oid:2.16.578.1.12.4.1.1.8628|1&name:contains=HF
Search for organizations which are part of the aks1000176 organization :
GET .../Organization?partof=Organization/aks1000176
Search for organizations with organization identifier and pretty enabled:
GET .../Organization?identifier=urn:oid:2.16.578.1.12.4.1.4.101|883974832&_pretty=true
Search for organizations with organization identifier and summary=data:
GET .../Organization?identifier=urn:oid:2.16.578.1.12.4.1.4.101|883974832&_summary=data
FHIR Location includes both incidental locations (a place which is used for healthcare without prior designation or authorization) and dedicated, formally appointed locations. Locations may be private, public, mobile or fixed and scale from small freezers to full hospital buildings or parking garages. The Location resource represents location, team and bed in DIPS.
The service implements the following FHIR resources in conformance with FHIR R4.
This document describes how to call the FHIR service, and how values are mapped to DIPS.
The base URL for all requests is where the FHIR R4 server is installed.
https://{server}/DIPS-WebAPI/HL7/FHIR-R4/Location/<id>
The location resource implements the DIPSLocation profile with these interactions. It can represent a bed, ward, or location in DIPS.
The following organizational units are included in Location:
Access is checked for the DIPS user in the provided ticket or the config file (depending on the authorization method used). Only records the user has access to are returned.
These codes must be used in security attributes returned in each resource entity.
Example requests
| _security=http://dips.no/fhir/ValueSet/v1-OrgAccess | PERMIT |
| _security=http://dips.no/fhir/ValueSet/v1-OrgAccess | DENY |
| _security=http://dips.no/fhir/ValueSet/v1-OrgAccess | ALL |
This code must be returned in every resource returned in the field: Organization.meta.security
Search for a location by location ID, ReshID, name, part of, StdNumber and type.
Request format
GET .../Location?<parameters>
Table 4. Parameters
| Parameter | Description |
|---|---|
| _id | Search for an location by given logical ID |
| identifier | Supports search RESH ID, short name and standard location number |
| name | Search by phrase, contains at the beginning of the location name |
| name:contains | Returns results that include the supplied parameter value anywhere within the field being searched |
| name:exact | Returns results that match the entire supplied parameter, including casing and accents |
| type | Search by location by type |
| organization | The organization responsible for the provisioning and upkeep of the location |
| _pretty | Format the case of the response strings. Available statuses are true and false |
| _summary | Change the content of the response. Available statuses are: true, false, data, text and count |
Includes
• _include=Location:organization - The organization of which this location forms a part
Valid coding systems for search with "identifier"
Table 5. Valid OIDs and identifiers
| OID/System | Description | Example |
|---|---|---|
| http://dips.no/fhir/namingsystem/dipslocationshortname | Location short name | TDBYGGA |
| http://dips.no/fhir/namingsystem/dipswardshortname | Ward short name | K1 |
| urn:oid:1.3.6.1.4.1.9038.70.6 | Location ID | 1000159 |
| urn:oid:1.3.6.1.4.1.9038.70.4 | Ward ID | 29 |
| http://dips.no/fhir/namingsystem/dips-bedid | Bed ID | 21 |
| http://dips.no/fhir/namingsystem/dips-teamid | Team ID | 86 |
| http://dips.no/fhir/namingsystem/dipsstandardlocationnumber | Standard location number | 70002 |
| urn:oid:2.16.578.1.12.4.1.4.102 | RESH-ID | 70001 |
Example requests
Search locations with location ID "aea1000148":
GET .../Location?_id=aea1000148
Search locations with location ID "1000148":
GET .../Location?identifier=urn:oid:1.3.6.1.4.1.9038.70.6|1000148
Search location with short name "habygga":
GET .../Location?identifier=http://dips.no/fhir/namingsystem/dips-locationshortname|habygga
Search locations with Resh ID "10003":
GET .../Location?identifier=Location?identifier=urn:oid:2.16.578.1.12.4.1.4.102|10003
Search locations with standard location number "70003":
GET ...Location?identifier=http://dips.no/fhir/namingsystem/dips-standardlocationnumber|70003
Search locations where name starts with "ABC":
GET .../Location?name=ABC
Search locations where name contains "medisinsk"
GET .../Location?name:contains=medisinsk
Search locations where exact name is "Medisinsk Pol 1H"
GET .../Location?name:exact=Medisinsk Pol 1H
Search locations by location type
GET ...Location?type=http://dips.no/fhir/namingsystem/dips-locationtype|Ventelistested
Search location where name contains "medisinsk", with pretty enabled:
GET .../Location?name:contains=medisinsk&_pretty=true
Search location where exact name is "Medisinsk Pol 1H" and summary=data:
GET .../Location?name:exact=Medisinsk Pol 1H&_summary=data
Read location by ward ID "ahl1000139":
GET .../Location/ahl1000139
Search for locations by ward ID "ahl1000139":
GET .../Location?_id=ahl1000139
Search locations by ward identifier "1000139":
GET .../Location?identifier=urn:oid:1.3.6.1.4.1.9038.70.4|1000139
Search location with short ward name "IN IT":
GET .../Location?identifier=http://dips.no/fhir/namingsystem/dips-wardshortname|IN IT
Search location with ward name "Ikke ":
GET .../Location?name=Ikke
Search locations with standard ward number "1010":
GET ...Location?identifier=http://dips.no/fhir/namingsystem/dips-standardlocationnumber|1010
Search locations by ward type
GET ...Location?type=http://dips.no/fhir/namingsystem/dips-wardtype|212779
Table 6. Supported FHIR Operations
| Operation | Supported |
|---|---|
| Read | Yes |
| VRead | No |
| Create | Yes |
| Update | Yes |
| History | No |
| Search | Yes |
| Delete | No |
| Patch | No |
| Operation | Yes |
Table 7. OIDs used in Patient R4 Resource
| OID | Description | Used in |
|---|---|---|
| 2.16.578.1.12.4.1.4.1 | Norwegian National Identity Number | Patient.Identifier.System |
| 2.16.578.1.12.4.1.4.2 | Norwegian D-number | Patient.Identifier.System |
| 2.16.578.1.12.4.1.4.3 | Norwegian Common Help Number | Patient.Identifier.System |
| 2.16.578.1.12.4.1.4.4 | Norwegian Healthcare Practitioner Identificator (HPR) | Patient.generalPractitioner.identifier:HPR.system |
| 1.3.6.1.4.1.9038.51 | DIPS Requisitioner number | Patient.Contact.Extension.ValueCodeableConcept.Coding.System |
| 2.16.578.1.12.4.1.4.101 | Organizational number in Brønnøysundregisteret | Organization.Identifier.System |
| 2.16.578.1.12.4.1.2 | HER identifier by Norsk Helsenett | Patient.Contact.Extension.ValueCodeableConcept.Coding.System and Organization.Identifier.System |
| 2.16.578.1.12.4.1.1.9034 | Healthcare Practitioner Role to Patient | Patient.contact.relationship.coding:HCPFunctionInRelationToPatient.system |
| 2.16.578.1.12.4.1.2.101 | Organization ENH Identifier | Patient.contact.organization.identifier:ENH /Patient.managingOrganization.identifier:ENH.system |
| 2.16.578.1.12.4.1.2.102 | Organizational RSH Identifier | Patient.contact.organization.identifier:RSH /Patient.managingOrganization.identifier:RSH.system |
Table 8. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/Patient/{ID} |
| HTTP VERB | GET |
| Auth-Ticket | Valid ticket from database |
| Content-Type | application/json or application/xml |
| ID | Norwegian National Identity Number / Norwegian D-Number / Local temporary Identity |
| HTTP response codes | 200,404,500 |
{
"resourceType":"Patient",
"id":"cdp1000811",
"meta":{
"profile":[
"DIPSPatient",
"NoBasisPatient"
]
},
"identifier":[
{
"use":"official",
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000"
},
{
"system":"http://dips.no/fhir/namingsystem/dips-patientid",
"value":"1000811"
}
],
"active":true,
"name":[
{
"use":"official",
"text":"Telokk, Gry",
"family":"Telokk",
"given":[
"Gry"
]
}
],
"telecom":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientPhoneTypeId",
"valueDecimal":268903
}
],
"system":"phone",
"value":"22334455",
"use":"home"
},
{
"system":"email",
"value":"email@example.com",
"use":"home"
},
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientPhoneTypeId",
"valueDecimal":268905
}
],
"system":"phone",
"value":"90909090",
"use":"mobile"
}
],
"gender":"female",
"birthDate":"1979-05-12",
"deceasedBoolean":false,
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1201",
"display":"Bergen"
}
}
],
"url":"http://hl7.no/fhir/StructureDefinition/no-basis-propertyinformation"
},
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientStateName",
"valueString":"HORDALAND FYLKESKOMMUNE"
}
],
"use":"home",
"line":[
"Lungegaardsbakken 13"
],
"city":"Bergen",
"district":"Bergen",
"_district":{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1201",
"display":"Bergen"
}
}
]
},
"state":"12",
"postalCode":"5020",
"country":"Norge"
}
],
"generalPractitioner":[
{
"reference":"PractitionerRole/agb1000944"
}
]
}
Table 9. OperationInformation
| SEARCH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/Patient?{SearchParameters} |
| HTTP VERB | GET |
| Auth-Ticket | Valid ticket from database |
| Content-Type | application/json or application/xml |
| ID | Norwegian National Identity Number / Norwegian D-Number / Local temporary Identity |
| HTTP response codes | 200,404,500 |
A successful search will return 200 with a Bundle containing patients matching the search criteria. If no patients were found, the service returns 200 and an OperationOutcome containing details about the issue. A search without any valid parameters will return 400 with an OperationOutcome. Parameters can either be used alone or together. Valid search parameters are listed below.
Table 10. SearchParameters
| Parameter | Valid values | Example |
|---|---|---|
| identifier | Norwegian National Identity Number / Norwegian D-Number/ Local temporary Identity/Patient Id | |
| given | String matching Patient.Name.Given | /patient?given=Geir |
| family | String matching Patient.Name.Family | /patient?family=Hansen |
| birthdate | Date formatted as yyyy-MM-dd | /patient?birthdate=1993-02-06 |
| gender | "Male", "M", "Female", "F","K" "Other", "?", "Unknown", "U" | /patient?gender=F |
| deceased | true, false, yyyy-MM-dd | /patient?deceased=true |
| address | String matching Patient.Address.Line | /patient?address=Morenevegen58 |
| zip | String matching Patient.Address.PostalCode | /patient?zip=9027 |
| district | String matching Patient.Address.District | /patient?district=Ramfjord |
| urban-district | String matching the urban district of the patient | /patient?urban-district=Sagene |
| municipal | String matching Patient.Address.State | /patient?municipal=Tromsø |
| String matching Patient.Telecom.Value, where System=email | /patient?email=email@example.com | |
| fax | String matching Patient.Telecom.Value, where System=fax | /patient?fax=12345666 |
| phone | String matching Patient.Telecom.Value, where System=phone | /patient?phone=12345455 |
| _include:Patient:general:practitioner | /patient?_include=Patient:Patient:generalpractitioner&_id=urn:oid:2.16.578.1.12.4.1.4.3 |
The Identifier can be kept standalone or be prefixed with a Norwegian National Identity Number (urn:oid:2.16.578.1.12.4.1.4.1) or Norwegian D-Number (urn:oid:2.16.578.1.12.4.1.4.2). String matching for name parameters is case insensitive
If an Identifier is specified, any other search parameters will be ignored.
Table 11. Search modifiers
| Modifier | Valid Parameters | Behaviour | Example |
|---|---|---|---|
| :contains | given, family | Wild card search for the string supplied | /patient?given:contains=Eve |
| :exact | given, family | Any patients with a name that is exactly same as the search string | /patient?given:exact=Eve |
Parameter names may specify a modifier as a suffix. Modifiers are separated from the parameter name by a colon.
Contact Information can be updated according to the Social Security Number of a Patient. Upon a successful update, this operation returns Patient details with updated contact information in the response itself. Supported Contact information details are as follows:
• Mobile Number • Email Address • Consent
Social Security Number is a mandatory field for updating contact information.
Table 12. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/patient/$updatecontactinformation |
| HTTP VERB | POST |
| Auth-Ticket | Valid ticket from database |
| Content-Type | application/json |
| HTTP response codes | 200,400,500 |
{
"resourceType":"Parameters",
"parameter":[
{
"name":"OfficialNumber",
"valuestring":"14502063562"
},
{
"name":"MobileNumber",
"valuestring":"911111111"
},
{
"name":"EmailAddress",
"valuestring":"abcd@dips.com"
},
{
"name":"consent",
"valuestring":"1"
}
]
}
A Patient’s Official Number / Social Security Number can be updated from this operation. In order to do so, a new Official Number needs to be provided along with the current Official Number to the operation as inputs.
Current Official Number’s Identifier must contain a system value describing it as either Norwegian National Identity Number (urn:oid:2.16.578.1.12.4.1.4.1) or Norwegian D-Number (urn:oid:2.16.578.1.12.4.1.4.2) and a matching value for New Official Number.
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/patient/$changeOfficialNumber |
| HTTP VERB | POST |
| Auth-Ticket | Valid ticket from database |
| Content-Type | application/json |
| HTTP response codes | 200,400,500 |
{
"resourceType":"Parameters",
"parameter":[
{
"name":"oldofficialnumber",
"valuestring":"19046233533"
},
{
"name":"NewOfficialNumber",
"valuestring":"19046243849"
}
]
}
Custom query IsPatient is used to check if a person is a patient, and can check if the patient has documents or referrals. Output values are returned as Parameter resource. IsPatient supports both HTTP GET with query parameters and HTTP POST with query parameters as application/x-www-formurlencoded form. HTTP POST is the preferred method as national identifier will be logged in Internet Information Services logs if HTTP GET is used as query method. See sample request for more information.
| Parameter | Datatype | Cardinality | Direction | Description |
|---|---|---|---|---|
| nationalidentifier | string | 1..1 | in | Norwegian National Identity Number /Norwegian D-Number / Local temporary Identity |
| checkfordocuments | boolean | 0..1 | in | If true checks if patient has documents, if false or not in request no check is run |
| checkforreferrals | boolean | 0..1 | in | If true checks if patient has referrals, if false or not in request no check is run |
| ispatient | boolean | 1..1 | out | Returns true if person is patient, false if person is not patient |
| hasdocuments | boolean | 0..1 | out | Returns true if patient has documents, false if no documents. No value if checkfordocuments is false or not in query |
| hasreferrals | boolean | 0..1 | out | Returns true if patient has referrals, false if no referrals. No value if checkforreferrals is false or not in query |
Following requests are equal for FHIR-R4
Query with HTTP GET
GET
.../Patient?_query=IsPatient&nationalidentifier=12497847379&checkfordocuments=true&checkforrefe
rrals=true
Query with HTTP POST
POST .../Patient/_search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
_query=IsPatient&nationalidentifier=12497847379&checkfordocuments=true&checkforreferrals=true
Response
{
"resourceType":"Parameters",
"parameter":[
{
"name":"ispatient",
"valueBoolean":true
},
{
"name":"hasdocuments",
"valueBoolean":true
},
{
"name":"hasreferrals",
"valueBoolean":true
}
]
}
Profiles used in this implementation of FHIR Patient R4 Resource are as follows. All profiles will be available on the server after installation and on DIPS Customer Portal as an appendix to the documentation as well.
Table 13. Profiles
| Name | Use | Element |
|---|---|---|
| DIPSPatient | Main profile for Patient | Patient |
| ContactIdentifier | Extension used at patient.contact | patient.contact.ContactIdentifier |
| ContactPractitionerRoleName | Extension used at patient.contact | patient.contact.ContactPractitionerRoleName |
| PatientContactOrganization | Profile for contained contact organization | patient.contact.organization |
| DIPSPatientDeathRegistered | Optional Extension | patient.extension:deathRegisteredTime |
| DipsPatientLanguageId | Profile showing the language id of the patient | patient.communication.language.coding.extension:LanguageId |
The create operation (https://www.hl7.org/fhir/http.html#create) creates a new resource at the server. The payload is a FHIR Organization resource.
• Auth-Ticket = Valid ticket from the database • Content-Type = application/json • Method = POST • URL = https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/patient
{
"resourceType":"Patient",
"identifier":[
{
"system":"urn:oid:2.16.578.1.12.4.1.4.3",
"value":"80434218415"
}
],
"gender":"male"
}
{
"resourceType":"Patient",
"identifier":[
{
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000 "
}
],
"active":true,
"name":[
{
"use":"official",
"text":"Telokk, Gry",
"family":"Telokk",
"given":[
"Gry"
]
}
],
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804"
}
}
],
"url":"http://hl7.no/fhir/StructureDefinition/no-basis-propertyinformation"
}
],
"use":"home",
"postalCode":"6800"
}
]
}
{
"resourceType":"Patient",
"identifier":[
{
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000 "
}
],
"active":true,
"name":[
{
"use":"official",
"text":"Telokk, Gry",
"family":"Telokk",
"given":[
"Gry"
]
}
],
"telecom":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientPhoneTypeId",
"valueDecimal":268903
}
],
"system":"phone",
"value":"77635429",
"use":"home"
}
],
"gender":"male",
"deceasedBoolean":false,
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"0301",
"display":"Bodø"
}
}
],
"url":"http://hl7.no/fhir/StructureDefinition/no-basis-propertyinformation"
},
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientStateName",
"valueString":"NORDLAND FYLKESKOMMUNE"
}
],
"use":"home",
"city":"Førde",
"district":"Bodø",
"_district":{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPatientMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"0301",
"display":"Bodø"
}
}
]
},
"state":"18",
"postalCode":"6800"
}
]
}
Update patient information
Table 14. OperationInformation
| PATH | https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/patient/{patient ID} |
| HTTP VERB | PUT |
Table 15. Updatable Parameters
| Parameter | Description |
|---|---|
| given | Update patient’s existing First Name with a new String |
| family | Update patient’s exsisting Family Name with a new String |
| address-line | Update patient’s address line with a new String |
| address-city | Update patient’s city. This can be done by updating the city along with the relevant PostalCode |
| postalCode | Update patient’s postalCode. City gets updated along with this |
| district | Update patient’s district with a new valid district |
| Municipality Code | Update patient’s municipality code (when the municipality code is changed the relevant municipality name is also updated) |
| fax | Update patient’s fax number |
| phone | Update patient’s phone number |
| Update patient’s email address | |
| active | Update patient’s status. Available statuses are true and false |
| Language id | Update patient’s Language code |
| urban-district | Update patient’s urban-district |
Table 16. Non-Updatable Parameters
| Parameter | Description |
|---|---|
| id | patient ID cannot be updated |
| identifier | Patient information by an identifier cannot be updated |
| birthdate | Date of birth of a patient cannot be updated |
| State | country specified in a patient cannot be updated |
| Gender | Gender of a patient cannot be updated |
The service implements the following FHIR resources in conformance with FHIR R4. The profiles are available on the server after installation, and on DIPS customer portal as an appendix to the documentation.
Get person information by providing a person ID.
Table 17. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/person/{id}?_profile={Profile name} |
| HTTP VERB | GET |
| id | Person ID |
Search for person information
Table 18. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/person?{SearchParameters} |
| HTTP VERB | GET |
Table 19. Parameters
| Parameter VERB | Description |
|---|---|
| identifier | Search for person information by a human identifier for this person.This supports the following URNs. http://dips.no/fhir/namingsystem/dipspersonid, urn:oid:2.16.578.1.12.4.1.4.1 and + urn:oid:2.16.578.1.12.4.1.4.2 |
| _id | Search with person ID |
| given | Search person by the first name that starts with the given string |
| family | Search person by the last name that starts with the given string |
| address | Persons' address |
| address-city | A city specified in an address |
| address-state | A state specified in an address |
| address-statecode | A state code specified in an address |
| address-use | A use code specified in an address. Available statuses are true and false |
| municipal | The municipal of the person |
| zip | zip code of the person |
| district | The district of the person |
| urban-district | String matching urban district information |
| birthdate | The person’s date of birth |
| phone | A value in a phone contact |
| A value in an email contact | |
| telecom | The value in any kind of contact such as Email, Mobile Phone, Phone and fax |
| gender | The gender of the person (M,m,male,Mann,K,k,Kvinne,Female,f,F,unknown,u,?,other,ukjent,ubestemt) |
| active | Search person by status. Available statuses are true and false |
| _page | Search by The page number of the person results |
| _count | Search by The number of records to display for the given page |
| _pretty | Format the case of the response strings. Available statuses are true and false |
Table 20. Search Modifiers
| Modifier | Valid Parameters | Description |
|---|---|---|
| :contains | given, family | wild card search for the string supplied |
| :exact | given, family | Any person with a name that is exactly same as the search string |
{
"resourceType":"Person",
"id":"ajf2014791",
"meta":{
"profile":[
"DIPSPerson",
"NoBasisPerson"
]
},
"identifier":[
{
"use":"official",
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000"
},
{
"system":"http://dips.no/fhir/namingsystem/dips-personid",
"value":"2014791"
}
],
"name":[
{
"text":"Nystad, John",
"family":"Nystad",
"given":[
"John"
]
}
],
"gender":"male",
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804",
"display":"Bodø"
}
}
],
"url":"http://dips.no/fhir/StructureDefinition/R4/no-basis-propertyinformation"
},
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonStateName",
"valueString":"NORDLAND FYLKESKOMMUNE"
}
],
"use":"home",
"city":"Bodø",
"district":"Bodø",
"_district":{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804",
"display":"Bodø"
}
}
]
},
"state":"18",
"postalCode":"8001",
"country":"Norway"
}
],
"active":true
}
Read person info by person ID ajf1000024:
GET .../person/ajf1000024
Search for person by person identifier:
GET .../person?identifier=urn:oid:2.16.578.1.12.4.1.4.3|01048900000
Search for person first name starts with:
GET .../person?given=POL
Search for person first name contains:
GET .../person?given:contains=ROL
Search for person by a string which exactly matches with the first name: (_pretty default setting is
"true". You must send _pretty=false to match result case with the search string case.)
GET .../person?given:exact=ROL&_pretty=false
Search for person family name starts with:
GET .../person?family=COM
Search for person family name contains:
GET .../person?family:contains=ko
Search for person by a string which exactly matches with the family name: (_pretty default setting is
"true". You must send _pretty=false to match result case with the search string case.)
GET .../person?family:exact=Utskrevet&_pretty=false
Search for person by a string which matches with first name and active status is true:
GET .../person?given=POL&active=true
Search for person by a string which matches with first name and active status is false:
GET .../person?given=POL&active=false
Search for person by Person ID:
GET .../person?_id=ajf1000024
Search for person by Address:
GET .../person?address=Girogata 9
Search for person by Address - City:
GET .../person?address-city=Bodø
Search for person by Address - state:
GET .../person?address-state=NORDLAND FYLKESKOMMUNE
Search for person by Address - state code:
GET .../person?address-statecode=18
Search for person by Address - use:
GET .../person?address=Mystery Road 1249&address-use=true
Search for person by municipal:
GET .../person?municipal=Oslo
Search for person by district:
GET .../person?district=Oslo
Search for person by urban district:
GET .../person?urban-district=Sagene
Search for person by zip:
GET .../person?zip=8037
Search for person by a value in email contact:
GET .../person?email=name1@domain.com
Search for person by a value in phone contact:
GET .../person?phone=77635429
Search for person by a value in any Email, Mobile Phone, Phone and fax for the individual (telecom):
GET .../person?telecom=77635429
Search for person by a value in birthdate:
GET .../person?birthdate=1925-02-15
Search for person by a value in gender:
GET .../person?gender=kvinne
The create operation (https://www.hl7.org/fhir/http.html#create) creates a new resource at the server. The payload is a FHIR Person resource.
• Auth-Ticket = Valid ticket from the database • Content-Type = application/json • Method = POST • URL = https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/Person
{
"resourceType":"Person",
"identifier":[
{
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"80434218415"
}
],
"gender":"male"
}
{
"resourceType":"Person",
"identifier":[
{
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000"
}
],
"name":[
{
"use":"official",
"text":"Nystad, John",
"family":"Nystad",
"given":[
"John"
]
}
],
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804",
"display":"Bodø"
}
}
],
"url":"http://dips.no/fhir/StructureDefinition/R4/no-basis-propertyinformation"
}
],
"use":"home",
"postalCode":"8001"
}
]
}
{
"resourceType":"Person",
"identifier":[
{
"use":"official",
"system":"urn:oid:2.16.578.1.12.4.1.4.1",
"value":"01048900000"
},
{
"system":"http://dips.no/fhir/namingsystem/dips-personid",
"value":"2014819"
}
],
"name":[
{
"text":"Nystad, John",
"family":"Nystad",
"given":[
"John"
]
}
],
"gender":"male",
"address":[
{
"extension":[
{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804",
"display":"Bodø"
}
}
],
"url":"http://dips.no/fhir/StructureDefinition/R4/no-basis-propertyinformation"
},
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonStateName",
"valueString":"NORDLAND FYLKESKOMMUNE"
}
],
"use":"home",
"city":"Bodø",
"district":"Bodø",
"_district":{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSPersonMunicipality",
"valueCoding":{
"system":"urn:oid:2.16.578.1.12.4.1.1.3402",
"code":"1804",
"display":"Bodø"
}
}
]
},
"state":"18",
"postalCode":"8001",
"country":"Norway"
}
],
"active":true
}
Update person information
Table 21. OperationInformation
| PATH | https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/Person/{Person ID} |
| HTTP VERB | PUT |
Table 22. Updatable Parameters
| Parameter | Description |
|---|---|
| given | Update person’s existing First Name with a new String |
| family | Update person’s existing Family Name with a new String |
| address-line | Update person’s address line with a new String |
| address-city | Update person’s city. This can be done by updating the city along with the relevant PostalCode |
| postalCode | Update person’s postalCode. City gets updated along with this |
| district | Update person’s district with a new valid district |
| Municipality Code | Update person’s municipality code (when the municipality code is changed the relevant municipality name is also updated.) |
| fax | Update person’s fax number |
| phone | Update person’s phone number |
| Update person’s email address | |
| active | Update person’s status. Available statuses are true and false |
| Language id | Update person’s Language code |
| urban-district | Update person’s urban district |
Table 23. Non-Updatable Parameters
| Parameter | Description |
|---|---|
| id | Person ID cannot be updated |
| identifier | Person information by a human identifier cannot be updated |
| birthdate | Date of birth of a person cannot be updated |
| State | State specified in a person’s address cannot be updated |
| Country | Country specified in a person’s id cannot be updated |
The Practitioner resource implements the Norwegian Basis Practitioner and DIPSPractitioner profile with the following interactions:
Table 24. Supported FHIR Operations
| Operation | Supported |
|---|---|
| Read | Yes |
| VRead | No |
| Create | No |
| Update | No |
| History | No |
| Search | Yes |
| Delete | No |
| Patch | No |
Get practitioner by providing a person ID.
Table 25. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/practitioner/{id} |
| HTTP VERB | GET |
| id | Person ID |
Table 26. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/practitioner?{SearchParameters} |
| HTTP VERB | GET |
Table 27. Parameters
| Parameter | Description |
|---|---|
| identifier | Search for practitioner by identifier. This supports the following identifier searches: - 1. DIPSHPRIdentifier - urn:oid:2.16.578.1.12.4.1.4.4 - 2. DIPSFNRIdentifier - urn:oid:2.16.578.1.12.4.1.4.1 - 3. DIPSDNRIdentifier - urn:oid:2.16.578.1.12.4.1.4.2 - 4. Person identifier - http://dips.no/fhir/namingsystem/dips-personid |
| given | Search practitioner by the first name that starts with the given string |
| given:contains | Returns results that include the supplied parameter value anywhere within the first name field |
| given:exact | Returns results with the first name that matches the entire supplied parameter, including casing |
| family | Search practitioner by the last name that starts with the given string |
| family:contains | Returns results that include the supplied parameter value anywhere within the last name field |
| family:exact | Returns results with the last name that matches the entire supplied parameter, including casing |
| active | Search practitioner by status. Available statuses are true and false |
| _id | Search with person ID |
Example requests
Read practitioner info by person ID:
GET .../practitioner/stf39
Search for practitioner by DIPSHPRIdentifier:
GET .../practitioner?identifier=urn:oid:2.16.578.1.12.4.1.4.4|1234567
Search for practitioner by DIPSFNRIdentifier:
GET .../practitioner?identifier=urn:oid:2.16.578.1.12.4.1.4.1|04056600324
Search for practitioner by DIPSDNRIdentifier:
GET .../practitioner?identifier=urn:oid:2.16.578.1.12.4.1.4.2|30507300000
Search for practitioner by person Identifier:
GET .../practitioner?identifier=http://dips.no/fhir/namingsystem/dips-personid|267
Search for practitioner first name starts with:
GET .../practitioner?given=Kommunelegen
Search for practitioner first name contains:
GET .../practitioner?given:contains=munelegen
Search for practitioner by a string which exactly matches with the first name: (_pretty default setting is
"true". You must send _pretty=false to match result case with the search string case.)
GET .../practitioner?given:exact=KOMMUNELEGEN&_pretty=false
Search for practitioner family name starts with:
GET .../practitioner?family=HANS
Search for practitioner family name contains:
GET .../practitioner?family:contains=ANSEN
Search for practitioner by a string which exactly matches with the family name: (_pretty default setting
is "true". You must send _pretty=false to match result case with the search string case.)
GET .../practitioner?family:exact=HANSEMANN&_pretty=false
Search for practitioner by a string which matches with first name and active status is true:
GET .../practitioner?given=Frank&active=true
Search for practitioner by a string which matches with first name and active status is false:
GET .../practitioner?given=Frank&active=false
Search for practitioner by Person ID:
GET .../practitioner?_id=stf39
Read practitioner role information by providing HCP ID.
Table 28. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/PractitionerRole/{id} |
| HTTP VERB | GET |
| id | HCP ID |
Table 29. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/PractitionerRole?{SearchParameters} |
| HTTP VERB | GET |
Table 30. Parameters
| Parameter | Description |
|---|---|
| identifier | Search for practitioner role by identifier. This supports the following identifier searches:1. DIPSHCPIdentifier - urn:oid:1.3.6.1.4.1.9038.51.1 2. DIPSHERIdentifier - urn:oid:2.16.578.1.12.4.1.2 3. DIPSHCPCodeIdentifier - urn:oid:1.3.6.1.4.1.9038.51 4. DIPSHPRIdentifier - urn:oid:2.16.578.1.12.4.1.4.4 |
| organization | Search by organization ID which is associated with practitioner role |
| organization.identifier | This parameter is used to filter practitioner roles by organization number, when search by HPR identifier |
| organization.herid | Search by organization HER ID which is associated with practitioner role |
| organization.name | Search by organization name associated with practitioner role |
| organization.name:contains | Returns results with a portion of the organization’s name at any place |
| organization.name:exact | Returns results with organization name that matches the entire supplied parameter, including casing |
| active | Search practitioner role by status. Available statuses are true and false |
| _ID | Search with HCP ID |
Table 31. Includes
| Include | Description |
|---|---|
| _include=PractitionerRole:Organization | Include organization details which are associated with practitioner role |
| _include=PractitionerRole:practitioner | Include practitioner details which are associated with practitioner role |
| _include=PractitionerRole:location | Include location details which are associated with practitioner role |
| _include=PractitionerRole:service | Include HealthcareService details which are associated with practitioner role |
Example requests
Read practitioner role info by HCP ID:
GET .../PractitionerRole/agb1000203
Search for practitioner role by HCPIdentifier:
GET .../PractitionerRole?identifier=urn:oid:1.3.6.1.4.1.9038.51.1|1000203
Search for practitioner role by HERIdentifier:
GET .../PractitionerRole?identifier=urn:oid:2.16.578.1.12.4.1.2|889911
Search for practitioner role by HPRIdentifier:
GET .../PractitionerRole?identifier=urn:oid:2.16.578.1.12.4.1.4.4|1234567
Search for practitioner role by HCPCodeIdentifier:
GET .../PractitionerRole?identifier=urn:oid:1.3.6.1.4.1.9038.51|HA1
Search for practitioner role by Organization ID:
GET .../PractitionerRole?organization=aks1
Filter practitioner roles by organization number when search by HPR identifier.(Here organization number should search with HPRIdentifier)
GET
.../PractitionerRole??organization.identifier=urn:oid:2.16.578.1.12.4.1.4.101|970948139&identifier=ur
n:oid:2.16.578.1.12.4.1.4.4|1234567
Search for practitioner role by organization.herid:
GET .../PractitionerRole?organization.herid=80624
Search for practitioner role by organization.name:
GET .../PractitionerRole?organization.name=Andenes
Search for practitioner role by organization.name:contains:
GET .../PractitionerRole?organization.name:contains=ak
Search for practitioner role by organization.name:exact:
GET .../PractitionerRole?organization.name:exact=Andenes legekontor
Read practitioner role info by HCP ID and Include associated organization:
GET .../PractitionerRole?_id=agb1000203&_include=PractitionerRole:Organization
Search for practitioner role by organization aks1 and enable pagination showing two records per page
and show page 2 results:
GET .../PractitionerRole?organization=aks1&page=2&_count=2
Operation search using GetCurrentUser as the operation id will return the current logged in practitioner role with user role information. Operation ID - $GetCurrentUser
GET .../PractitionerRole/$GetCurrentUser
Table 32. Parameters
| Parameter | Description |
|---|---|
| active | Search practitioner role by status. Available statuses are true and false |
| _pretty | Format the case of the response strings. Available statuses are true and false. The default status is false |
Example requests
Search for practitioner role associated with the current user:
GET .../PractitionerRole/$GetCurrentUser
Search for active practitioner role data associated with the current user:
GET .../PractitionerRole/$GetCurrentUser?active=true
Search for inactive practitioner role data which associated with the current user:
GET .../PractitionerRole/$GetCurrentUser?active=false
Apply pretty for practitioner role information which associated with current user:
GET .../PractitionerRole/$GetCurrentUser?_pretty=true
Search for active practitioner role data associated with the current user and apply pretty:
GET .../PractitionerRole/$GetCurrentUser?active=true&_pretty=true
Use the GetUserRole query to search for Practitioner role by userroleid, dipssignature, userrolename & healthcareposition.
GET .../PractitionerRole?_query=GetUserRole&{SearchParameters}
Table 33. Parameters
| Parameter | Description |
|---|---|
| userroleid | Search practitioner role by user role id |
| dipssignature | Search practitioner role by Dips signature. Need to provide a full string |
| userrolename | Search practitioner role by user role name |
| userrolename:exact | Match the entire supplied user role name, including casing |
| userrolename:contains | A portion of the user role name at any place |
| healthcareposition | Search practitioner role by healthcare position |
| healthcareposition:exact | Match the entire supplied healthcare position, including casing |
| healthcareposition:contains | A portion of the healthcare position name at any place |
| active | Search by status. Available statuses are true and false |
Practitioner role Operation search examples based on $GetUserRole
Search practitioner role by user role ID:
GET .../PractitionerRole?_query=GetUserRole&userroleid=100
Search practitioner role by dips signature
GET .../PractitionerRole?_query=GetUserRole&dipssignature=KRE
Search practitioner role by healthcare position:
GET .../PractitionerRole?_query=GetUserRole&healthcareposition=Fysi
Search practitioner role by exact healthcare position:
GET .../PractitionerRole?_query=GetUserRole&healthcareposition:exact=Fysioterapeut
Search practitioner role by a portion of the healthcare position name:
GET .../PractitionerRole?_query=GetUserRole&healthcareposition:contains=Overlege
Search practitioner role by user role name:
GET .../PractitionerRole?_query=GetUserRole&userrolename=KRE
Search practitioner role by exact user role name:
GET .../PractitionerRole?_query=GetUserRole&userrolename:exact=KRE: Testplan for medikasjon
Search practitioner role by a portion of the healthcare position name and user role ID:
GET
.../PractitionerRole?_query=GetUserRole&userroleid=1000750&healthcareposition:contains=Overlege
Use the GetByHcpRoleName query to search for a Practitioner role by hcprolename
GET .../PractitionerRole?_query=GetByHcpRoleName&{SearchParameters}
Table 34. Parameters
| Parameter | Description |
|---|---|
| hcprolename | Search practitioner role by the healthcare position role name |
| hcprolename:exact | Match the entire supplied healthcare position role name, including casing |
| hcprolename:contains | A portion of the healthcare position role name at any place |
| active | Search by status. Available statuses are true and false |
Practitioner role advanced search examples based on GetByHcpRoleName
Search practitioner role by the healthcare position role name:
GET .../PractitionerRole?_query=GetByHcpRoleName&hcprolename=Onkolog
Search practitioner role by the exact healthcare position role name:
GET .../PractitionerRole?_query=GetByHcpRoleName&hcprolename:exact=Onkolog
Search practitioner role by a portion of the healthcare position role name:
GET .../PractitionerRole?_query=GetByHcpRoleName&hcprolename:contains=Onko
Search practitioner role by a portion of the healthcare position role name and enable pagination and
filter by active Practitioner:
GET
.../PractitionerRole?_query=GetByHcpRoleName&hcprolename:contains=On&active=true&page=1&_c
ount=2
Use the UserRoleProfile query to Search for Practitioner role based on user role id or ticket.
GET .../PractitionerRole?_query=UserRoleProfile&userrole=<userrole ID Or Ticket>
Table 35. Parameters
| Parameter | Description |
|---|---|
| userrole | This parameter is required. User role ID or ticket |
| active | Search practitioner role by status. Available statuses are true and false |
| _pretty | Format the case of the response strings. Available statuses are true and false.The default status is false |
Practitioner role advanced search examples based on UserRoleProfile
Search for practitioner data associated with user role ID 78:
GET .../PractitionerRole?_query=UserRoleProfile&userrole=78
Search for active practitioner data associated with user role ID 78:
GET .../PractitionerRole?_query=UserRoleProfile&userrole=78
Search for inactive practitioner data associated with user role ID 78 and status is true:
GET .../PractitionerRole?_query=UserRoleProfile&userrole=78&active=true
Search for inactive practitioner data associated with user role ID 78 and status is false:
GET .../PractitionerRole?_query=UserRoleProfile&userrole=78&active=false
Use the UserRoleProfileByPosition query to search for Practitioner role by healthcareposition, healthcareposition:exact, healthcareposition:contains, type and partof.
GET .../PractitionerRole?_query=UserRoleProfileByPosition&<Other supported parameters>
Table 36. Parameters
| Parameter | Description |
|---|---|
| healthcareposition | Search practitioner role by healthcare position |
| healthcareposition:exact | match the entire supplied healthcare position, including casing |
| healthcareposition:contains | A portion of the healthcare position name at any place |
| type | Search practitioner role by healthcare position CodeId |
| partof | Search practitioner role which is part of the Organization |
| active | Search by status. Available statuses are true and false |
Practitioner role advanced search examples based on UserRoleProfileByPosition
search for practitioner role by healthcareposition name:
GET .../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition=overlege
Search for practitioner role by exact healthcareposition name:
GET .../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition:exact=Overlege
Search practitioner role by portion of healthcare position name:
GET .../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition:contains=lege
Search for practitioner role by multiple exact names of healthcarepositions:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition:exact=Overlege&healthcare
position:exact=Lege
Search for practitioner role by mutiple healthcarepositions:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition=overlege&&healthcareposi
tion=Lege
Search for practitioner role by healthcare position CodeId:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&type=urn:oid:1.3.6.1.4.1.9038.52.3018|219505
Search for practitioner role by multiple healthcare position CodeId:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&type=urn:oid:1.3.6.1.4.1.9038.52.3018|219505
&type=urn:oid:1.3.6.1.4.1.9038.52.3018|219469
Search for practitioner role by Type and part of Organization:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&type=urn:oid:1.3.6.1.4.1.9038.52.3018|219505
&partof=Organization/aks1
Search practitioner role by portion of healthcare position name and enable pagination to show 10
results per page and show 2nd page:
GET
.../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition:contains=Lege&page=2&_c
ount=10
Search for practitioner role by healthcareposition name and status=true :
GET .../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition=Lege&active=true
Search for practitioner role by healthcareposition name and status=false :
GET .../PractitionerRole?_query=UserRoleProfileByPosition&healthcareposition=Lege&active=false
Table 37. Supported FHIR Operations
| Operation | Supported |
|---|---|
| Read | Yes |
| VRead | No |
| Create | No |
| Update | No |
| History | No |
| Search | Yes |
| Delete | No |
| Patch | No |
Read HealthcareService by providing a HealthcareService ID.
Table 38. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/HealthcareService/{id} |
| HTTP VERB | GET |
| id | HealthcareService ID |
Table 39. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/HealthcareService?{SearchParameters} |
| HTTP | VERB GET |
Table 40. Parameters
| Parameter | Description |
|---|---|
| identifier Search for HealthcareService by identifier. This supports the following identifier searches. 1. DIPSHCPIdentifier-urn:oid:1.3.6.1.4.1.9038.51.1 2. DIPSHERIdentifier-urn:oid:2.16.578.1.12.4.1.2 3. HealthcareServiceIdentifierhttp://dips.no/fhir/namingsystem/healthcareserviceId | |
| name | Search healthcare service by name which starts with the given value |
| name:contains | Returns results that include the supplied parameter value anywhere within the healthcare service name field |
| name:exact | Returns results that match the entire supplied parameter, including casing and accents |
| organization | Search healthcare service by organization ID |
| service-type | Search healthcare service by service type |
| active | Search healthcare service by status. Available statuses are true and false |
| _pretty | Format the case of the response strings. Available statuses are true and false |
| _page | Get the response by providing the page number |
| _count | The number of records to display for the given page |
| _id | Search with HealthcareService ID |
Table 41. Includes
| Include |
|---|
| _include=HealthcareService:organization |
| _include=HealthcareService:department |
| _include=HealthcareService:section |
| _include=HealthcareService:ward |
| _include=HealthcareService:hospital |
Example requests
Read healthcare service by HealthcareService ID:
GET .../HealthcareService/avcF64B2E39B7237702E043146A000A273D
Search healthcare service by DIPSHCPIdentifier:
GET .../HealthcareService?identifier=urn:oid:1.3.6.1.4.1.9038.51.1|12995
Search healthcare service by DIPSHERIdentifier:
GET .../HealthcareService?identifier=urn:oid:2.16.578.1.12.4.1.2|997635
Search healthcare service by Healthcare Service Identifier:
GET
.../HealthcareService?identifier=http://dips.no/fhir/namingsystem/healthcareserviceId|F1E097119EF5
4BCE8675892FF91641B2
Search healthcare service by name:
GET .../HealthcareService?name=Avsenderadresse
Search healthcare service by name:contains:
GET .../HealthcareService?name:contains=senderadresse
Search healthcare service by name:exact:
GET .../HealthcareService?name:exact=Avsenderadresse
Search healthcare service by Organization ID:
GET .../HealthcareService?organization=Organization/aks1
GET .../HealthcareService?organization=aks1
Search healthcare service by name which contains given string and active status is true:
GET .../HealthcareService?name:contains=deradr&active=true
Search healthcare service by organization aks1 and see the 3rd page and page record count is 5:
GET .../HealthcareService?organization=Organization/aks1&page=3&_count=5
Search healthcare service by service name starts with "Avsenderadresse" and view as it is stored in the
database:
GET .../HealthcareService?name=Avsenderadresse&_pretty=false
Search healthcare service by service name that starts with "Avsenderadresse" and apply pretty for the
name string:
GET .../HealthcareService?name=Avsenderadresse&_pretty=true
Search healthcare service by service-type:
GET .../HealthcareService?service-type=263142
Search healthcare service with healthcare service ID:
GET .../HealthcareService?_id=avcF64B2E39B7237702E043146A000A273D
The RelatedPersons typically have a personal or non-healthcare-specific professional relationship to the patient.
Get person information by providing a person ID.
Table 42. OperationInformation
| PATH | https://{server}/DIPS-WebAPI/HL7/FHIR-R4/RelatedPerson/{id} |
| HTTP VERB | GET |
| id | Related person ID |
Search for person information
Table 43. OperationInformation
| PATH | https://https://{server}/DIPS-WebAPI/HL7/FHIR-R4/RelatedPerson?{SearchParameters} |
| HTTP VERB | GET |
Table 44. Parameters
| Parameter | Description |
|---|---|
| identifier | Search for related person information by a human identifier for this person. This supports the following URNs. http://dips.no/fhir/namingsystem/dipsguardianid, http://dips.no/fhir/namingsystem/dips-relativeid or urn:oid:2.16.578.1.12.4.1.4.1 or urn:oid:2.16.578.1.12.4.1.4.2 or urn:oid:2.16.578.1.12.4.1.4.3 |
| _id | Search with related person ID |
| given | Search related person by the first name that starts with the given string |
| family | Search related person by the last name that starts with the given string |
| address | Related Persons' address |
| address-city | A city specified in an address |
| address-state | A state specified in an address |
| address-postalcode | A postal code specified in an address |
| birthdate | The person’s date of birth |
| phone | A value in a phone contact |
| A value in an email contact | |
| gender | The gender of the person.(M,m,male,Mann,K,k,Kvinne,Female,f,F,unknown,u,?,other,ukjent,ubestemt) |
| active | Search person by status. Available statuses are true and false |
| relationship | Search by The relationship of the person to the patient |
Table 45. Search Modifiers
| Modifier | Valid Parameters | Description |
|---|---|---|
| :contains | given, family | wild card search for the string supplied |
| :exact | given, family | Any person with a name that is exactly same as the search string |
{
"resourceType":"RelatedPerson",
"id":"aoz2015095cdp2015093",
"meta":{
"profile":[
"DIPSRelatedPerson",
"NoBasisRelatedPerson"
]
},
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/DIPSRelatedPersonParentalResponsibility",
"valueBoolean":true
}
],
"identifier":[
{
"use":"official",
"system":"http://dips.no/fhir/namingsystem/dips-relativeid",
"value":"aoz2015095cdp2015093"
}
],
"patient":{
"reference":"Patient/cdp2015093",
"identifier":{
"use":"official",
"system":"http://dips.no/fhir/namingsystem/dips-patientid",
"value":"2015093"
}
},
"relationship":[
{
"coding":[
{
"system":"urn:oid:1.3.6.1.4.1.9038.52.4353",
"code":"1",
"display":"Forelder/foresatt"
}
]
},
{
"coding":[
{
"system":"urn:oid:1.3.6.1.4.1.9038.52.1045",
"code":"104501",
"display":"Annen pårørende"
}
]
},
{
"coding":[
{
"system":"urn:oid:1.3.6.1.4.1.9038.52.3210",
"code":"7",
"display":"Fostermor"
}
]
},
{
"coding":[
{
"system":"http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype",
"code":"MTHFOST",
"display":"foster mother"
}
]
}
],
"name":[
{
"text":"Micheal, John",
"family":"Micheal",
"given":[
"John"
]
}
],
"telecom":[
{
"system":"phone",
"value":"123456789",
"use":"home"
},
{
"system":"email",
"value":"name1@domain.com",
"use":"home"
},
{
"system":"phone",
"value":"123456789",
"use":"mobile"
}
],
"gender":"male",
"birthDate":"2021-07-31",
"address":[
{
"extension":[
{
"url":"http://hl7.no/fhir/StructureDefinition/no-basis-urban-district",
"valueCoding":{
"system":"urn:oid:1.3.6.1.4.1.9038.52.1065",
"display":"Hundvåg"
}
},
{
"url":"http://hl7.no/fhir/StructureDefinition/no-basis-propertyinformation",
"valueCoding":{
"system":"urn:oid:1.3.6.1.4.1.9038.52.5",
"code":"1103",
"display":"Stavanger"
}
}
],
"use":"home",
"line":[
"No 100, Down Street"
],
"city":"Hafrsfjord",
"district":"ROGALAND FYLKESKOMMUNE",
"_district":{
"extension":[
{
"url":"http://dips.no/fhir/StructureDefinition/R4/MunicipalityCode",
"valueCoding":{
"system":"urn:oid:1.3.6.1.4.1.9038.52.5",
"code":"1103",
"display":"Stavanger"
}
}
]
},
"state":"11",
"postalCode":"4041",
"country":"Norway"
}
]
}
Read related person info by relative ID aoz1000067cdp1000063:
GET .../RelatedPerson/ajf1000024
Read related person info by guardian ID ain1000005:
GET .../RelatedPerson/ain1000005
Search for related person by relative identifier:
GET .../RelatedPerson?identifier=http://dips.no/fhir/namingsystem/dipsrelativeid|
aoz1000067cdp1000063
Search for related person by guardian identifier:
GET .../RelatedPerson?identifier=http://dips.no/fhir/namingsystem/dips-guardianid|1000005
Search for related person first name starts with:
GET .../RelatedPerson?given=POL
Search for related person first name contains:
GET .../RelatedPerson?given:contains=ROL
Search for related person by a string which exactly matches with the first name: (_pretty default setting
is "true". You must send _pretty=false to match result case with the search string case.)
GET .../RelatedPerson?given:exact=ROL&_pretty=false
Search for related person family name starts with:
GET .../RelatedPerson?family=COM
Search for related person family name contains:
GET .../RelatedPerson?family:contains=ko
Search for related person by a string which exactly matches with the family name: (_pretty default
setting is "true". You must send _pretty=false to match result case with the search string case.)
GET .../RelatedPerson?family:exact=Utskrevet&_pretty=false
Search for related person by a string which matches with first name and active status is true:
GET .../RelatedPerson?given=POL&active=true
Search for related person by a string which matches with first name and active status is false:
GET .../RelatedPerson?given=POL&active=false
Search for related person by Person ID:
GET .../RelatedPerson?_id=ajf1000024
Search for related person by Address:
GET .../RelatedPerson?address=Girogata 9
Search for related person by Address - City:
GET .../RelatedPerson?address-city=Bodø
Search for related person by Address - state:
GET .../RelatedPerson?address-state=NORDLAND FYLKESKOMMUNE
Search for related person by Address -postal code:
GET ...RelatedPerson?address-postal=18
Search for related person by a email contact:
GET .../RelatedPerson?email=name1@domain.com
Search for related person by contact number:
GET .../RelatedPerson?phone=77635429
Search for related person by a value in birthdate:
GET .../RelatedPerson?birthdate=1925-02-15
Search for related person by a value in gender:
GET .../RelatedPerson?gender=kvinne
Search for related person by a relationship:
GET .../RelatedPerson?relationship=urn:oid:1.3.6.1.4.1.9038.52.3508|3
DIPS FHIR R4 ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. ValueSets link between CodeSystem definitions and their use in coded elements. It also contains coding systems and limitations to coding systems in FHIR. Examples are medical coding systems as NCRP, NCSP, NCMP, and DIPS internal coding systems found in our administration user interface and coding systems used in FHIR R4 profiles.
Supports the following resources and operations.
Table 46. Supported FHIR resources
| Resources | Supported Interactions |
|---|---|
| ValueSet | Read, Search, Create, Update, VRead, Operations Search |
The read operation (https://www.hl7.org/fhir/http.html#read) gets a ValueSet by its Logical ID.
• Auth-Ticket = Valid ticket from database • Content-Type = application/json • Method = GET • URL = https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/ValueSet/{id}?_profile=DIPSR4ValueSet
Searching for ValueSets in DIPS FHIR follows the basic FHIR searching principles. ValueSets support the following subset of search parameters defined in the HL7 FHIR specification. (https://www.hl7.org/fhir/ http.html#search)
Auth-Ticket = Valid ticket from database • Content-Type = application/json • Method = GET • URL = https://{SERVER}/DIPS-WebAPI/HL7/FHIR-R4/ValueSet?{SearchParameters}& _profile=DIPSR4ValueSet
Table 47. Search Parameters
| Parameter | Description |
|---|---|
| code | Search ValueSet by code |
| code:contains | Search ValueSet by a portion of given code |
| code:exact | Search ValueSet by exact given code |
| identifier | Search ValueSet by code list identifier |
| name | Search ValueSet by Phrase, contains at the beginning of the code list name defined in the value set |
| name:contains | Search ValueSet by Phrase, contains at any position of the code list name defined in the ValueSet |
| name:exact | Search ValueSet by an exact code list name defined in the value set |
| status | Search ValueSet by statuses. Available statuses are "active" and "retired" |
| _pretty | Decides if the pretty output is true or false |
| reference | A code system included or excluded in the value set or an imported ValueSet |
| url | The logical URL for the ValueSet |
| description | Text search in the description of the ValueSet |
This section describes the input, output and explanation of properties of the Create method in FHIR ValueSet.
{
"resourceType":"ValueSet",
"id":"",
"meta":{
"profile":[
"DIPSValueSet"
]
},
"identifier":[
{
"system":"http://dips.no/fhir/namingsystem/codelist",
"value":"224"
}
],
"name":"TESTVALUESETCODES_224",
"url":"http://dips.no/fhir/ValueSet/TESTVALUESETCODES_224",
"date":"2020-11-19T22:40:00",
"contact":[
{
"name":"DIPS AS"
}
],
"status":"active",
"description":"This is a test valueset's descriptiopn 224",
"compose":{
"include":[
{
"system":"urn:oid:1.3.6.1.4.1.9038.52.224",
"concept":[
{
"code":"101",
"display":"1. Test 101"
},
{
"code":"202",
"display":"2. Test 202"
},
{
"code":"303",
"display":"Test 303"
},
{
"code":"404",
"display":"Test 404"
}
]
}
]
}
}
Output A complete ValueSet object is received from the JSON response, and it can be viewed from a Read Operation request.
Table 48. Mandatory Properties
| Property | Description | Example |
|---|---|---|
| status | The status of the ValueSet | "active", "preliminary" or "draft" |
| compose→include→code | One of the codes in the valueset | 10 |
Table 49. Optional Properties
| Property | Description | Example |
|---|---|---|
| identifier | Identifier for the ValueSet | "identifier": [ { "system":"http://dips.no/fhir/namingsystem/codelist", "value": "224"}] |
| name | Name of the ValueSet | DipsCoding1003ValueSet |
| url | URL used to identify ValueSet | http://dips.no/fhir/ValueSet/TESTVALUESETCODES_236 |
| description | Description of the ValueSet | "ValueSet of DIPS Coding 3226" |
The Update operation helps to update a Valueset by its Logical ID.
The VRead operation helps to read a Valueset by its Version ID itself.
ValueSet supports paging coded values included in the ValueSet. This can be used on larger ValueSets to reduce the amount of data returned. The operation used is stated as follows:
• additionalPagination
Table 50. Operations Search Parameters
| Property | Direction | Description |
|---|---|---|
| codeValuePageSize | in | Size of the page for included codes |
| codeValuePageNumber | in | Page of codes returned by the operation |
| codeValueIsValid | in | Filter codes of given code list ID by active/retired statuses |
• Representation of the ValueSet with coded values filtered by in parameters is received in the out direction as a ValueSet object.
GET .../ValueSet/agm510?_profile=DIPSR4ValueSet
GET .../ValueSet/agt542?_profile=DIPSR4ValueSet
GET .../ValueSet/{GUID}?_profile=DIPSR4ValueSet
GET .../ValueSet?code=1&_profile=DIPSR4ValueSet
GET .../ValueSet?code:contains=201&_profile=DIPSR4ValueSet
GET .../ValueSet?code:exact=215580&_profile=DIPSR4ValueSet
GET .../ValueSet?_id=agm510&_profile=DIPSR4ValueSet
GET .../ValueSet?_id=agt277&_profile=DIPSR4ValueSet
GET .../ValueSet?_id={GUID}&_profile=DIPSR4ValueSet
GET .../ValueSet?status=active&_profile=DIPSR4ValueSet
GET .../ValueSet?status=retired&_profile=DIPSR4ValueSet
GET DIPS internal value set
.../ValueSet?identifier=http://dips.no/fhir/namingsystem/codelist|510&_profile=DIPSR4ValueSet
GET Medical Coding value
set.../ValueSet?identifier=http://dips.no/fhir/namingsystem/medicinecode|277&_profile=DIPSR4Value
Set
GET GUID .../ValueSet?identifier=http://dips.no/fhir/namingsystem/dips-valueset|b0983ac1-a115-
41c2-94fb-cbee1f62c384&_profile=DIPSR4ValueSet
GET .../ValueSet?name=BW-STATUS&_profile=DIPSR4ValueSet
GET .../ValueSet?name:contains=STATUS&_profile=DIPSR4ValueSet
GET .../ValueSet?name:exact=BW-STATUS&_profile=DIPSR4ValueSet
GET .../ValueSet?url=http://dips.no/fhir/valueset/v1-OrgAccess&_profile=DIPSR4ValueSet
GET .../ValueSet?description=ValueSet of DIPS Coding 3230&_profile=DIPSR4ValueSet
GET .../ValueSet?code=2&status=active&_profile=DIPSR4ValueSet
GET .../ValueSet?code=2&status=active&name:contains=SYS-LOGOUTCODES&_profile=DIPSR4ValueSet
GET .../ValueSet?code=2&status=active&page=2&_count=5&_profile=DIPSR4ValueSet
GET .../ValueSet?code=2&status=active&_id=agm510&_profile=DIPSR4ValueSet
• Paging works independently of search parameters, where if not specified explicitly, default paging parameter values are taken from the web.config file. • Count & Page Standard Parameters common for any kind of search: http://www.hl7.org/fhir/ search.html
GET .../ValueSet?status=active&_count=<NoOfRecords>&page=<PageNo>
◦ _count : NoOfRecords = No of records Per single page (DEFAULT = 100)
GET
.../ValueSet/agm510/$additionalPagination?codeValuePageSize=1&codeValuePageNumber=1&codeVa
lueIsValid=1&_profile=DIPSR4ValueSet
GET
.../ValueSet/$additionalPagination?codeValuePageSize=5&codeValuePageNumber=2&_profile=DIPSR4
ValueSet
© 2023 DIPS AS
All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, transmitted, or
published to a third party, in any form or by any means, mechanical, electronic, photocopying,
recording, or otherwise, without prior written permission of DIPS AS.
OpenEHR is a registered trademark of OpenEHR Foundation. HL7®, CDA®, FHIR® and the FHIR
[FLAME DESIGN]® are the registered trademarks of Health Level Seven International.
All other trademarks mentioned herein are the property of their respective owners.
DIPS AS
Postboks 1435
8037 Bodø
Norway
https://www.dips.no
+47 75 59 20 00