Introduction
Effective infectious disease surveillance is crucial for controlling the spread of disease. It involves a multidisciplinary team of health professionals working in both government and non-government facilities. To ensure data quality and efficient participation, standardized terminology, reporting formats, and methods are essential.
Adapted from Case Definitions For Infectious Disease In Malaysia (3rd Edition
January 2017) .
Current Limitations:
Malaysia's current surveillance system relies on manual case notification by clinicians, followed by data entry into a standalone platform (CDCIS | e-Notifikasi) for further investigation. This manual process is inefficient and lacks centralization, hindering timely analysis and response.
Proposed Solution:
A centralized Health Information Exchange Platform (HIE) can address these limitations. This platform would offer two intergration point option to improve the notification method:
Source System Integration: Source systems (e.g., hospital information systems) can share/retrieve completed notification record to HIE directly in their application.
SOF Application Integration: Source systems can send raw data to the HIE, to be completed in a standalone Smart on FHIR (SOF) communicable disease notification application.
Objectives
This implementation guide use case outlines the technical specifications for exchanging data between different systems to improve surveillance efficiency.
Source System Integration Specification
Talk about Source System sending bundle with QR and supporting Resource directly to HIE.
Integration Method Considerations
Advantages
1 application entry only, flow easier for user and user prefer like this
Application can be FHIR facade ready (refer FHIR facade documentation)
Disadvantages
Need to do significant changes if application not capture parameter in system
Overlap of function with other existing application thus indirectly
Version changes to notification standard may need significant changes to source system also.
API involved & Business Rules
Business Rule concept
Diagram 1
Need to explain the business rules involved. before can send need to check if similar diagnosis already exist less than 1 week in database.
The Questionnaire is adapted from Borang Notifikasi Penyakit Berjankit (Rev 2010) and CDCIS | e-Notifikasi portal.
Refer Diagram below for the form template details:
Questionnaire Details
The Notification is structured into a FHIR Questionnaire Resource. Below are the details of the Notification Questionnaire.
Tree
Table
JSON
Defining URL
http://ig.veins.mhnexus.com/Questionnaire/cd-notification
Status
Draft
Version
0.0.1
Title
Communicable Disease Notification Form
The resource cannot be rendered.
< id value = " cd-notification " />
</ meta >
< url value = " http://ig.veins.mhnexus.com/Questionnaire/cd-notification " />
< title value = " Communicable Disease Notification Form " />
< date value = " 2024-07-11T08:00:00+08:00 " />
< text value = " Patient Details " />
< type value = " reference " />
</ item >
< linkId value = " address-details " />
< text value = " Address Home / Incident Details " />
< linkId value = " address-incident " />
< text value = " Address Incident " />
</ item >
< text value = " Postcode " />
< answerValueSet value = " http://fhir.hie.moh.gov.my/CodeSystem/postcode-my-core " />
</ item >
< text value = " Phone Number " />
</ item >
< linkId value = " sub-district " />
< text value = " Sub District " />
</ item >
< text value = " District " />
< answerValueSet value = " http://fhir.hie.moh.gov.my/CodeSystem/district-my-core " />
</ item >
</ item >
< answerValueSet value = " http://fhir.hie.moh.gov.my/CodeSystem/state-my-core " />
</ item >
< text value = " Locality " />
</ item >
< text value = " Latitude " />
</ item >
< text value = " Longitude " />
</ item >
</ item >
< linkId value = " occupation-details " />
< text value = " Occupation Details " />
< linkId value = " working-address " />
< text value = " Working Address " />
</ item >
< linkId value = " working-phone " />
< text value = " Phone Number " />
</ item >
< linkId value = " working-phone-mobile " />
< text value = " Mobile Number " />
</ item >
< linkId value = " working-email " />
</ item >
< linkId value = " occupation-category " />
< text value = " Occupation Category " />
< answerValueSet value = " http://fhir.hie.moh.gov.my/CodeSystem/occupation-sector-my-core " />
</ item >
< linkId value = " occupation-name " />
< text value = " Occupation Name " />
</ item >
</ item >
</ item >
< text value = " Disease Diagnosis " />
< linkId value = " notification-details " />
< text value = " Notification Details " />
< linkId value = " notification-identifier " />
< text value = " Notification Identifier " />
</ item >
< linkId value = " date-receive-notification " />
< text value = " Received Notification Date " />
< type value = " dateTime " />
</ item >
< linkId value = " notification-dae " />
< text value = " Notification Date " />
< type value = " dateTime " />
</ item >
</ item >
< linkId value = " encounter-details " />
< text value = " Encounter Details " />
< text value = " Ward / Clinic Name / No " />
</ item >
< text value = " Encounter Registration Number " />
</ item >
< linkId value = " encounter-date " />
< text value = " Encounter Date " />
< type value = " dateTime " />
</ item >
</ item >
< text value = " Notify Details " />
< text value = " Diagnosis " />
< type value = " reference " />
</ item >
< linkId value = " main-dx-onset " />
< text value = " Onset Date " />
< type value = " dateTime " />
</ item >
< text value = " Sub Diagnosis " />
< type value = " reference " />
</ item >
</ item >
< linkId value = " case-detect-method " />
< text value = " Case Detection Method " />
< linkId value = " detect-method " />
< text value = " Detection methods " />
< system value = " http://snomed.info/sct " />
< code value = " 395098000 " />
</ valueCoding >
</ answerOption >
< system value = " http://snomed.info/sct " />
< code value = " 428792000 " />
</ valueCoding >
</ answerOption >
< system value = " http://snomed.info/sct " />
< code value = " 360156006 " />
</ valueCoding >
</ answerOption >
</ item >
< linkId value = " screening-method " />
< text value = " For Screening Method, Please Specify Type: " />
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
< display value = " Routing Screening " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
< display value = " screening without name " />
</ valueCoding >
</ answerOption >
< system value = " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " />
</ valueCoding >
</ answerOption >
</ item >
</ item >
< linkId value = " patient-status " />
< text value = " Patient Status " />
< linkId value = " deceased-status " />
< text value = " Deceased Status " />
</ item >
< linkId value = " deceased-date " />
< text value = " Deceased Date " />
< type value = " dateTime " />
</ item >
< text value = " Cause Of Death Diagnosis " />
< type value = " reference " />
</ item >
< linkId value = " cod-dx-other " />
< text value = " Supporting Death Diagnosis " />
< type value = " reference " />
</ item >
</ item >
</ item >
< text value = " Laboratory Investigation " />
< linkId value = " ix-performed " />
< text value = " Laboratory Investigation Performed? " />
</ item >
< text value = " Investigation Details " />
< text value = " Investigation Name " />
</ item >
</ item >
< linkId value = " ix-taken-date " />
< text value = " Specimen Taken Date " />
< type value = " dateTime " />
</ item >
< linkId value = " ix-receive-date " />
< text value = " specimen Received By Laboratory Date " />
< type value = " dateTime " />
</ item >
< text value = " Laboratory Investigation Result " />
< system value = " http://snomed.info/sct " />
< code value = " 10828004 " />
</ valueCoding >
</ answerOption >
< system value = " http://snomed.info/sct " />
< code value = " 260385009 " />
</ valueCoding >
</ answerOption >
< system value = " http://snomed.info/sct " />
< code value = " 263921008 " />
</ valueCoding >
</ answerOption >
< system value = " http://snomed.info/sct " />
< code value = " 42425007 " />
</ valueCoding >
</ answerOption >
</ item >
< linkId value = " ix-result-date " />
< text value = " laboratory Result Date " />
< type value = " dateTime " />
</ item >
</ item >
< linkId value = " case-classifcation " />
< text value = " Case Classification " />
< text value = " Diagnosis Status " />
</ answerOption >
< display value = " Confirmed By Laboratory Investigation " />
</ valueCoding >
</ answerOption >
</ answerOption >
</ answerOption >
</ item >
< linkId value = " classification-date " />
< text value = " slasification Date " />
< type value = " dateTime " />
</ item >
< linkId value = " infection-type " />
< text value = " Infection Type " />
</ answerOption >
</ answerOption >
</ item >
</ item >
</ item >
< linkId value = " notifier-details " />
< text value = " Notifier details " />
< linkId value = " general-remark " />
</ item >
< linkId value = " clinical-remark " />
< text value = " Additional Clinical Information " />
</ item >
</ item >
< text value = " Notifier " />
< linkId value = " practitioner-name " />
< text value = " Practitoner Name " />
< type value = " reference " />
</ item >
< linkId value = " notifier-phone " />
< text value = " Phone Number " />
</ item >
< linkId value = " notifier-email " />
</ item >
< linkId value = " notifier-fax " />
</ item >
< linkId value = " notifier-date " />
< text value = " Date Notification " />
< type value = " dateTime " />
</ item >
</ item >
< linkId value = " facility-details " />
< text value = " Facility Details " />
< text value = " Healthcare Facility Details " />
< type value = " reference " />
</ item >
< text value = " Department " />
< type value = " reference " />
</ item >
</ item >
</ item >
</ Questionnaire >
{
} ,
" url " : " http://ig.veins.mhnexus.com/Questionnaire/cd-notification " ,
" title " : " Communicable Disease Notification Form " ,
" date " : " 2024-07-11T08:00:00+08:00 " ,
{
" text " : " Patient Details " ,
} ,
{
{
" text " : " Address Home / Incident Details " ,
{
" text " : " Address Incident " ,
} ,
{
" answerValueSet " : " http://fhir.hie.moh.gov.my/CodeSystem/postcode-my-core "
} ,
{
} ,
{
} ,
{
" answerValueSet " : " http://fhir.hie.moh.gov.my/CodeSystem/district-my-core "
} ,
{
} ,
{
" answerValueSet " : " http://fhir.hie.moh.gov.my/CodeSystem/state-my-core "
} ,
{
} ,
{
} ,
{
}
]
} ,
{
" linkId " : " occupation-details " ,
" text " : " Occupation Details " ,
{
" text " : " Working Address " ,
} ,
{
} ,
{
" linkId " : " working-phone-mobile " ,
} ,
{
} ,
{
" linkId " : " occupation-category " ,
" text " : " Occupation Category " ,
" answerValueSet " : " http://fhir.hie.moh.gov.my/CodeSystem/occupation-sector-my-core "
} ,
{
" text " : " Occupation Name " ,
}
]
}
]
} ,
{
" text " : " Disease Diagnosis " ,
{
" linkId " : " notification-details " ,
" text " : " Notification Details " ,
{
" linkId " : " notification-identifier " ,
" text " : " Notification Identifier " ,
} ,
{
" linkId " : " date-receive-notification " ,
" text " : " Received Notification Date " ,
} ,
{
" text " : " Notification Date " ,
}
]
} ,
{
" linkId " : " encounter-details " ,
" text " : " Encounter Details " ,
{
" text " : " Ward / Clinic Name / No " ,
} ,
{
" text " : " Encounter Registration Number " ,
} ,
{
" text " : " Encounter Date " ,
}
]
} ,
{
" text " : " Notify Details " ,
]
} ,
{
" linkId " : " case-detect-method " ,
" text " : " Case Detection Method " ,
{
" text " : " Detection methods " ,
{
" system " : " http://snomed.info/sct " ,
}
} ,
{
" system " : " http://snomed.info/sct " ,
}
} ,
{
" system " : " http://snomed.info/sct " ,
}
}
]
} ,
{
" text " : " For Screening Method, Please Specify Type: " ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
" display " : " screening without name "
}
} ,
{
" system " : " http://ig.veins.mhnexus.com/CodeSystem/screening-method-veins " ,
}
}
]
}
]
} ,
{
" text " : " Patient Status " ,
{
" text " : " Deceased Status " ,
} ,
{
} ,
{
" text " : " Cause Of Death Diagnosis " ,
} ,
{
" text " : " Supporting Death Diagnosis " ,
}
]
}
]
} ,
{
" text " : " Laboratory Investigation " ,
{
" text " : " Laboratory Investigation Performed? " ,
} ,
{
" text " : " Investigation Details " ,
{
" text " : " Investigation Name " ,
} ,
{
} ,
{
" text " : " Specimen Taken Date " ,
} ,
{
" text " : " specimen Received By Laboratory Date " ,
} ,
{
" text " : " Laboratory Investigation Result " ,
{
" system " : " http://snomed.info/sct " ,
}
} ,
{
" system " : " http://snomed.info/sct " ,
}
} ,
{
" system " : " http://snomed.info/sct " ,
}
} ,
{
" system " : " http://snomed.info/sct " ,
}
}
]
} ,
{
" text " : " laboratory Result Date " ,
}
]
} ,
{
" linkId " : " case-classifcation " ,
" text " : " Case Classification " ,
{
" text " : " Diagnosis Status " ,
{
} ,
{
" display " : " Confirmed By Laboratory Investigation "
}
} ,
{
} ,
{
}
]
} ,
{
" linkId " : " classification-date " ,
" text " : " slasification Date " ,
} ,
{
" text " : " Infection Type " ,
]
}
]
}
]
} ,
{
" text " : " Notifier details " ,
{
{
} ,
{
" text " : " Additional Clinical Information " ,
}
]
} ,
{
{
" linkId " : " practitioner-name " ,
" text " : " Practitoner Name " ,
} ,
{
} ,
{
} ,
{
} ,
{
" text " : " Date Notification " ,
}
]
} ,
{
" text " : " Facility Details " ,
{
" text " : " Healthcare Facility Details " ,
} ,
{
}
]
}
]
}
]
}
Snapshot
QuestionnaireResponse Sample Data
The QR
a sample data of QR only
a sample data complete in a bundle
API involved:
Source System must comply to the API defined below to consider the integration point a success
Step
Description
Method
API
1
Check ptient in database
GET
[base]/Patient?identifier=@patientIdentifier
2
Retrive all existing notification of patient
GET
[base]/QuestionnaireResponse?questionnaire=&subject.identifier=@patientIdentifier
3
Create Notification (Bundle)
POST
[base]
4
Update Notification
PUT
[base]QuestionnaireResponse/@questionnaireResponseId
For creating the notification Bundle. Source system must provide the conditional create parameter to prevent duplication of record created
Resource
Conditional Create Parameter
Condition
?subject=@patientIdentifier&code=@diagnosisCode&authoredDate=ge@currentDateTime-1week&authoredDate=le@currentDateTime
Below is an example of a notification bundle example
Smart On FHIR (SOF) Integration Specification
Talk about
Diagram (Diagram 1) below is an overview of the CDN application in relation to Integration with Source System and FHIR server access via SOF launcher
Diagram 1
Step 1: Send Record Captured from Source System to FHIR server
Talk about the FHIR Resource required and the API concept.
Below are the related FHIR Resources required to be sent from Source System
No
FHIR Resource
Cardinality
Description
Conditional Create Parameter
Sample Data
1
Patient
Mandatory
Demographic details of patient
- source
- identifier (MRN number)
Patient Conditional Create
2
Encounter
Mandatory
Encounter details of patient
- source
- identifier (RN number)
Patient Conditional Create
3
Condition
Mandatory
Main diagnosis being the reason notification registered
- source
- code (Diagnosis Code)
Patient Conditional Create
4
Practitioner
Mandatory
Details of the notifier or the clinician in charge
- source
- code (Diagnosis Code)
Patient Conditional Create
These resource must be compiled as a Bundle transaction with conditional create parameter mentioned. below is an example of Complete Bundle with its conditional create defined.
The bundle will then be sent to the FHIR server based on the API below:
No
API Function
Method
API
1
Send Resource Bundle
POST
[base]
Step 2: Source System launch CDN application via SOF launcher
Refer to SOF launcher guide .
Step 3, 4 & 5: CDN application handling notification process
These steps will be handled by the CDN application.
Placeholder 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
Link ID
Question
Question Type
Patient Details
patient
Patient Details
reference
Address
Link ID
Question
Question Type
address
Address
group
address-details
Address Home / Incident Details
group
Link ID
Question
Question Type
Answer Options
address-incident
Address Incident
string
postcode
Postcode
choice
ValueSetPostcode (MY Core)
phone
Phone Number
string
sub-district
Sub District
string
district
District
choice
ValueSetDistrict (MY Core)
sector
Sector
string
state
State
choice
ValueSetState (MY Core)
locality
Locality
string
latitude
Latitude
decimal
longitude
Longitude
decimal
occupation-details
Occupation Details
group
Link ID
Question
Question Type
Answer Options
working-address
Working Address
string
working-phone
Phone Number
string
working-phone-mobile
Mobile Number
string
working-email
Email
string
occupation-category
Occupation Category
choice
ValueSetOccupationSector (MY Core)
occupation-name
Occupation Name
string
Disease Diagnosis
Link ID
Question
Question Type
dx
Disease Diagnosis
group
notification-details
Notification Details
group
Link ID
Question
Type
notification-identifier
Notification Identifier
string
date-receive-notification
Received Notification Date
dateTime
notification-dae
Notification Date
dateTime
encounter-details
Encounter Details
group
Link ID
Question
Question Type
location
Ward / Clinic Name / No
string
mrn
Encounter Registration Number
string
encounter-date
Encounter Date
dateTime
dx-details
Notify Details
group
Link ID
Question
Question Type
main-dx
Diagnosis
reference
main-dx-onset
Onset Date
dateTime
sub-dx
Sub Diagnosis
reference
case-detect-method
Case Detection Method
group
Link ID
Question
Question Type
Answer Options
detect-method
Detection methods
choice
Active
Passive
Screening
screening-method
For Screening Method, Please Specify Type:
choice
FOMEMA
Blood Bank
Antenatal
Prison
Routine Screening
Harm Reduction
Pre-wedding
Screening without name
Others
patient-status
Patient Status
group
Link ID
Question
Question Type
deceased-status
Deceased Status
boolean
deceased-date
Deceased Date
dateTime
cod-dx
Cause Of Death Diagnosis
reference
cod-dx-other
Supporting Death Diagnosis
reference
Laboratory Investigation
Link ID
Question
Question Type
ix
Laboratory Investigation
group
ix-performed
Laboratory Investigation Performed?
boolean
ix-details
Investigation Details
group
Link ID
Question
Question Type
Answer Option
ix-name
Investigation Name
string
ix-note
Note
text
ix-taken-date
Specimen Taken Date
dateTime
ix-receive-date
specimen Received By Laboratory Date
dateTime
ix-result
Laboratory Investigation Result
choice
Positive
Negative
Pending
Equivocal
ix-result-date
laboratory Result Date
dateTime
case-classifcation
Case Classification
group
Link ID
Question
Question Type
Answer Options
dx-status
Diagnosis Status
choice
Clinical
Confirmed By Laboratory Investigation
Probable
Epid link
classification-date
Classification Date
dateTime
infection-type
Infection Type
choice
Local
Import
Notifier Details
Link ID
Question
Question Type
notifier-details
Notifier details
group
remark
Remark
group
Link ID
Question
Question Type
general-remark
Remark
Text
clinical-remark
Additional Clinical Information
Text
notifier
Notifier
group
Link ID
Question
Question Type
practitioner-name
Practitoner Name
reference
notifier-phone
Phone Number
string
notifier-email
Email
string
notifier-fax
Fax
string
notifier-date
Date Notification
dateTime
facility-details
Facility Details
group
Link ID
Question
Question Type
facility
Healthcare Facility Details
reference
department
Department
reference