Diabetic Assessment Tool
Introduction
Diabetes mellitus (DM) is a growing health concern in Malaysia. Self-assessment tools can be used to raise awareness and encourage early detection. This pilot project aims to empower Malaysians with a FHIR-based diabetic self-assessment questionnaire to identify potential risks and promote timely consultations with registered healthcare practitioners.
One such Prediabetes Risk Test is made available by the Centre of Disease (CDC).
Scoring:
- If score < 5, patient does not require further investigation (recommended screening once every 2 years).
- If score ≥ 5, requires doctor assessment & blood test.
Objective
The objective of this document is to:
- Define High Level Flow for implementors to design a user-friendly self-assessment tool for the public. The tool should capture self-reported information related to diabetes risk factors and guide individuals with concerning results towards formal assessment.
- Define FHIR-based Data Exchange utilizing a FHIR framework platform based on VEINS standard derived from International Patient Summary (IPS) which also has direct dependencies with Malaysia Core (MY Core) standard.
- Define Smart On FHIR (SOF) Setup technical specification on how to setup a SOF application.
Resource Profile & API
Below are Resources & Profile used in this pilot project.
Number | Base Resource | VEINS/MY Core Profile |
---|---|---|
1. | Patient | Patient (MY Core) |
2. | Questionnaire | No Profile Defined |
3. | QuestionnaireResponse | QuestionnaireResponse (MY Core) |
4. | Appointment | Appointment (MY Core) |
Below are the relevant API for this use case:
No | API function | Method | API |
---|---|---|---|
1. | Retrive a Patient Resource by ID | GET | [base]/Patient/@PatientId |
2. | Retrieve the Prediabetes Risk Test (PDRT) Questionnaire | GET | [base]/Questionnaire?url=http://ig.veins.mhnexus.com/Questionnaire/pdrt |
3. | Retrieve any existing PDRT QuestionnaireResponse | GET | [base]/QuestionnaireResponse?subject=@PatientId |
4. | Retrieve both the Patient Resource & existing PDRT QuestionnaireResponse | GET | [base]/QuestionnaireResponse?subject=@PatientId&_include=QuestionnaireResponse:subject |
5. | Create a QuestionnaireResponse | POST | [base]/QuestionnaireResponse |
6. | Update a QuestionnaireResponse | POST | [base]/QuestionnaireResponse/@QuestionnaireResponseId |
[base] = The endpoint server url
@PatientId = The Patient Resource id
@QuestionnaireResponseId = The QuestionnaireResponse Resource id
High Level Flow
Below is the high level flow related to this use case:
The document will further breakdown the flow into several smaller section to further elaborate the details:
1. Account & Patient Resource Registration
Patient will first register their account via the VEINS application and verify themselve. Once verified the VEINS application will create a Patient Resource based on the Patient's detail.
For external party to access the Patient Resource the Smart On FHIR (SOF) launch authorization is required.
2. Prediabetes Risk Test and QuestionnaireResponse entry
The Prediabetes Risk Test application is required to launch using the SOF launcher [refer to (SOF launcher document](document haziq goes here)).
Once authorized the SOF launcher will provide the Patient Resource id (@PatientId) which is one of the parameter for interacting with the server FHIR API and also grant permission to request the relevant API (refer the Resource Profile & API section)
The Prediabetes Risk Test will be defined based on the Prediabetic Risk Test (PDRT) Questionnaire template. As the Patient input and finalize their details it will be stored as a QuestionnaireResponse ( e.g. QuestionnaireResponse-pdrt) and POST to the VEINS FHIR server.
Below are the details for the Prediabetic Risk Test (PDRT) Questionnaire
Questionnaire |
id : pdrt |
meta |
versionId : 1 |
lastUpdated : 2024-07-08T07:03:39.834+08:00 |
url : http://ig.veins.mhnexus.com/Questionnaire/pdrt |
title : Prediabetic Risk Test |
status : active |
date : 2024-07-06T23:30:28.824077+00:00 |
item |
linkId : 1 |
text : How old are you? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
code : 0 |
display : Younger than 40 years |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
code : 1 |
display : 40-49 years |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 2 |
value |
code : 2 |
display : 50-59 years |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 3 |
value |
code : 3 |
display : 60 years or older |
item |
linkId : 2 |
text : Are you a man or a women? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://hl7.org/fhir/administrative-gender |
code : male |
display : Man |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
system : http://hl7.org/fhir/administrative-gender |
code : female |
display : Women |
item |
linkId : 3 |
text : If you are a woman, have you ever been diagnosed with gestational diabetes? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://snomed.info/sct |
code : 373066001 |
display : Yes |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
system : http://snomed.info/sct |
code : 373067005 |
display : No |
item |
linkId : 4 |
text : Do you have a mother, father, sister, or brother with diabetes? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://snomed.info/sct |
code : 373066001 |
display : Yes |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
system : http://snomed.info/sct |
code : 373067005 |
display : No |
item |
linkId : 5 |
text : Have you ever been diagnosed with high blood pressure? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://snomed.info/sct |
code : 373066001 |
display : Yes |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
system : http://snomed.info/sct |
code : 373067005 |
display : No |
item |
linkId : 6 |
text : Are you physically active? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 0 |
value |
system : http://snomed.info/sct |
code : 373066001 |
display : Yes |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://snomed.info/sct |
code : 373067005 |
display : No |
item |
linkId : 7 |
text : What is your weight category? |
type : choice |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 1 |
value |
system : http://snomed.info/sct |
code : 310252000 |
display : Normal (18.5-24.9kg/m2) |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 2 |
value |
system : http://snomed.info/sct |
code : 162863004 |
display : Overweight (25-29.9kg/m2) |
answerOption |
extension |
url : http://ig.veins.mhnexus.com/StructureDefinition/answerValue |
value : 3 |
value |
system : http://snomed.info/sct |
code : 162864005 |
display : Obese (30kg/m2 or greater) |
item |
linkId : 8 |
text : Final Score |
type : integer |
Link ID | Question | Answer Options | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | How old are you? |
|
|||||||||||||||
2 | Are you a man or a women? |
|
|||||||||||||||
3 | If you are a woman, have you ever been diagnosed with gestational diabetes? |
|
|||||||||||||||
4 | Do you have a mother, father, sister, or brother with diabetes? |
|
|||||||||||||||
5 | Have you ever been diagnosed with high blood pressure? |
|
|||||||||||||||
6 | Are you physically active? |
|
|||||||||||||||
7 | What is your weight category? |
|
|||||||||||||||
8 | Final Score | Sum of all answer score |
{ "resourceType": "Questionnaire", "id": "pdrt", "meta": { "versionId": "1", "lastUpdated": "07/07/2024 23:03:39" }, "url": "http://ig.veins.mhnexus.com/Questionnaire/pdrt", "title": "Prediabetic Risk Test", "status": "active", "date": "07/06/2024 23:30:28", "item": [ { "linkId": "1", "text": "How old are you?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "code": "0", "display": "Younger than 40 years" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "code": "1", "display": "40-49 years" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 2 } ], "valueCoding": { "code": "2", "display": "50-59 years" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 3 } ], "valueCoding": { "code": "3", "display": "60 years or older" } } ] }, { "linkId": "2", "text": "Are you a man or a women?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://hl7.org/fhir/administrative-gender", "code": "male", "display": "Man" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "system": "http://hl7.org/fhir/administrative-gender", "code": "female", "display": "Women" } } ] }, { "linkId": "3", "text": "If you are a woman, have you ever been diagnosed with gestational diabetes?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373067005", "display": "No" } } ] }, { "linkId": "4", "text": "Do you have a mother, father, sister, or brother with diabetes?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373067005", "display": "No" } } ] }, { "linkId": "5", "text": "Have you ever been diagnosed with high blood pressure?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373067005", "display": "No" } } ] }, { "linkId": "6", "text": "Are you physically active?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 0 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "373067005", "display": "No" } } ] }, { "linkId": "7", "text": "What is your weight category?", "type": "choice", "answerOption": [ { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 1 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "310252000", "display": "Normal (18.5-24.9kg/m2)" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 2 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "162863004", "display": "Overweight (25-29.9kg/m2)" } }, { "extension": [ { "url": "http://ig.veins.mhnexus.com/StructureDefinition/answerValue", "valueDecimal": 3 } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "162864005", "display": "Obese (30kg/m2 or greater)" } } ] }, { "linkId": "8", "text": "Final Score", "type": "integer" } ] }
Below is a sample of a QuestionnaireResponse JSON based on the PDRT Questionnaire:
QuestionnaireResponse PDRT sample
{ "resourceType": "QuestionnaireResponse", "id": "sample-pdrt", "meta": { "versionId": "1", "lastUpdated": "07/07/2024 23:05:20", "source": "http://sample", "profile": [ "http://fhir.hie.moh.gov.my/StructureDefinition/QuestionnaireResponse-my-core" ] }, "questionnaire": "http://ig.veins.mhnexus.com/Questionnaire/pdrt", "status": "completed", "subject": { "reference": "Patient/78edf291-93f7-4e78-8150-e7c5e8bbac14/_history/1" }, "authored": "2023-05-15", "author": { "reference": "Patient/78edf291-93f7-4e78-8150-e7c5e8bbac14/_history/1" }, "item": [ { "linkId": "1", "text": "How old are you?", "answer": [ { "valueCoding": { "code": "1", "display": "40-49 years" } } ] }, { "linkId": "2", "text": "Are you a man or a women?", "answer": [ { "valueCoding": { "system": "http://hl7.org/fhir/administrative-gender", "code": "male", "display": "Male" } } ] }, { "linkId": "3", "text": "If you are a woman, have you ever been diagnosed with gestational diabetes?", "answer": [ { "valueCoding": { "system": "http://snomed.info/sct", "code": "373067005", "display": "No" } } ] }, { "linkId": "4", "text": "Do you have a mother, father, sister, or brother with diabetes?", "answer": [ { "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } } ] }, { "linkId": "5", "text": "Have you ever been diagnosed with high blood pressure?", "answer": [ { "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } } ] }, { "linkId": "6", "text": "Are you physically active?", "answer": [ { "valueCoding": { "system": "http://snomed.info/sct", "code": "373066001", "display": "Yes" } } ] }, { "linkId": "7", "text": "What is your weight category?", "answer": [ { "valueCoding": { "system": "http://snomed.info/sct", "code": "162863004", "display": "Overweight (25-29.9kg/m2)" } } ] }, { "linkId": "8", "text": "Final Score", "answer": [ { "valueInteger": 8 } ] } ] }
3. Scheduling & Appointment
Depending on the outcome of the assessment. If the outcome is suggestive that patient may be at risk of Diabetes the Prediabetes Risk Test application will prompt and redirect the patient to proceed with appointment booking.
The patient will need to choose their preferred organization whether it is with the government or non-government organization. If patient opt for the government, the endpoint for the appointment booking will be directed to the Health Information Exchange (HIE) FHIR server endpoint. For non-governement, the endpoint will be stored in the VEINS FHIR server endpoint.
The VEINS application will handle the appointment booking for both organization based on the availability of the existing Schedule & Slot Resource for each endpoint.
Once the patient has booked an appointment an Appointment Resource will be created in the VEINS FHIR server. If an Appointment is intended for a government organization the "Event Trigger Tool" will create an event for the relevant party to take further action
**** Work In Progress ****
4. Event Trigger Tool
Event Trigger Tool will be triggered based on criteria defined. Currently there are 2 topics that are related to the use case:
- Upon creation of PDRT QuestionnaireResponse
- Upon creation of Appointment for Diabetic Appointment related to Governement Organization endpoint
HIE FHIR server will subscribe to the relevant topic and upon an event being created within the topic HIE will consume the mevent and also call the VEINS FHIR server to retrieve additional relevant Resources related to the event.
**** Work In Progress ****