The Patient resource is a central resource in the eHealth infrastructure. It plays a number of different roles:
- Convey basic information about the patient (name, address, birth date, gender, civil registration number, demographics information, etc.)
- Convey extended information about the patient
- Contact information
- Language / Need for an interpreter
- Temporary addresses
- General practitioner
- Other resources are created with a reference to a Patient, e.g.
- RelatedPerson (Pårørende)
- CarePlan (Telemedicinsk pakke)
- EpisodeOfCare (Tilbud om telemedicinsk pakke)
- Etc.
- A Patient resource refers to an Organization in the field ManagingOrganization. This organization is the custodian (Dataejer) of all data that is hooked up on that Patient resource. This also means that the patient-related data will be restricted, such that users from other organizations cannot read or update it, unless mandated by an associated CareTeam.
NOTE that different organizations should use different Patient resources for the same patient! Also the same organization should only use a single Patient resource, even if administering several CarePlans by separate CareTeams. Here "the same organization" means "the same organization Identifier" - so different departments of the same hospital may very well have separate Patient resources for the same patient, if they are identified by different Organization Identifiers. Organization Identifiers are generally governed by Sundhedsvæsenets Organisationsregister (SOR).
Instructions - in the current ("stub") version
In the current version of the Patient resource, patients are created using a custom operation. The current version is a stub and does NOT yet collect certain information from national registers (via NSP SCES, Stamdata CPR Enkeltopslag Service). This means that the returned Patient is only sparsely populated with a random name and a managing organization. The parameters needed to create a Patient is the social security number, a list of policies by which the patient care is acting under and a reference to the managing organization.
Java example:
Parameters in = new Parameters(); in.addParameter().setName("crn").setValue(new Identifier().setSystem("urn:oid:1.2.208.176.1.2").setValue("2810887020")); in.addParameter().setName("managingOrganization").setValue(new Reference() .setIdentifier(new Identifier().setSystem("urn:oid:1.2.208.176.1.1").setValue("260481000016005"))); in.addParameter().setName("policy").setValue(new UriType().setValue("https://danskelove.dk/sundhedsloven")); Parameters result = client.operation().onType(Patient.class).named("createPatientFromPerson") .withParameters(in).execute();
Example HTTP request:
POST /Patient/$createPatient Content-Type: text/xml; extended-operation-type Accept: */* Host: localhost:8080 accept-encoding: gzip, deflate content-length: 689 <Parameters xmlns="http://hl7.org/fhir"> <parameter> <name value="crn" /> <valueIdentifier> <system value="urn:oid:1.2.208.176.1.2" /> <value value="2810887020" /> </valueIdentifier> </parameter> <parameter> <name value="policy" /> <valueUri value="https://danskelove.dk/sundhedsloven" /> </parameter> <parameter> <name value="managingOrganization" /> <valueReference> <identifier> <system value="urn:oid:1.2.208.176.1.1" /> <value value="275891000016005" /> </identifier> </valueReference> </parameter> </Parameters>
Example HTTP response from current stub:
HTTP/1.1 200 status: 200 Date: Wed, 20 Feb 2019 09:00:35 GMT X-Powered-By: Trifork Content-Type: application/fhir+xml;charset=utf-8 Content-Encoding: gzip Transfer-Encoding: chunked Server: Jetty(9.4.14.v20181114) <Parameters xmlns="http://hl7.org/fhir"> <parameter> <resource> <Patient xmlns="http://hl7.org/fhir"> <id value="9952"/> <meta> <versionId value="1"/> <lastUpdated value="2019-02-19T14:54:26.894+01:00"/> <profile value="http://trifork.dk/fhir/StructureDefinition/dk-tm-patient"/> </meta> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"> <div class="hapiHeaderText">Given Test 1615618386 <b>FAMILY TEST 1592826680 </b> </div> <table class="hapiPropertyTable"> <tbody> <tr> <td>Identifier</td> <td>0107729996</td> </tr> </tbody> </table> </div> </text> <identifier> <system value="urn:oid:1.2.208.176.1.2"/> <value value="0107729996"/> </identifier> <name> <family value="Family Test 1592826680"/> <given value="Given Test 1615618386"/> </name> <managingOrganization> <identifier> <system value="urn:oid:1.2.208.176.1.1"/> <value value="275891000016005"/> </identifier> </managingOrganization> </Patient> </resource> </parameter> </Parameters>
Example HTTP response as intended:
HTTP/1.1 200 status: 200 Date: Wed, 20 Feb 2019 09:00:35 GMT X-Powered-By: Trifork Content-Type: application/fhir+xml;charset=utf-8 Content-Encoding: gzip Transfer-Encoding: chunked Server: Jetty(9.4.14.v20181114) <Parameters xmlns="http://hl7.org/fhir"> <parameter> <resource> <Patient xmlns="http://hl7.org/fhir"> <id value="9952"/> <identifier> <system value="urn:oid:1.2.208.176.1.2"/> <value value="2810887020"/> </identifier> <name> <family value="Møller"/> <given value="Anne"/> <given value="Holm"/> </name> <birthDate value="1988-10-28"/> <address> <extension url="http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-municipality-code"> <valueCoding> <system value="urn:oid:1.2.208.176.8.1.100"/> <code value="370"/> <display value="Næstved"/> </valueCoding> </extension> <extension url="http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-regional-subdivision-code"> <valueCoding> <system value="urn:iso:std:iso:3166-2:DK"/> <code value="085"/> <display value="Region Sjælland"/> </valueCoding> </extension> <line value="Bjergagervej 110"/> <city value="Karrebæksminde"/> <postalCode value="4736"/> </address> <managingOrganization> <identifier> <system value="urn:oid:1.2.208.176.1.1.2"/> <value value="260481000016005"/> </identifier> <display value="Lungemedicinsk Ambulatorium"/> </managingOrganization> </Patient> </resource> </parameter> </Parameters>