Developer documentation‎ > ‎HL7 API‎ > ‎Messages‎ > ‎ORU R01‎ > ‎

Laboratory


ORU R01: Send test results and measurements to PKB

Overview

This message can be used to send unsolicited laboratory results and measurements to PKB.

Laboratory results

Laboratory results will appear in the "Tests" tab in the PKB web interface. A single laboratory report (a.k.a. order) can contain multiple profiles (a.k.a. panels), each of which is reported in its own OBR group.

Measurements

The ORU R01 can also be used to send measurements into PKB, such that they appear in the "Measurements" tab in the PKB web interface.

Please speak to us if you would like to do this, as you'll need to send pre-agreed SNOMED code values in OBX-3.1.

Any OBX-3.3 that specifies SNOMED CT (see table for exact values we match on) will be treated as a measurement, not a lab result, providing that the ID in OBX-3.1 matches one of the predefined measurement IDs we can accept.

Content patterns

A "content pattern" indicates how PKB will interpret the contents of your message. This provides additional guidance over and above the syntactic requirements of individual segments.

PKB supports two different content patterns for OBR groups. When a (non-radiology) report is received, we will inspect each OBR group to determine which content pattern has been provided.

Single textual laboratory report

PKB uses the following criteria to determine if the OBR group contains a single textual laboratory report:
  • There are 1 or more OBX segments
  • All of which contain textual data
  • All of which contain matching test IDs (OBX-3)
  • There are at least 2 lines of text
The OBX segments are treated as lines within the report, and do not maintain their own identity. The contents of the OBR group will be kept together, and displayed as originally provided.

NTE segments will be treated as lines of the report, just like OBX segments; their contents will appear in the same location as provided.

Note: when sending a single textual laboratory report, only the metadata from the first OBX segment will be processed. Metadata (e.g. status, timestamp) from subsequent OBX segments will not be processed. If you wish to apply a patient delay this must be provided in the first segment.

Collection of individual test results and measurements

If an OBR group does not contain a single textual laboratory report, then it is assumed to contain a collection of individual test results and measurements, each of which is provided in its own OBX segment (with the exception of multi-valued measurements, such as blood pressure) and which must be identified by a test code in OBX-3. Test results and measurements are considered to be meaningful even outside the context of the report in which they were provided.

The comments for each test result will be the union of the comments (NTE segments) provided for the OBR group and the comments (NTE segments) provided for the test result specifically.

Comments are not saved for measurements.

PKB processes content of this form in an OBX-centric manner. That is, PKB extracts the test results and measurements from the report and does not guarantee to display them alongside the other test results and measurements with which they were originally provided.

Sometimes, the same test result might be reported as part of more than one profile. This is valid, providing that each OBX segment appears no more than once in any given OBR group. However, since PKB does not include the profile as part of the result identity then all except the first instance of the OBX segment will be silently ignored. It is not valid to provide different results for the same test ID in different profiles within a given laboratory order.

It is valid to provide more than one measurement for the same measurement type (as identified by OBX-3) within any given OBR group. All such measurements will be processed.

Relevant entities

Please click through to the Data Model to explore the presentation of these entities in the web interface.

Update behaviour

Message Entity Matching Criteria Behaviour (Matched) Behaviour (Not Matched)
R01 [[Lab Report]] [[Lab Report.External ID]] as derived from ORC-3.1 or OBR-3.1 Associated [[Lab Result]] entries are individually matched.

Note: if a [[Lab Result]] that was previously provided with the [[Lab Report]] is omitted from this [[Lab Report]], the [[Lab Result]] will be left unmodified. It will not be deleted.
New [[Lab Report]] created.
  [[Lab Result]] Results are matched on the type of test. The type is derived from the test ID (OBX-3) and the units (OBX-6). The existing [[Lab Result]] is replaced in its entirety with the values provided in this message. A partial update is not performed. New [[Lab Result]] created.
  [[Measurement]] There is no unique identifier on a [[Measurement]] submitted via HL7, so they cannot be updated. N/A New [[Measurement]] created.

Definition

Segment

Field

Component

Description

Example

Data Model
(Lab Reports)

Data Model
(Measurements)

MSH



Message header. This conforms to PKB's standard definition.


 

 

PID



Patient identification. This conforms to PKB's standard definition.


 

 

