Laboratory

Introduction

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


Click MY Core postman API link to view common API used in HIE.

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

Based on the diagram below, the FHIR resources is broken down and used as described; Lab IP 1

Lab Service Request

Using HealthcareService (MY Core) and SpecimenDefinition (MY Core), each facility will define what laboratory orderable 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) related to PER-PAT 301 Questionnaire (Malaysia standard form for general laboratory ordering) form can be attached to the ServiceRequest (MY Core) to assist the operational flow.

Once 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 initiate with status "initiate" Task.status:"initiate"

Laboratory Console

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

As the Task moves to each check point it will update its status as defined in the diagram

Report Form

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

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

Source System Integration Point

There are 2 possible use case where a source system can consider exchanging lab records between HIE. During;

  1. External Ordering
  2. Retrieving Laboratory Report & Result

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

External Order (Integration Point 1)

An external order towards another facility/source system can be done through HIE using the MY Core Standard. The profile related to lab ordering is ServiceRequest (MY Core) and Specimen (MY Core). Both record must exist when sending to HIE.

The ServiceRequest (MY Core) record must have;

  1. A status fix as "active" status:"active"
  2. An intent intent
  3. The category fix 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 tes LOINC code code.coding.where (system = 'http://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 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 lab results is Lab Results (MY Core)

The lab report (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 = 'http://loinc.org').code
  5. A subject referenced subject
  6. An encounter referenced encounter
  7. A report conclusion conclusion

The lab result (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 = 'http://loinc.org').code
  5. A subject referenced subject

Lab Analyzer Integration Point

Related to lab analyzer, it is expected to send both lab report and result. However, the status of both DiagnosticReport is 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 = 'http://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 = 'http://loinc.org').code
  5. A subject referenced subject