This wiki has undergone a migration to Confluence found Here

Difference between revisions of "Laboratory Results"

From HL7 Argonaut Project Wiki
Jump to navigation Jump to search
Line 100: Line 100:
 
Below is a quick overview of the required search and read operations
 
Below is a quick overview of the required search and read operations
  
===GET [base]/DiagnosticReport?patient=[id]&category=laboratory, blah, blah=== ( EH need to consider the scope of sprint and where we want to be also the DR category is not heirarchical so would have to list all servive sectors in comma separated list - do we want an _include here to get all the associated obs - not covered in sprint))  
+
===GET [base]/DiagnosticReport?patient=[id]&category=laboratory, blah, blah=== ( EH need to consider the scope of sprint and where we want to be also the DR category is not heirarchical so would have to list all servive sectors in comma separated list - do we want an _include here to get all the associated obs - not covered in sprint))
 +
 
 
''Support:'' Mandatory to support search by category code.
 
''Support:'' Mandatory to support search by category code.
  
Line 132: Line 133:
  
 
''Support:'' Mandatory to support search DiagnosticReport by laboratory order LOINCs listed above.
 
''Support:'' Mandatory to support search DiagnosticReport by laboratory order LOINCs listed above.
 +
 
''Implementation Notes:'' Search based on Diagnostic report LOINC code. This fetches a bundle of all DiagnosticReport resources for a specific diagnostic order code listed in the table above for the specified patient [http://hl7.org/fhir/DSTU2/search.html#reference (how to search by reference)] and [http://hl7.org/fhir/DSTU2/search.html#token (how to search by token)].
 
''Implementation Notes:'' Search based on Diagnostic report LOINC code. This fetches a bundle of all DiagnosticReport resources for a specific diagnostic order code listed in the table above for the specified patient [http://hl7.org/fhir/DSTU2/search.html#reference (how to search by reference)] and [http://hl7.org/fhir/DSTU2/search.html#token (how to search by token)].
  
Line 145: Line 147:
  
 
===GET [base]/Observation?patient=[id]&code=[Laboratory order LOINC]===( do we want an _include here to get all the associated obs - not covered in sprint)
 
===GET [base]/Observation?patient=[id]&code=[Laboratory order LOINC]===( do we want an _include here to get all the associated obs - not covered in sprint)
 +
 
''Support:'' Mandatory to support search Observation by laboratory LOINCs.
 
''Support:'' Mandatory to support search Observation by laboratory LOINCs.
  

Revision as of 01:58, 29 March 2016

Back to Argonaut Implementation Guide

Introduction

The Argonaut Laboratory Results guide provides the API documentation for searching and fetching Laboratory Results. It is based on the Data Access Framework (DAF) Laboratory Results and draws requirements from Argonaut Sprint 6. The search criteria provided in the Quick Start are intended to support the 2015 Edition ONC Certification criterion Data Category Request 170.315(g)(8).

Argonaut Success Criteria

Clients

  • A client has connected to a server and fetched all of a patient's laboratory diagnostic reports using GET [base]/DiagnosticReport?patient=[id].
  • A client has connected to a server and fetched all of a patient's laboratory results listed in the table below using GET [base]/Observation?patient=[id].

Servers

  • A server is capable of returning all of a patient's laboratory diagnostic reports using GET [base]/DiagnosticReport?patient=[id].
  • A server is capable of returning all of a patient's laboratory results using GET [base]/Observation?patient=[id].
  • A server has ensured that every API request includes a valid Authorization token, supplied via:Authorization: Bearer {server-specific-token-here}
  • A server has rejected any unauthorized requests by returning an HTTP 401 Unauthorized response code.

Mandatory Data Elements

The attached table is derived from the top 2000 LOINC identifies the required category code, LOINC observation code, and corresponding UCUM units of measure codes for quantitative and qualitative tests. This Argonaut profile does not make the presence or absence of any of these mandatory.

The following data-elements in the Observation resource are mandatory (i.e data MUST be present). These are presented below in simple human-readable explanation and a more thorough summary of the requirements. Refer to the table for additional quidance and examples for the various laboratory tests.

Each DiagnosticReport must have:

  • a patient
  • a code which tells you what is being measured and is taken from the "LOINC Code" column from the top ? LOINC Order codes ??t
    • note: additional codes that translate or map to these are allowed - e.g. method specific LOINC Codes, SNOMED CT concepts, system specific codes
  • at least one result (an Observation reference)
    • note: if there is no numeric result then you have to supply a reason
  • a status
  • a category code of taken from the "LOINC category" column in the table.
  • a time indicating when the measurement was taken
  • a time indicating when the measurement was reported
  • who issues the report


Each Observation must have:

  • a patient
  • a LOINC code which tells you what is being measured and is taken from the "LOINC Code" column from the top 2000 LOINC table.
    • note: additional codes that translate or map to these are allowed - e.g. method specific LOINC Codes, SNOMED CT concepts, system specific codes
  • a numeric result value and standard UCUM unit which is taken from the "LOINC Code" column in the table.
    • note: if there is no numeric result then you have to supply a reason
  • a status
  • a category code of taken from the "LOINC category" column in the table.

Each Observation should have:

  • a time indicating when the measurement was taken
  • a reference range if available

Laboratory Results Table

Complete Summary of the Mandatory Requirements

todo

Quick Start

Below is a quick overview of the required search and read operations

===GET [base]/DiagnosticReport?patient=[id]&category=laboratory, blah, blah=== ( EH need to consider the scope of sprint and where we want to be also the DR category is not heirarchical so would have to list all servive sectors in comma separated list - do we want an _include here to get all the associated obs - not covered in sprint))

Support: Mandatory to support search by category code.

Implementation Notes: Search based on laboratory category codes. This fetches a bundle of all DiagnosticReports resources with laboratory categories for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:

[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&category=vital-signs]

===GET [base]/Observation?patient=[id]&category=laboratory=== ( EH need to consider the scope of sprint and where we want to be also the obs category is heirarchical so would could list heirarcy = lab or list all servive sectors in comma separated list, do we want an _include here to get all the associated obs - not covered in sprint)

Support: Mandatory to support search by category code.

Implementation Notes: Search based on laboratory category codes. This fetches a bundle of all Observation resources with laboratory categories for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:

[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&category=vital-signs]

===GET [base]/DiagnosticReport?patient=[id]&code=[Laboratory order LOINC]===( do we want an _include here to get all the associated obs - not covered in sprint)

Support: Mandatory to support search DiagnosticReport by laboratory order LOINCs listed above.

Implementation Notes: Search based on Diagnostic report LOINC code. This fetches a bundle of all DiagnosticReport resources for a specific diagnostic order code listed in the table above for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:)

