HL7 FHIR Malaysia Core (MY Core) Implementation Guide
2.0.0 - ci-build

HL7 FHIR Malaysia Core (MY Core) Implementation Guide - Local Development build (v2.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Laboratory Services

The HIE portal provides a laboratory module to order a laboratory test investigation, as well as create and review the lab report and result. This function is present for both internal and external type of ordering.


[base] = address url e.g. "https://fhir.hie.moh.gov.my/baseR4/"
[type] = resource type e.g. "DiagnosticReport | Observation"
@patientIdentifier = unique patient identifier defined from source system e.g "HIE-00000003"
@recordId = unique record ID defined from source system e.g. "dr-sample" | "obs-labsample"
@recordIdentifier = record identifier defined from source system e.g. "0000001000" | "00021"

Sample Description Sample Body API Method API
Create/Update Lab Order

1. Lab Order Bundle

2. Lab Order Bundle No ID

POST [base]
Create/Update Lab Report And Result

1. Lab Report Bundle

2. Lab Report Bundle No ID

POST [base]
Retrieve Lab Report And Result by patient identifier - GET [base]/DiagnosticReport?subject.identifier=@patientIdentifier&_include=DiagnosticReport:result
Retrieve Any Record By ID - GET [base]/[type]/@recordId
Retrieve Any Record By Identifier - GET [base]/[type]?identifier=@recordIdentifier

Resource Breakdown

Using HIE, FHIR resources are used to store the ordering process up to the lab result and reporting process.

The diagram below shows how the FHIR resources are used as described:

Lab IP 1

Lab Service Request

Using HealthcareService (MY Core) and SpecimenDefinition (MY Core), each facility will define what laboratory orderables are available for their respective healthcare worker to request.

Lab Request List | Phlebotomy Station

When a request is made, it will be stored using ServiceRequest (MY Core) and Specimen (MY Core). The ServiceRequest status will be "draft" ServiceRequest.status:"draft"

A QuestionnaireResponse (MY Core) to the PER-PAT 301 (Standard Malaysian Ministry of Health facility laboratory ordering form) Questionnaire can be attached to the ServiceRequest (MY Core) to facilitate operational flow in public healthcare facilities.

Once the user confirms and intiates their request a Task (MY Core) will be created.

  • The ServiceRequest status will be updated to "active" ServiceRequest.status:"active"
  • The Task status will be "draft" Task.status:"draft" and businessStatus will be "initiate" Task.businessStatus:"initiate"

Laboratory Console

The Task (MY Core) will then track and execute the operational business flow until its intended or alternative destination is achieved.

As the Task moves to each checkpoint it will update its businessStatus as defined in the diagram.

Report Form

Once a report is to be stored in HIE, it uses the DiagnosticReport (MY Core) while the result is stored as an Observation Lab Result (MY Core).

If integration is from an analyzer machine, it is expected to send both DiagnosticReport & Observation.

Source System Integration Point

There are 2 possible use cases where a source system can exchange lab records with HIE:

  1. External Ordering
  2. Retrieving Laboratory Report & Result

For further details on the flow of sending data and/or retrieving, please refer to Integration Overview under Care Coordination (CC) category.

External Order (Integration Point 1)

An external order can be sent to another facility/source system through HIE using the MY Core Standard. The profiles related to lab ordering are ServiceRequest (MY Core) and Specimen (MY Core). Both records must exist when sending an order to HIE.

The ServiceRequest (MY Core) record must have:

  1. A status fixed as "active" status:"active"
  2. An intent intent
  3. The category fixed as "108252007" (lab order) category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/servicerequest-category-my-core').code:"108252007"
  4. The test specialty category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-sub-group-my-core').code
  5. The test code code.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-my-core').code
  6. (Optional) The test LOINC code code.coding.where (system = 'https://loinc.org').code
  7. A subject referenced subject
  8. An encounter referenced encounter
  9. Date order authored authoredOn
  10. Type of order fixed as "affiliate" performerType:"affiliate"
  11. Practitioner who requested the test requester
  12. Requesting facility referenced performer.where (identifier.value = 'requester-facility').reference
  13. Performing facility performer.where (identifier.value = 'requester-facility').reference

The Specimen (MY Core) record must have:

  1. An identifier assigned for lab accessionIdentifier.where (url = 'http://fhir.hie.moh.gov.my/sid/service-request-id').value
  2. A specimen type type
  3. A subject referenced subject
  4. The type of container container.type

Laboratory Report & Result (Integration Point 2)

A lab report and result can be sent to HIE for record exchange or to fulfil another requesting source system order (Integration Point 1). The profile related to lab reporting is DiagnosticReport (MY Core), while for lab results is Observation Lab Results (MY Core)

The DiagnosticReport (MY Core) must have:

  1. A status fixed as "final" status:"final"
  2. The category fixed as "108252007" (lab order) category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/servicerequest-category-my-core').code:"108252007"
  3. The test code code.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-my-core').code
  4. (Optional) The test LOINC code code.coding.where (system = 'https://loinc.org').code
  5. A subject referenced subject
  6. An encounter referenced encounter
  7. A report conclusion conclusion

The Observation Lab Results (MY Core) must have:

  1. A status fixed as final status:"final"
  2. The category fixed as "108252007" (lab order) category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/servicerequest-category-my-core').code:"108252007"
  3. The test code code.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-my-core').code
  4. (Optional) The test LOINC code code.coding.where (system = 'https://loinc.org').code
  5. A subject referenced subject

Lab Analyzer (Integration Point 3)

Related to lab analyzer, it is expected to send both lab report and result. However, the status of both DiagnosticReport and Observation is set as draft status.draft

The lab report (DiagnosticReport) must have:

  1. A status fixed as draft status:"draft"
  2. The category fixed as "108252007" (lab order) category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/servicerequest-category-my-core').code:"108252007"
  3. The test code code.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-my-core').code
  4. (Optional) The test LOINC code code.coding.where (system = 'https://loinc.org').code
  5. A subject referenced subject
  6. An encounter referenced encounter
  7. A report conclusion conclusion

The lab result (Observation) must have:

  1. A status fixed as draft status:"draft"
  2. The category fixed as "108252007" (lab order) category.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/servicerequest-category-my-core').code:"108252007"
  3. The test code code.coding.where (system = 'http://fhir.hie.moh.gov.my/CodeSystem/lab-my-core').code
  4. (Optional) The test LOINC code code.coding.where (system = 'https://loinc.org').code
  5. A subject referenced subject