Diabetic Assessment Tool

Introduction

overview

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).

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:

  1. 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.
  2. 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.
  3. 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:

high-level

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

assessment-toolkit

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

Link ID Question Answer Options
1 How old are you?
Code Display Score
0 Younger than 40 years 0
1 40-49 years 1
2 50-59 years 2
3 60 years or older 3
2 Are you a man or a women?
Code Display Score
male Male 1
female Female 0
3 If you are a woman, have you ever been diagnosed with gestational diabetes?
Code Display Score
373066001 Yes 1
373067005 No 0
4 Do you have a mother, father, sister, or brother with diabetes?
Code Display Score
373066001 Yes 1
373067005 No 0
5 Have you ever been diagnosed with high blood pressure?
Code Display Score
373066001 Yes 1
373067005 No 0
6 Are you physically active?
Code Display Score
373066001 Yes 0
373067005 No 1
7 What is your weight category?
Code Display Score
310252000 Normal (18.5-24.9kg/m2) 1
162863004 Overweight (25-29.9kg/m2) 2
162864005 Obese (30kg/m2 or greater) 3
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

scheduling

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

Event Trigger Tool will be triggered based on criteria defined. Currently there are 2 topics that are related to the use case:

  1. Upon creation of PDRT QuestionnaireResponse
  2. 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 ****