Patient

This FHIR resource will be used to store the patient's demographic data.

Record Identification

The following are the mandatory fields used for patient matching to aggregate patient’s clinical data from various healthcare institutions:

  • Patient Identification (Patient MRN and Patient Document Identifier)
  • Patient Name
  • Date of Birth
  • Gender

If the patient is a foreigner and identification document is only passport, the following are the mandatory fields to be populated in the patient segment of the interface payload:

  • Document Identification Type (e.g. FP)
  • Nationality
  • Identification (i.e. passport number)

Updating Patient record

Other than updates to patient demographic attributes, it is also used to merge patient records and mark patient record for deletion.

Patient record merge

Patient merge request is only allowed for non-blacklisted sources. There are 4 validations:

  1. Blacklisted srcApp are not allowed to perform patient merge.

  2. ID Type’s must be populated in patient-identifier-type code set for patient merge validation.

  3. If ID Type is a permanent ID (STFGM) and merge type is s (Survivor), there will be checksum validation. Sources are subjected to checksum validation if they are not in the whitelist as there is a separate checksum validation for the demographic handler. Note that:

    • not all sources are configured to be validated for checksum in the demographic handler.
    • some ID Types will only be validated for checksum when sent by certain source applications. This is due to the exact same ID Type being sent by other sources and should not be subjected to this checksum validation.
  4. New patient merge scenario validations will be applicable for sources that are non-blacklisted and not allowed to skip patient merge validation.

The table below shows the ID Types that will be subjected to checksum validation.

ID Type (Obsolete) ID Type (Survivor) Use Case
Temporary ID Temporary ID For situations where patients forgot to bring their ID for consultation visits.
Temporary ID Passport For foreigners who were previously admitted without IDs (Unconscious on admission)
Temporary ID Permanent ID (STFGM) For patients (STFGM) who were previously admitted without IDs (Unconscious on admission)
Passport Passport For foreigners who have performed passport change while in / out of Singapore
Passport Permanent ID (STFGM) For foreigners who becomes a Singapore resident
S/T (Pink / Blue IC) FIN (F /G / M) For Singaporeans / PR who have renounced their Citizenship / PR status
FIN (F /G / M) S/T (Pink / Blue IC) For foreigners who have converted to Singaporean / PR

Patient record deletion

For genuine patient master cancellation, the active element will be set to false. Source to ensure patient's supportive transactional data (Clinical and registration) cancelled.

idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..0uri
language0..0codeBinding
textC0..1Narrative
containedC0..0Resource
raceC0..1Extension(code)
residencyStatusC0..1Extension(code)
occupationC0..1Extension(code)
vipFlagC0..1Extension(boolean)
vvipFlagC0..1Extension(boolean)
id0..0id
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ C1..1code
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
id0..0id
extensionC0..0Extension
startΣ C1..1dateTime
endΣ C0..1dateTime
url1..1uriFixed Value
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ C1..1code
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
modifierExtensionΣ ?! C0..0Extension
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
id0..0id
extensionC0..*Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ C1..1code
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
systemΣ1..1uri
valueΣ C1..1string
periodΣ0..0Period
assignerΣ0..0Reference(Organization)
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
typeΣ1..0CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ C1..1string
periodΣ0..0Period
assignerΣ0..0Reference(Organization)
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ C1..1code
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
systemΣ1..1uriFixed Value
valueΣ C1..1string
periodΣ0..0Period
assignerΣ0..0Reference(Organization)
activeΣ ?!0..0boolean
id0..0id
extensionC0..0Extension
useΣ ?!1..1codeBinding
textΣ0..1string
familyΣ0..1string
givenΣ0..1string
prefixΣ0..1stringBinding
suffixΣ0..0string
periodΣ0..0Period
id0..0id
extensionC0..0Extension
useΣ ?!1..1codeBindingFixed Value
textΣ0..1string
familyΣ0..1string
givenΣ0..1string
prefixΣ0..1stringBinding
suffixΣ0..0string
periodΣ0..0Period
id0..0id
extensionC0..0Extension
useΣ ?!1..1codeBindingFixed Value
textΣ0..1string
familyΣ0..0string
givenΣ0..0string
prefixΣ0..1stringBinding
suffixΣ0..0string
periodΣ0..0Period
id0..0id
extensionC0..0Extension
systemΣ C1..1codeBinding
valueΣ C1..1string
useΣ ?!1..1codeBinding
rankΣ0..0positiveInt
periodΣ0..0Period
genderΣ1..1codeBinding
id0..1string
birthCountryC0..1Extension(string)
value0..1System.Date
id0..1string
deceasedDateC0..1Extension(date)
value0..1System.Boolean
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
typeΣ1..1codeBindingFixed Value
textΣ0..0string
id0..1string
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
value0..1System.String
cityΣ0..1string
districtΣ0..0string
stateΣ0..0string
postalCodeΣ1..1string
countryΣ1..1string
periodΣ0..0Period
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ C1..1codeBinding
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
photo0..0Attachment
id0..0string
extensionC0..0Extension
modifierExtensionΣ ?! C0..0Extension
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ C1..1codeBinding
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
textΣ1..1string
familyΣ0..0string
givenΣ0..0string
prefixΣ0..0string
suffixΣ0..0string
periodΣ0..0Period
id0..0id
extensionC0..0Extension
systemΣ C1..1codeBinding
valueΣ C1..1string
useΣ ?!0..0codeBinding
rankΣ0..0positiveInt
periodΣ0..0Period
id0..0id
extensionC0..0Extension
systemΣ C1..1codeBindingFixed Value
valueΣ C1..1string
useΣ ?!0..0codeBinding
rankΣ0..0positiveInt
periodΣ0..0Period
id0..0id
extensionC0..0Extension
systemΣ C1..1codeBindingFixed Value
valueΣ C1..1string
useΣ ?!0..0codeBinding
rankΣ0..0positiveInt
periodΣ0..0Period
addressC0..0Address
gender0..0codeBinding
organizationC0..0Reference(Organization)
period0..0Period
id0..0string
extensionC0..0Extension
modifierExtensionΣ ?! C0..0Extension
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ C1..1codeBinding
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
preferred0..0boolean
generalPractitioner0..0Reference(Organization | Practitioner | PractitionerRole)
managingOrganizationΣ0..0Reference(Organization)
id0..0string
extensionC0..0Extension
modifierExtensionΣ ?! C0..0Extension
id0..0id
extensionC0..0Extension
referenceΣ C0..0string
typeΣ1..1uriBindingFixed Value
id0..0id
extensionC0..0Extension
useΣ ?!0..0codeBinding
id0..0id
extensionC0..0Extension
id0..0id
extensionC0..0Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ C1..1code
displayΣ C1..1string
userSelectedΣ0..0boolean
textΣ0..0string
systemΣ1..1uriFixed Value
valueΣ C1..1string
periodΣ0..0Period
assignerΣ0..0Reference(Organization)
displayΣ C0..0string
typeΣ1..1codeBinding
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueCodecode

id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueCodecode

id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueCodecode

id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueBooleanboolean

id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueBooleanboolean

id0..1id
id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueCodeableConceptCodeableConcept
id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valuePeriodPeriod
url1..1uriFixed Value

id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueCodeableConceptCodeableConcept
Address.line
id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring

id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring

id0..1id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring

birthDate
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring

deceased[x]
id0..0id
extensionC0..0Extension
url1..1uriFixed Value
valueDatedate

Terminologies

PathBinding StrengthValue Set (Code System)Description
Patient.extension.value[x]requiredhttp://terminology.hl7.org/ValueSet/v3-ReligiousAffiliation
Patient.identifier.typeextensiblehttp://hl7.org/fhir/ValueSet/identifier-type

A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

Patient.identifier.typerequiredhttps://fhir.synapxe.sg/ValueSet/patient-identifier-type

A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

Patient.name.userequiredhttp://hl7.org/fhir/ValueSet/name-use|5.0.0

The use of a human name.

Patient.name.prefixrequiredhttps://fhir.synapxe.sg/ValueSet/name-title
Patient.name.userequiredhttp://hl7.org/fhir/ValueSet/name-use|5.0.0

The use of a human name.

Patient.name.prefixrequiredhttps://fhir.synapxe.sg/ValueSet/name-title
Patient.name.userequiredhttp://hl7.org/fhir/ValueSet/name-use|5.0.0

The use of a human name.

Patient.name.prefixrequiredhttps://fhir.synapxe.sg/ValueSet/name-title
Patient.telecom.systemrequiredhttp://hl7.org/fhir/ValueSet/contact-point-system|5.0.0

Telecommunications form for contact point.

Patient.telecom.userequiredhttp://hl7.org/fhir/ValueSet/contact-point-use|5.0.0

Use of contact point.

Patient.genderrequiredhttp://hl7.org/fhir/ValueSet/administrative-gender|5.0.0

The gender of a person used for administrative purposes.

