Patient

Concept

A person who is (or has been) receiving medication controlled by the HealthCareProvider using NCare.

Purpose

Recording relevant information to identify the patient for administrative purposes and process support.

Profiles

NL-Core-Patient

The basic Patient resource as defined by the Dutch Health and Care Information models or HCIM/ZIB (Dutch: Zorginformatiebouwsteen or ZIB) Patient, with additions from the HCIMs Nationality, MaritalStatus, ContactPerson, LanguageProficiency, HealthProfessional and HealthcareProvider (HCIM releases 2015, 2016 and 2017) The Patient resource in NCare is exchanged according to the FHIR NL-Core-Patient profile

idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
textI0..1Narrative
contained0..*Resource
preferredPharmacyI0..1Extension
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueCodeableConcept0..1CodeableConceptBinding
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valuePeriod0..1Period
url1..1uriFixed Value
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
modifierExtension?! I0..*Extension
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(http://hl7.org/fhir/StructureDefinition/Organization)
activeΣ ?!0..1boolean
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueCode0..1codeBinding
useΣ ?!0..1codeBinding
textΣ0..1string
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
value0..1
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueCode0..1codeBinding
value0..1
prefixΣ0..*string
suffixΣ0..*string
periodΣ I0..1Period
telecomΣ I0..*http://fhir.nl/fhir/StructureDefinition/nl-core-contactpoint
id0..1string
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
valueCodeableConcept1..1CodeableConceptBinding
value0..1
birthDateΣ0..1date
deceasedBooleanboolean
deceasedDateTimedateTime
addressΣ I0..*http://fhir.nl/fhir/StructureDefinition/nl-core-address
maritalStatus0..1CodeableConceptBinding
multipleBirthBooleanboolean
multipleBirthIntegerinteger
photoI0..*Attachment
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
relationship0..*CodeableConceptBinding
role0..*CodeableConceptBinding
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueCode0..1codeBinding
useΣ ?!0..1codeBinding
textΣ0..1string
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueString0..1string
value0..1
id0..1string
id0..1string
extensionI0..0Extension
url1..1uriFixed Value
valueCode0..1codeBinding
value0..1
prefixΣ0..*string
suffixΣ0..*string
periodΣ I0..1Period
telecomI0..*http://fhir.nl/fhir/StructureDefinition/nl-core-contactpoint
addressI0..1http://fhir.nl/fhir/StructureDefinition/nl-core-address
gender0..1codeBinding
organizationI0..1Reference(http://hl7.org/fhir/StructureDefinition/Organization)
periodI0..1Period
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
speciesΣ1..1CodeableConcept
breedΣ0..1CodeableConcept
genderStatusΣ0..1CodeableConcept
id0..1string
id0..1string
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
valueCoding1..1CodingBinding
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
valueCoding1..1CodingBinding
url1..1uriFixed Value
commentI0..*Extension
modifierExtensionΣ ?! I0..*Extension
language1..1CodeableConceptBinding
preferred0..1boolean
id0..1string
practitionerRoleI0..1Extension
referenceΣ I0..1string
identifierΣ0..1Identifier
displayΣ0..1string
managingOrganizationΣ I0..1Reference(http://hl7.org/fhir/StructureDefinition/Organization)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
otherΣ I1..1Reference(http://hl7.org/fhir/StructureDefinition/Patient | http://hl7.org/fhir/StructureDefinition/RelatedPerson)
typeΣ1..1codeBinding

Identifiers

Besides the BSN Identifier specified by the NL-Core-Patient profile, FHIR Server for NCare also supports a local system identifier and an external identifier.

The system for the local system identifier is http://ncare.nl/fhir/NamingSystem/localid This identifier is used by NCare and cannot be changed. The value of this identifier is the same as the resource.id element in case of a Patient resource. The identifier can be used for searches or chaining. If the system identifier is specified in a UPDATE request, it will be used as conditional parameter, meaning it will look for a patient with this id to update. If it's used in a CREATE, an error will be thrown.

The system for external identifier is http://ncare.nl/fhir/NamingSystem/externalid. This identifier can be set through UPDATE and CREATE and can be used for later references (eg. store the id of your system)

Custom rules

CREATE command has some extra rules

When creating a new patient record, some extra rules apply for ncare on top of the default nl-core-patient rules.

  • the identifier:BSN field is mandatory
  • the generalPractitioner field is mandatory, it needs to contain a valid reference to a generalPractitioner known by NCare
  • the managingOrganization field is mandatory unless your authorization token only has access to one organization, in that case that organization is set as the managingOrganization
  • the extension http://fhir.nl/fhir/StructureDefinition/nl-core-preferred-pharmacy needs to be added to the patient's extensions field (with a valid pharmacy reference as it's value). If these mandatory fields are not added for new clients, an error-response will be returned.

Important: Please note that if you have successfully created a new patient, the patient will not show up in the NCare application untill you created a valid Encounter for the patient also.

Ignored properties

Although the complete NL-Core-Patient profile is accepted by FHIR Server for NCare, we only store the patient data that is needed for the NCare application. The properties we don't store can therefore not be returned when the resource is retrieved with a get of course.

The properties of NL-Core-Patient that we ignore are:

  • multipleBirth
  • animal
  • link
  • photo -> although NCare uses photo's, this is not supported by the FHIR Server for NCare yet yet

REST API

API Supported Command Comment
read yes GET /Patient/
vread no If a version is specified, we ignore it, the latest version is always returned
update yes PUT /Patient/
update with optimistic locking yes PUT /Patient/
If-Match: W/""
https://www.hl7.org/fhir/http.html#concurrency
update (conditional) yes PUT /Patient?[search parameters] https://www.hl7.org/fhir/http.html#cond-update
patch yes PATCH /Patient/ Support for JSON Patch only. We have included a workaround to use JSON Patch in a bundle in this PR.
patch (conditional) no
delete no A hard or soft delete for a patient is not supported. If you want to register the patient as no longer being under the care of your organization, you can specify that with an Encounter
delete (conditional) no
history no
create yes POST /Patient
PUT /Patient
Support both POST/PUT (Upsert)
create (conditional) yes
search yes GET /Patient?[search parameters] See Overview of FHIR Search.
chained search no chained searches are not supported atm
reverse chained search no chained searches are not supported atm
batch no
transaction no
paging yes
intermediaries no

Example

ncare | J Fransen, Is - SIMPLIFIER.NET

<Patient xmlns="http://hl7.org/fhir">
    <id value="30000000" />
    <meta>
        <versionId value="ticks/637635713173880955" />
        <lastUpdated value="2021-08-03T07:08:37.3880955+00:00" />
        <profile value="http://fhir.nl/fhir/StructureDefinition/nl-core-patient" />
    </meta>
    <extension url="http://fhir.nl/fhir/StructureDefinition/nl-core-preferred-pharmacy">
        <valueReference>
            <reference value="Organization/Pharmacy.2382" />
            <display value="Apotheek De Schelft" />
        </valueReference>
    </extension>
    <identifier>
        <use value="official" />
        <system value="http://fhir.nl/fhir/NamingSystem/bsn" />
        <value value="43566029" />
    </identifier>
    <identifier>
        <use value="official" />
        <system value="http://ncare.nl/fhir/NamingSystem/localid" />
        <value value="30000000" />
    </identifier>
    <name>
        <extension url="http://hl7.org/fhir/StructureDefinition/humanname-assembly-order">
            <valueCode value="NL3" />
        </extension>
        <use value="official" />
        <text value="J Fransen, Is" />
        <family value="J Fransen, Is" />
    </name>
    <gender value="male" />
    <birthDate value="1929-12-31" />
    <deceasedBoolean value="true" />
    <address>
        <extension url="http://nictiz.nl/fhir/StructureDefinition/zib-AddressInformation-AddressType">
            <valueCodeableConcept>
                <coding>
                    <system value="http://hl7.org/fhir/v3/AddressUse" />
                    <code value="HP" />
                </coding>
                <text value="Officieel adres" />
            </valueCodeableConcept>
        </extension>
        <extension url="http://fhir.nl/fhir/StructureDefinition/nl-core-address-official">
            <valueBoolean value="true" />
        </extension>
        <use value="home" />
        <line value="Zijstraat 1">
            <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
                <valueString value="Zijstraat" />
            </extension>
            <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
                <valueString value="1" />
            </extension>
        </line>
        <city value="Amsterdam" />
        <postalCode value="1000AA" />
    </address>
    <managingOrganization>
        <reference value="Organization/Organization.48202" />
        <display value="Huize NControl" />
    </managingOrganization>
</Patient>