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 one of our predefined measurement types matches on both:
the ID in OBX-3.1
the unit in OBX-6.2 (or else OBX-6.1 if OBX-6.2 was not provided)
Relevant entities
Test result information is used to populate [[Lab Report]] / [[Lab Result]] / [[Local Test Type]] entities
Measurement information is used to populate [[Measurement]] entities
Please click through to the Data Model to explore the presentation of these entities in the web interface.
Definition
Segment | Field | Opt | RP/# | Component | Description | Example | Data Model | Data Model |
---|---|---|---|---|---|---|---|---|
MSH |
|
|
|
| Message header. This conforms to PKB's standard definition. |
|
|
|
PID |
|
|
|
| Patient identification. This conforms to PKB's standard definition. |
|
|
|
[ PV1 ] |
|
|
|
| This is used to include the Hospital Service Code of the observations |
|
|
|
| PV1-10 | O |
|
| Hospital service. See our notes on code sets for more information on our handling of coded data. |
| PV1-10 contributes to privacy label assignment. | |
|
|
|
| PV1-10.1 | Hospital service code |
| [[Lab Report->Lab Result.Specialty]] | [[Measurement Report->Measurement.Specialty]] |
{ |
|
|
|
| Common order |
|
|
|
| ORC-3 | C |
|
| Filler order number. At least one of either ORC-3.1 or OBR-3.1 must be provided. It is an error for these values to differ. |
|
|
|
|
|
|
| ORC-3.1 | Filler order number | MYORDER0001 | [[Lab Report.External ID]] if OBR-3 was not provided | [[Measurement Report.External ID]] if OBR-3 was not provided |
| ORC-13 | O |
|
| Enterer's Location |
|
|
|
|
|
|
| ORC-13.9 | Description | Laboratory 1 | [[Lab Report.Enterer Location]] |
|
OBR |
|
|
|
| Observation request |
|
|
|
| OBR-3 | C |
|
| Filler order number. At least one of either ORC-3.1 or OBR-3.1 must be provided. It is an error for these values to differ. |
|
|
|
|
|
|
| OBR-3.1 | Filler order number | MYORDER0001 | [[Lab Report.External ID]] | [[Measurement Report.External ID]] |
| OBR-4 | C |
|
| Universal service identifier. See our notes on code sets for more information on our handling of coded data. For textual reports, these values override the ones in OBX-3, and as such OBR-4.1 is mandatory. |
| If a textual report content pattern The test type processing uses OBR-4 instead of OBX-3. Components 1-6 of OBR-4 will be saved into [[Lab Report->Lab Result.Code]]. Note that this will mean the service name and the test name might be the same for some textual reports. |
|
|
|
|
| OBR-4.1 | Service ID | LAB100 | The privacy label lookup based on service code is performed regardless of which content pattern was provided. Then additionally: If a textual report [[Lab Report->Lab Result->Local Test Type.Test Code]] Else Ignored. | OBR-4.1 contributes to privacy label assignment. |
|
|
|
| OBR-4.2 | Service name | FBC | [[Lab Report->Lab Result.Service]] and [[Lab Report->Lab Result->Local Test Type.Service Name]] Note: the Local Test Type only stores the most recently provided service name. |
|
|
|
|
| OBR-4.3 | Service coding system | WinPath | If a textual report Stored in [[Lab Report->Lab Result->Local Test Type.Test Coding System]] Else Ignored. |
|
|
|
|
| OBR-4.5 | Alternative service name | Full Blood Count | Used instead of OBR-4.2 if OBR-4.2 was not provided. |
|
| OBR-7 | C |
|
| Observation timestamp. This will be used only if there is no timestamp in OBX-14. It is an error for neither to be provided. |
|
|
|
|
|
|
| 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 | O |
|
| Received timestamp. |
|
|
|
|
|
|
| OBR-14.1 | Received timestamp | 201505191521 | [[Lab Report->Received Timestamp]] |
|
| OBR-16 | O |
|
| 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 | O |
|
| Laboratory discipline. |
|
|
|
|
|
|
| OBR-24.1 | Laboratory discipline. | ICU | [[Lab Report->Discipline]] |
|
| OBR-25 | O |
|
| 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. Note: if the report contains multiple panels where some but not all have a status of R, then PKB will first delete all results associated with the report ID before following the usual create or update workflow for lab results provided in panels that do not have a status of R. |
|
|
|
|
|
|
| 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 | O |
| NTE-3.1 | Comment |
|
|
|
|
|
|
|
| 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. |
|
{ |
|
|
|
| Observation or result |
|
|
|
| OBX-2 | R |
|
| 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 | R |
|
| Observation identifier. See our notes on code sets for more information on our handling of coded data. |
| If an individual result content pattern The test type processing uses OBX-3 instead of OBR-4. Components 1-6 of OBX-3 will be saved into [[Lab Report->Lab Result.Code]]. |
|
|
|
|
| OBX-3.1 | Test ID. If this is a textual report, this value will be overridden by OBR-4.1. Otherwise this value must be provided. If a measurement is being provided, this ID must match one of the predefined values which PKB can accept. | 777-3 | Stored in [[Lab Report->Lab Result->Local Test Type.Test Code]] |
|
|
|
|
| OBX-3.2 | Test name | Platelets | Stored in [[Lab Report->Lab Result->Local Test Type.Test Name]] Note: the Local Test Type only stores the most recently provided test name. |
|
|
|
|
| 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 | Stored in [[Lab Report->Lab Result->Local Test Type.Test Coding System]] |
|
|
|
|
| OBX-3.5 | Alternative test name | Platelet count | Used instead of OBX-3.2 if OBX-3.2 was not provided. |
|
| OBX-5 | R |
|
| Observation value. If providing a structured numeric value (OBX-2 set to SN): |
|
|
|
|
|
|
| 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 | O |
|
| Units. See our notes on code sets for more information on our handling of coded data. |
|
|
|
|
|
|
| OBX-6.1 | Unit ID | X10TO9L | Used instead of OBX-6.2 if OBX-6.2 was not provided. | |
|
|
|
| OBX-6.2 | Unit name. | 10 to 9 per L | Stored in [[Lab Report->Lab Result->Local Test Type.Units]] | This must match the corresponding PKB permitted value. |
| OBX-7 | O |
|
| Reference range. Numeric ranges in the format x-y, <x, <=x, >x, >=x are all supported. If the range does not successfully parse as one of these formats then the contents of this field will be stored as a textual range. Special cases: |
|
|
|
|
|
|
| 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]] else value set in [[Lab Report->Lab Result.Textual Range]] |
|
| OBX-11 | R |
|
| 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 | O |
|
| 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. Note: if this OBR group is a textual report spanning multiple OBX segments, the delay must be provided in the first. |
|
|
|
|
|
|
| OBX-13.1 | Custom access rules | {patientDelay:3days} |
|
|
| OBX-14 | C |
|
| Observation timestamp. If this is not present, OBR-7 is used instead. It is an error for neither to be provided. |
|
|
|
|
|
|
| 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 | O |
|
| 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. |
|
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|||Flat name^1, The Road^London^London^SW1A 1AA^GBR||01234567890^PRN~07123456789^PRS|^NET^^john.smith@company.com~01234098765^WPN||||||||||||||||N|
PV1|1|||||||||SPEC_01|
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
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|||Flat name^1, The Road^London^London^SW1A 1AA^GBR||01234567890^PRN~07123456789^PRS|^NET^^john.smith@company.com~01234098765^WPN||||||||||||||||N|
OBR|1||||||||||||||||||||||||F
OBX|1|NM|107647005^^sct||75|^kg^|||||F|||20200625103943+0100
Response
PKB will respond with a standard HL7 acknowledgement.
Supported single measurements
Snomed code | Label | Units |
366162006 | Central venous pressure (CVP) | cmH20 |
107647005 | Weight | kg |
162755006 | Height | cm |
276361009 | Waist size | cm |
301338002 | Head circumference | cm |
301898006 | Body surface area | square metres |
301331008 | Body mass index (BMI) | kg/m^2 |
170804003 | Ideal body weight | kg |
162986007 | Pulse | bpm |
162913005 | Respiration | rpm |
105723007 | Temperature | degrees Celsius |
1036631000000109 | Musculoskeletal Health Questionnaire (MSK-HQ) score |
|
431314004 | Oxygen saturation (SPO2) | % |
257733005 | Activity (Rating Scale: 0-10) |
|
415882003 | Axillary (under arm) temperature | degrees Celsius |
15527001 | Capillary filling | Seconds |
251843005 | Fluid output from drain | ml |
366156001 | Peak expiratory flow (PEF) | l/min |
313222007 | Forced expiratory volume in one second/Forced vital capacity percent (FEV1/FVC) |
|
59328004 | Forced expiratory volume in 1 second (FEV1) | Litres |
366151006 | Forced vital capacity (FVC) | Litres |
873921000000106 | Forced expired volume in 6 seconds (FEV6) | Litres |
251932003 | Forced expiratory flow rate between 25 and 75% of vital capacity (FEF 25-75) | l/min |
273648008 | Nine hole peg test | Seconds |
414059009 | Number of missed medications today |
|
786441000000107 | Grip strength - left hand | kg |
786451000000105 | Grip strength - right hand | kg |
78564009 | Heart rate measured at systemic artery | beat/min |
1091811000000102 | Diastolic arterial pressure | mmHg |
72313002 | Systolic arterial pressure | mmHg |
810931000000108 | QRISK2 calculated heart age | year |
718087004 | QRISK2 cardiovascular disease 10 year risk score | % |
1325531000000102 | QRISK3 healthy heart age | years |
1085871000000105 | QRISK3 10 year cardiovascular disease risk score | % |
1082641000000106 | Alcohol units consumed per week | u/week |
230085005 | Beer intake | u/week |
230086006 | Wine intake | u/week |
230088007 | Spirits intake | u/week |
442547005 | Alcohol units heaviest day | /day |
230056004 | Cigarette consumption | /day |
230057008 | Cigar consumption | /day |
230058003 | Pipe tobacco consumption | g/week |
413173009 | Minutes from waking to first tobacco consumption | min |
836001000000109 | Waterpipe tobacco consumption | times/week |
401070008 | Number portions fruit/veg daily | /day |
129006008 | Steps |
|
1155968006 | Mood |
|
Examples
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|||Flat name^1, The Road^London^London^SW1A 1AA^GBR||01234567890^PRN~07123456789^PRS|^NET^^john.smith@company.com~01234098765^WPN||||||||||||||||N|
OBR||||||||||||||||^Ward^Olivia^Elsie^^Ms|||||||||F
OBX||NM|162986007^^sct||7|^bpm|||||F|||20200401140103+0100
Supported multi measurements
When providing a blood pressure reading you must provide an OBX segment containing the SNOMED code of the overall reading type, followed immediately by an OBX segment for each component reading you wish to provide.
Note that it is permitted to provide either a systolic or diastolic reading by itself, but the first OBX containing the overall code of the reading must still be supplied.
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) |
Examples
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|||Flat name^1, The Road^London^London^SW1A 1AA^GBR||01234567890^PRN~07123456789^PRS|^NET^^john.smith@company.com~01234098765^WPN||||||||||||||||N|
OBR|||MYORDER0001|||||||||||||^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