Patient.address.typerequiredhttps://fhir.synapxe.sg/ValueSet/address-types

The type of an address (physical / postal).

Patient.maritalStatusrequiredhttp://hl7.org/fhir/ValueSet/marital-status

The domestic partnership status of a person.

Patient.maritalStatus.coding.coderequiredhttp://hl7.org/fhir/ValueSet/marital-status
Patient.contact.relationshiprequiredhttp://hl7.org/fhir/ValueSet/patient-contactrelationship

The relationship between a patient and the next-of-kin for that patient.

Patient.contact.relationship.coding.coderequiredhttp://hl7.org/fhir/ValueSet/patient-contactrelationship
Patient.contact.telecom.systemrequiredhttp://hl7.org/fhir/ValueSet/contact-point-system|5.0.0

Telecommunications form for contact point.

Patient.contact.telecom.systemrequiredhttp://hl7.org/fhir/ValueSet/contact-point-system|5.0.0

Telecommunications form for contact point.

Patient.contact.telecom.systemrequiredhttp://hl7.org/fhir/ValueSet/contact-point-system|5.0.0

Telecommunications form for contact point.

Patient.communication.languagerequiredhttp://hl7.org/fhir/ValueSet/all-languages|5.0.0

IETF language tag for a human language

Patient.communication.language.coding.coderequiredhttp://hl7.org/fhir/ValueSet/all-languages|5.0.0
Patient.link.other.typeextensiblehttp://hl7.org/fhir/ValueSet/resource-types

Aa resource (or, for logical models, the URI of the logical model).

Patient.link.other.identifier.typerequiredhttps://fhir.synapxe.sg/ValueSet/patient-identifier-type

A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

Patient.link.typerequiredhttps://fhir.synapxe.sg/ValueSet/merge-type

The type of link between this patient resource and another Patient resource, or Patient/RelatedPerson when using the seealso code

XML to FHIR Mapping

XML Element FHIR Resource Element
patient/identification/id Patient.identifier(system=https://fhir.synapxe.sg/NamingSystem/patientIdentifier).value
patient/identification/MRNNumber Patient.identifier(system=https://fhir.synapxe.sg/NamingSystem/mrn).value
patient/identification/type Patient.identifier(system=https://fhir.synapxe.sg/NamingSystem/patientIdentifier).type
patient/identification/patientMergeType Patient.link.type
patient/name/value Patient.name(use=official).text
patient/name/title Patient.name(use=official).prefix
patient/aliasName/value Patient.name(use=nickname).text
patient/aliasName/title Patient.name(use=nickname).prefix
patient/contactDetails/address/type Patient.address.type
patient/contactDetails/address/streetLine1 Patient.address.line.extension:streetName.value
patient/contactDetails/address/streetLine2 Patient.address.line.extension:houseNo.value
patient/contactDetails/address/streetLine3 Patient.address.line.extension:unitNo.value
patient/contactDetails/address/streetLine4 Patient.address.line.extension:unitNo.value
patient/contactDetails/address/city Patient.address.city
patient/contactDetails/address/country Patient.address.country
patient/contactDetails/address/postalCode Patient.address.postalCode
patient/contactDetails/phone/type Patient.telecom(system=phone).use
patient/contactDetails/phone/countryCode Patient.telecom(system=phone).value
patient/contactDetails/phone/areaCode Patient.telecom(system=phone).value
patient/contactDetails/phone/phoneNumber Patient.telecom(system=phone).value
patient/contactDetails/phone/extensionNumber Patient.telecom(system=phone).value
patient/dateOfBirth Patient.birthDate
patient/countryOfBirth Patient.birthDate.extension:birthCountry
patient/gender Patient.gender
patient/emailAddress Patient.telecom(system=email).value
patient/nationality Patient.extension:nationality
patient/race Patient.extension:race
patient/residencyStatus Patient.extension:residencyStatus
patient/language Patient.communication.language
patient/maritalStatus Patient.maritalStatus
patient/occupation Patient.extension:occupation
patient/VIPFlag Patient.extension:VIPFlag
patient/VVIPFlag Patient.extension:VVIPFlag
patient/dateOfDeath Patient.deceasedBoolean.extension:deceasedDate
patient/deathIndicator Patient.deceasedBoolean
patient/religion Patient.extension:religion
patient/nextOfKin/name Patient.contact.name.text
patient/nextOfKin/phone Patient.contact.telecom(system=phone).value
patient/nextOfKin/relationship Patient.contact.relationship
patient/nextOfKin/email Patient.contact.telecom(system=email).value