Azure’s Support for Health Care: Quick Overview
Part 1: Introduction to FHIR
Access to healthcare is a critical issue, as it can have a significant impact on an individual’s overall health and well-being.
The use of health devices has become increasingly common in recent years, due in part to the increasing availability of these devices and the growing emphasis on preventative healthcare. Health devices can be a crucial tool for individuals looking to manage their health and for healthcare providers looking to monitor and treat their patients.
There is a high demand for standardized formats to support all devices and interactions.
FHIR
FHIR (Fast Healthcare Interoperability Resources) is a modern, lightweight standard for exchanging healthcare information electronically.
It is based on web technologies and is designed to be both human and machine readable. FHIR was developed by HL7, an international standards organization for healthcare informatics, and is now widely used in the healthcare industry.
One of the key challenges in healthcare today is the lack of interoperability between different systems and organizations. FHIR helps to address this issue by providing a standard way for different systems to communicate and exchange data. This enables better care coordination and can help to improve patient outcomes
One of the key benefits of FHIR is its flexibility. It can be used to exchange a wide range of healthcare data, including electronic health records, clinical documents, and patient data. It also supports a variety of use cases, such as data sharing between healthcare providers, population health management, and personal health record systems.
Here is a simple example to help understand FHIR:
Imagine that you are in a hospital, and you have a medical record that contains information about your health, such as your allergies, medications, and past surgeries. This record is stored in the hospital’s electronic health record (EHR) system.
Now, let’s say that you move to a different city and need to see a new doctor. You would like your new doctor to have access to your medical record so that they can provide the best possible care. However, the hospital’s EHR system is not compatible with the doctor’s EHR system.
This is where FHIR comes in. FHIR allows the hospital’s EHR system to share your medical record with the doctor’s EHR system in a standardized format. This way, the doctor can easily access and view your medical record and make informed decisions about your care.
I hope this example helps to give you an understanding of how FHIR can be used to improve healthcare.
Ref: Patient-example.json — FHIR v4.3.0 (hl7.org)
{
"resourceType": "Patient",
"id": "example",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n\t\t\t<table>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Name</td>\n\t\t\t\t\t\t<td>Peter James \n <b>Chalmers</b> ("Jim")\n </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Address</td>\n\t\t\t\t\t\t<td>534 Erewhon, Pleasantville, Vic, 3999</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Contacts</td>\n\t\t\t\t\t\t<td>Home: unknown. Work: (03) 5555 6473</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Id</td>\n\t\t\t\t\t\t<td>MRN: 12345 (Acme Healthcare)</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>"
},
"identifier": [
{
"use": "usual",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MR"
}
]
},
"system": "urn:oid:1.2.36.146.595.217.0.1",
"value": "12345",
"period": {
"start": "2001-05-06"
},
"assigner": {
"display": "Acme Healthcare"
}
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Chalmers",
"given": [
"Peter",
"James"
]
},
{
"use": "usual",
"given": [
"Jim"
]
},
{
"use": "maiden",
"family": "Windsor",
"given": [
"Peter",
"James"
],
"period": {
"end": "2002"
}
}
],
"telecom": [
{
"use": "home"
},
{
"system": "phone",
"value": "(03) 5555 6473",
"use": "work",
"rank": 1
},
{
"system": "phone",
"value": "(03) 3410 5613",
"use": "mobile",
"rank": 2
},
{
"system": "phone",
"value": "(03) 5555 8834",
"use": "old",
"period": {
"end": "2014"
}
}
],
"gender": "male",
"birthDate": "1974-12-25",
"_birthDate": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",
"valueDateTime": "1974-12-25T14:35:45-05:00"
}
]
},
"deceasedBoolean": false,
"address": [
{
"use": "home",
"type": "both",
"text": "534 Erewhon St PeasantVille, Rainbow, Vic 3999",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
}
],
"contact": [
{
"relationship": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0131",
"code": "N"
}
]
}
],
"name": {
"family": "du Marché",
"_family": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix",
"valueString": "VV"
}
]
},
"given": [
"Bénédicte"
]
},
"telecom": [
{
"system": "phone",
"value": "+33 (237) 998327"
}
],
"address": {
"use": "home",
"type": "both",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
},
"gender": "female",
"period": {
"start": "2012"
}
}
],
"managingOrganization": {
"reference": "Organization/1"
}
}
Concepts in the FHIR Framework
REST APIs
Documents (CDA)
Messaging
Services
RESOURCE
In the FHIR (Fast Healthcare Interoperability Resources) Standard, a resource is the smallest unit of data that contains meaningful information. It is a fundamental building block of the standard
Resourcelist — FHIR v4.3.0 (hl7.org)
Example:
Patient
Encounter
Appointment
Ref:Encounter — FHIR v4.3.0 (hl7.org)
{
"resourceType" : "Encounter",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"identifier" : [{ Identifier }], // Identifier(s) by which this encounter is known
"status" : "<code>", // R! planned | arrived | triaged | in-progress | onleave | finished | cancelled +
"statusHistory" : [{ // List of past encounter statuses
"status" : "<code>", // R! planned | arrived | triaged | in-progress | onleave | finished | cancelled +
"period" : { Period } // R! The time that the episode was in the specified status
}],
"class" : { Coding }, // R! Classification of patient encounter
"classHistory" : [{ // List of past encounter classes
"class" : { Coding }, // R! inpatient | outpatient | ambulatory | emergency +
"period" : { Period } // R! The time that the episode was in the specified class
}],
"type" : [{ CodeableConcept }], // Specific type of encounter
"serviceType" : { CodeableConcept }, // Specific type of service
"priority" : { CodeableConcept }, // Indicates the urgency of the encounter
"subject" : { Reference(Group|Patient) }, // The patient or group present at the encounter
"episodeOfCare" : [{ Reference(EpisodeOfCare) }], // Episode(s) of care that this encounter should be recorded against
"basedOn" : [{ Reference(ServiceRequest) }], // The ServiceRequest that initiated this encounter
"participant" : [{ // List of participants involved in the encounter
"type" : [{ CodeableConcept }], // Role of participant in encounter
"period" : { Period }, // Period of time during the encounter that the participant participated
"individual" : { Reference(Practitioner|PractitionerRole|RelatedPerson) } // Persons involved in the encounter other than the patient
}],
"appointment" : [{ Reference(Appointment) }], // The appointment that scheduled this encounter
"period" : { Period }, // The start and end time of the encounter
"length" : { Duration }, // Quantity of time the encounter lasted (less time absent)
"reasonCode" : [{ CodeableConcept }], // Coded reason the encounter takes place
"reasonReference" : [{ Reference(Condition|ImmunizationRecommendation|
Observation|Procedure) }], // Reason the encounter takes place (reference)
"diagnosis" : [{ // The list of diagnosis relevant to this encounter
"condition" : { Reference(Condition|Procedure) }, // R! The diagnosis or procedure relevant to the encounter
"use" : { CodeableConcept }, // Role that this diagnosis has within the encounter (e.g. admission, billing, discharge …)
"rank" : "<positiveInt>" // Ranking of the diagnosis (for each role type)
}],
"account" : [{ Reference(Account) }], // The set of accounts that may be used for billing for this Encounter
"hospitalization" : { // Details about the admission to a healthcare service
"preAdmissionIdentifier" : { Identifier }, // Pre-admission identifier
"origin" : { Reference(Location|Organization) }, // The location/organization from which the patient came before admission
"admitSource" : { CodeableConcept }, // From where patient was admitted (physician referral, transfer)
"reAdmission" : { CodeableConcept }, // The type of hospital re-admission that has occurred (if any). If the value is absent, then this is not identified as a readmission
"dietPreference" : [{ CodeableConcept }], // Diet preferences reported by the patient
"specialCourtesy" : [{ CodeableConcept }], // Special courtesies (VIP, board member)
"specialArrangement" : [{ CodeableConcept }], // Wheelchair, translator, stretcher, etc.
"destination" : { Reference(Location|Organization) }, // Location/organization to which the patient is discharged
"dischargeDisposition" : { CodeableConcept } // Category or kind of location after discharge
},
"location" : [{ // List of locations where the patient has been
"location" : { Reference(Location) }, // R! Location the encounter takes place
"status" : "<code>", // planned | active | reserved | completed
"physicalType" : { CodeableConcept }, // The physical type of the location (usually the level in the location hierachy - bed room ward etc.)
"period" : { Period } // Time period during which the patient was present at the location
}],
"serviceProvider" : { Reference(Organization) }, // The organization (facility) responsible for this encounter
"partOf" : { Reference(Encounter) } // Another Encounter this encounter is part of
}
What is Codeable Concept?
A Codeable Concept is a value that can be represented by referencing one or more terminologies or by defining it with text.
A FHIR resource can have the following components:
- Metadata: This includes additional details about the resource such as the resource ID, version, profiles, and tags.
- Narrative: This is a human-readable version of the resource’s content.
- Extensions: These are used to handle unique cases not covered by the core specification.
- Elements/Body: This contains the actual content of the resource.
PROFILES
Profiles define constraints on the FHIR Core Data Type, FHIR Core Resource, and other FHIR profiles
DIFFERENCE BETWEEN RESOURCE & DATATYPE?
“Datatypes are part of resource. Like Address is datatype and it is part of patient profile”
StructureDefinition: observation-heartrate — FHIR v4.3.0 (hl7.org)
I have covered the basics of FHIR before discussing Azure API for FHIR & FHIR Server for Azure. Please find help links section to learn more about FHIR.
Tools:
Part 2: FHIR Server for Azure
Help links