{

[ ORC ]



Common order. Can optionally be included to specify the filler order number. This will be overridden by OBR-3.1 if present.


 

 


[ ORC-3 ]


Filler order number


 

 



ORC-3.1

Filler order number

MYORDER0001

[[Lab Report.External ID]]

if OBR-3 was not provided

 


[ ORC-13 ]


Enterer's Location


 

 



ORC-13.9

Description

Laboratory 1

[[Lab Report.Enterer Location]]

 

OBR



Observation request


 

 


[ OBR-3 ]


Filler order number. If present, this will override any value in ORC-3.1. Corrections to results in the same lab order will be treated as updates (not new data).


 

 



OBR-3.1

Filler order number

MYORDER0001

[[Lab Report.External ID]]

 


[ OBR-4 ]


Universal service identifier. For textual reports, these values override the ones in OBX-3. If this field is provided, at least the service name must be given. See here for more information on code sets.


If a textual report, these values map into 

[[Lab Report->Lab Result.Test]]

instead of OBX-3




[ OBR-4.1 ]

Service ID

LAB100

If not a textual report, this value is ignored.

 



OBR-4.2

Service name

FBC

[[Lab Report->Lab Result.Service]]

 



[ OBR-4.3 ]

Service coding system

WinPath

If not a textual report, this value is ignored.

 



[ OBR-4.5 ]

Alternative service name

Full Blood Count

[[Lab Report->Lab Result.Service]]

if OBR-4.2 was not provided

 


[ OBR-7 ]


Observation timestamp. This will be used only if there is no timestamp in OBX-14.


 

 



OBR-7.1

Observation timestamp

201505191657

[[Lab Report->Lab Result.Timestamp]]

if OBX-14 was not provided

[[Measurement.Timestamp]]

if OBX-14 was not provided


[ OBR-14 ]


Received timestamp.


 

 



OBR-14.1

Received timestamp

201505191521

[[Lab Report->Received Timestamp]]



[ OBR-16 ]


Ordered by. If present, at least the family name must be given.


[[Lab Report->Lab Result->Source.Source Text]]

[[Measurement->Source.Source Text]]



OBR-16.2

Family name

Foster

 

 



[ OBR-16.3 ]

Given name

John

 

 



[ OBR-16.4 ]

Middle names

Harry

 

 



[ OBR-16.6 ]

Title

Dr

 

 


[ OBR-24 ]


Laboratory discipline.






OBR-24.1

Laboratory discipline.

ICU

 [[Lab Report->Discipline]]

 


[ OBR-25 ]


Result status.

If a value of R is provided: any lab results received previously for this report ID will be marked as deleted. OBX segments are not required and will be ignored.

Otherwise: the report is processed as documented.






OBR-25.1

Result status

F

 

 

{ [ NTE ] }



NTE segments can be used to include comments. NTE segments immediately following the OBR segment will be considered to apply to all results in this message.


 

 


NTE-3


Comment


 

 



NTE-3.1

Comment

This is a comment.

These OBR-level comments will be written to 

[[Lab Report->Lab Result.Comments]]

Any OBX-level comments will be appended to the OBR-level comments.

 

{ OBX }



Observation or result


 

 


OBX-2


Value type.

OBX segments with these value types are silently ignored: AD, CP, DT, DTM, ED, MO, PN, RP, TM, TN, XAD, XCN, XON, XPN, XTN

For SN, a numeric value must be provided in OBX-5.2.

For all other value types, note that:


 

 



OBX-2.1

Value type

NM


 


OBX-3


Observation identifier. See here for more information on code sets.


 

 



OBX-3.1

Test ID

If this is a textual report, this value will be overridden by OBR-4.1

If a measurement is being provided, this must ID must match one of the predefined values which PKB can accept.

777-3

[[Lab Report->Lab Result.Test.Code]]

 



[ OBX-3.2 ]

Test name

Platelets

[[Lab Report->Lab Result.Test.Display Text]]

 



[ OBX-3.3 ]

Test coding system

If this is a textual report, this value will be overridden by OBR-4.3
Note: PKB will only accept a measurement if this value is one of the following:
( sct, snomed-ct, snomed ct, http://snomed.info/sct, 2.16.840.1.113883.6.96 )

LOINC

[[Lab Report->Lab Result->Test.Code System]]

 



[ OBX-3.5 ]

Alternative test name

Platelet count

[[Lab Report->Lab Result.Test.Display Text]]

if OBX-3.2 was not provided

 


OBX-5


Test result value.

If providing an SN value:

  • OBX-5.1 must be one of: >, <, >=, <=, =
    • <> is also valid, but not supported. Results with this comparator will be silently ignored.
  • OBX-5.2 must be a number
  • OBX-5.3 and OBX-5.4 are not supported. Results containing a non-empty value for either of these will be silently ignored.






[ OBX-5.1 ]

Value or comparator.

200

If numerical data, then value set in

[[Lab Report->Lab Result.Value]]

else if textual then value set in

[[Lab Report->Lab Result.Value Text]]

else if a multi-line report then values set in

[[Lab Report->Lab Result.Comments]]

else if SN then map to

[[Lab Report->Lab Result.Comparator]]

[[Measurement.Value]]

If a multi-valued measurement is being supplied, then the next OBX segment will contain the value for 

[[Measurement.Value2]]



[ OBX-5.2 ]

Value

200

If SN, then set in

[[Lab Report->Lab Result.Value]]



[ OBX-6 ]


Units. See here for more information on code sets.



 



[ OBX-6.1 ]

Unit ID

X10TO9L

[[Lab Report->Lab Result.Units.Code]]

if OBX-6.2 was not provided

 



[ OBX-6.2 ]

Mandatory for measurements

Unit name.

If providing a measurement, this must match the corresponding PKB permitted value.

10 to 9 per L

[[Lab Report->Lab Result.Units.Code]]

 


[ OBX-7 ]


Reference range. If this is a numeric report, then this value must be a numeric range. Otherwise, a textual range can be supplied. Numeric ranges in the format a-b, <a, <=a, >b, >=b are all supported.


 

 



OBX-7.1

Reference range

100-300

If a numeric range provided, then the following values will be set appropriately

[[Lab Report->Lab Result.Range Low]]

[[Lab Report->Lab Result.Range Low Inclusive]]

[[Lab Report->Lab Result.Range High]]

[[Lab Report->Lab Result.Range High Inclusive]]

else value set in

[[Lab Report->Lab Result.Textual Range]]

 


OBX-11


Result status. Only values of F and C will be processed. Values of I, O, P or X (which indicate pending or no results) are silently ignored, whilst any other values will cause an error.


 

 



OBX-11.1

Result status

F

 

 


[ OBX-13 ]


Custom access rules for lab results. Currently supported: "{patientDelay:NUMBERdays}" with any whole number in place of "NUMBER" (no spaces).  The patient will see that a lab result has arrived, but the result value will not be revealed until the set number of days past the date/time of observation have passed. If this field is not specified the patient will be able to see their results immediately.


 

 



OBX-13.1

Custom access rules

{patientDelay:3days}

 

 


[ OBX-14 ]


Observation timestamp. If this is not present, OBR-7 is used instead.


 

 



OBX-14.1

Observation timestamp

201505191657

[[Lab Report->Lab Result.Timestamp]]

[[Measurement.Timestamp]]

{ [ NTE ] }



NTE segments can be used to include comments. NTE segments immediately following an OBX segment will be considered to apply only to the immediately preceding result.


 

 


NTE-3


Comment


 

 



NTE-3.1

Comment

This is a comment.

These OBX-level comments will be appended to

[[Lab Report->Lab Result.Comments]]

after any OBR-level comments.

 

[ PV1 ]
}


This is used to include the Hospital Service Code of the observations
   

[ PV1-10 ]
Hospital service. See here for more information on code sets.
   


PV1-10.1 Hospital service code
[[Lab Report->Lab Result.Specialty]]  

Examples

An example of a lab result message.
 
MSH|^~\&|Corepoint|TDL|HL7API|PKB|201303080949||ORU^R01|ABC0000000001|P|2.4
PID|||9999999999^^^NHS^NH||Smith^John^Joe^^Mr||19700101|M|||My flat name^1, The Road^London^London^SW1A 1AA^GBR||john.smith@hotmail.com^NET~01234567890^PRN~07123456789^PRS|john.smith@company.com^NET~01234098765^WPN||||||||||||||||N|
OBR|1|12F000005|12F000005|LFT^LIVER PROFILE^WinPath||201303080948|201303080000||||||||SST|E85109||||||201303080949||CHE|F
OBX|1|NM|BILI^Bilirubin^Winpath||5|umol/L|0-20||||F
OBX|2|NM|ALP^Alkaline Phosphatase^Winpath||120|IU/L|40-130||||F|||201303080000
OBX|3|NM|ALT^Alanine Transaminase^Winpath||20|IU/L|10-50||||F||patientDelay:3days|201303080000
PV1|1|||||||||SPEC_01|

An example of a measurement message.
 
MSH|^~\&|Corepoint|TDL|HL7API|PKB|201303080949||ORU^R01|ABC0000000001|P|2.4
PID|||9999999999^^^NHS^NH||Smith^John^Joe^^Mr||19700101|M|||My flat name^1, The Road^London^London^SW1A 1AA^GBR||john.smith@hotmail.com^NET~01234567890^PRN~07123456789^PRS|john.smith@company.com^NET~01234098765^WPN||||||||||||||||N|
OBR|1||||||||||||||||||||||||F
OBX|1|NM|107647005^^sct||75|^kg^|||||F

Response

PKB will respond with a standard HL7 acknowledgement.

Translating units

PKB translates some units so that results from different laboratories can be charted on the same axes. The translation happens for mass / volume units e.g. mg / dL is converted to g / L as appropriate for each test. It also happens for moles / volume e.g. mmol / mL is converted to mol / L as appropriate for each test. No conversions happen from mass to moles e.g. mg / dL is not converted to mmol / mL.

Supported single measurements


 Snomed code  Label
 Units
 107647005  Weight  kg
 162755006  Height  cm
 276361009  Waist  cm
 301338002  Head circumference  cm
 301898006  Body surface area  square metres
 301331008  BMI (Body mass index)  kg/m^2
 170804003  Ideal body weight  kg
 162986007  Pulse  bpm
 162913005  Respiration  rpm
 105723007  Temperature  degrees Celcius
 366162006  CVP (Central venous pressure)  cmH20
 366156001  PEF (peak expiratory flow)  l/s
 257733005  Activity (Rating Scale: 0-10)   level (1-10)
 415882003  Axillary (under arm) temperature  degrees Celcius
 431314004  SPO2 (oxygen saturation)  %
 1036631000000109 Musculoskeletal Health Questionnaire (MSK-HQ) score not required

An example of a single measurement message.
 
MSH|^~\&|Corepoint|TDL|HL7API|PKB|201303080949||ORU^R01|ABC0000000001|P|2.4
PID|||9999999999^^^NHS^NH||Smith^John^Joe^^Mr||19700101|M|||My flat name^1, The Road^London^London^SW1A 1AA^GBR||john.smith@hotmail.com^NET~01234567890^PRN~07123456789^PRS|john.smith@company.com^NET~01234098765^WPN||||||||||||||||N|
OBR||||||||||||||||^Ward^Olivia^Elsie^^Ms|||||||||F
OBX||NM|162986007^^sct||7|^bpm|||||F|||20200401140103+0100

Supported multi measurements


 Snomed code Label
 Units
 75367002 Blood pressure 
 163035008 Blood pressure sitting 
 163034007 Blood pressure standing 
 163033001 Blood pressure supine 
 163030003  mmHg (systolic)
 163031004  mmHg (diastolic)
An example of a multi measurement message.
 
MSH|^~\&|Corepoint|TDL|HL7API|PKB|201303080949||ORU^R01|ABC0000000001|P|2.4
PID|||9999999999^^^NHS^NH||Smith^John^Joe^^Mr||19700101|M|||My flat name^1, The Road^London^London^SW1A 1AA^GBR||john.smith@hotmail.com^NET~01234567890^PRN~07123456789^PRS|john.smith@company.com^NET~01234098765^WPN||||||||||||||||N|
OBR||||||||||||||||^Ward^Olivia^Elsie^^Ms|||||||||F
OBX||NM|75367002^sct|||-|||||F|||20191106091410+0000
OBX||NM|163030003^^sct||190|^mmHg (systolic)|||||F|||20191106091410+0000
OBX||NM|163031004^^sct||59|^mmHg (diastolic)|||||F|||20191106091410+0000

Comments