Search for all heart rate observations for a patient:
[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&code=8867-4]

===GET [base]/Observation?patient=[id]&code=[Laboratory order LOINC]===( do we want an _include here to get all the associated obs - not covered in sprint)

Support: Mandatory to support search Observation by laboratory LOINCs.

Implementation Notes: Search based on Observation LOINC code. This fetches a bundle of all DiagnosticReport resources for a specific diagnostic order code listed in the table above for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:)

Search for all heart rate observations for a patient:
[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&code=8867-4]

===GET [base]/Observation?patient=[id]&code=[lab1 LOINC, lab2 LOINC, etc]===(repeat for DR) Support: Mandatory to support Observation search by multiple LOINCs. .

Implementation Notes: Search based on multiple vital sign LOINC codes. This fetches a bundle of all Observation resources for specific laboratory results listed in the table above for the specified patient (how to search by reference) and (how to search by token) and (how to search for multiple values)

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:

Search for all heart rate, respiratory rate and blood pressure observations for a patient
[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&code=8867-4,9279-1,55284-4]

===GET [base]/Observation?patient=[id]&category=laboratory=[eq|ne|lt|gt|geyyyy-mm-dd]===(repeat for DR) Support: Should support search by category code and date

Implementation Notes: Search based on vital sign category code and date. This fetches a bundle of all Observation resources with category 'vital-signs' for the specified patient for a specified time period (how to search by reference)and (how to search by token) and (how to search by date).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example:

Find all the laboratory results after 2013-03-14
[GET http://fhir2.healthintersections.com.au/open/Observation?patient=555580&category=vital-signs&date=ge2015-01-14]

Open Issues

The following issues have been identified:

  1. whether success criteria should include support of fetching client based on panel code and individual vital codes
  2. whether to include date search in quick start or just stick to the mandatory stuff
  3. What to do if:
    • no units provided
    • wrong (not-metric) units
  4. DAF Laboratory Results does not currently require Observation.category.
  5. Argonaut does not require identifier element (DAF does).
  6. Whether to require both DiagnosticReport and Observation or just Observation
  7. Should effective[X] -time indicating when the measurement was taken be a SHOULD or SHALL?
  8. DAF requires request (a DiagnosticOrder reference), but this use case doesn't


Resources

Formalized testing with test scripts and objective results reporting is available through the participation of AEGIS and MITRE (Crucible). The testscript provided can be used to test servers: [todo]

References



Back to Argonaut Implementation Guide