This page is part of the FHIR Specification (v0.01: Historical Archive Draft). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions

LabReport

The findings and interpretation of pathology tests performed on tissues and body fluids. This is typically done in a laboratory but may be done in other environments such as at the point of care.

The relative url is /labreports

Content

UML Image

<LabReport xmlns="http://www.hl7.org/fhir">
  <id> mand id Master Resource Id, always first in all resources</id>
  <status> mand code Registered|Interim|Final|Amended|Cancelled|Withdrawn</status>
  <issued> mand instant date issed for current status</issued>
  <patient> mand (Patient) The patient the report is about</patient>
  <admission> opt (Admission) Admission Context</admission>
  <laboratory> mand (Organization) Responsible Laboratory</laboratory>
  <reportId> opt id Id for external references to this report</reportId>
  <requestDetail>  <!-- Zero+ -->
   <requestOrderId> opt Identifier Id assigned by requester</requestOrderId>
   <receiverOrderId> opt Identifier Receiver's Id for the request</receiverOrderId>
   <requestTest> Zero+ CodeableConcept Test Requested</requestTest>
   <requester> opt (Agent|Organization) Responsible for request</requester>
   <clinicalInfo> opt (Any) Clinical information provided</clinicalInfo>
  </requestDetail>
  <reportName> mand CodeableConcept Name for the entire report</reportName>
  <service> opt CodeableConcept Biochemistry, Haematology etc</service>
  <diagnosticTime> mand dateTime Effective time of diagnostic report</diagnosticTime>
  <specimen> Zero+ (Specimen) Specimen (incl. time of collection)</specimen>
  <resultGroup>  <!-- One+ -->
   <name> opt CodeableConcept What defines the group</name>
   <specimen> opt (Specimen) Specimen details</specimen>
   <result>  <!-- One+ -->
    <name> opt CodeableConcept Name or code of the result</name>
    <value[x]> opt Quantity|CodeableConcept|Attachment|
              Ratio|Choice|Interval(dateTime)|string Result. [x] = type name</value[x]>
    <flag> opt code + | ++ | +++ | - | -- | --- </flag>
    <status> mand code Registered|Interim|Final|Amended|Cancelled|Withdrawn</status>
    <comments> opt string Comments about result</comments>
    <referenceRange>  <!-- Zero+ -->
     <meaning> opt CodeableConcept The meaning of this range</meaning>
     <range[x]> mand Quantity|Interval(Quantity)|string Reference</range[x]>
    </referenceRange>
   </result>
  </resultGroup>
  <conclusion> opt Narrative Clinical Interpretation of test results</conclusion>
  <codedDiagnosis> Zero+ CodeableConcept Codes for the conclusion</codedDiagnosis>
  <representation> One+ Attachment Entire Report as issued</representation>
  <extensions> opt See Extensions   See Extensions </extensions>
  <text> mand Narrative Text summary of report, for human interpretation</text>
</LabReport>

Schema for LabReport and an example (or formatted for browser)

Terminology Bindings

Notes:

Relationship between results, narrative, and synoptic reports

One difficult aspect of the design of this resource can be captured with a simple question: “just what is a result?” There is a wide range of variation in the answers to this question; some respond that a result is inherently measurement based, while others focus on the clinical utility of the data item.

Some practical examples:

Which of these are results? For this resource, we have chosen to take an inclusive view; any of these things can be a result, as long as they have a formal code or name that has a clinical meaning, and some kind of (possible) value then they can be a result.

Searching Criteria

The following simple search/filter parameters are defined for person:

id an identifier associated with the report
test the name or code of either a requested test, the report or a report group
result the name or code or result value of a result
specimen Either of the specimens. The parameter is then followed by an additional parameter (separated for a ".") that species search/filter inside specimen
patient The identity of a patient
laboratory The identity of an laboratory

The standard search parameters also apply (see Searching).

Formal Definitions

The formal definitions for the elements above. Also available as an XML file.

LabReport
DefinitionThe findings and interpretation of pathology tests performed on tissues and body fluids. This is typically done in a laboratory but may be done in other environments such as at the point of care
ControlMandatory, 1..1
RequirementsUse to record any pathology test result, including the result of a test on a specimen taken as part of a composite procedure or operation.
CommentsNot to be used for reporting on non-pathology test results e.g. diagnostic imaging, ECG or respiratory function tests. Not to be used to represent an entire cumulative report. This Pathology test result archetype represents only one of the result sets that is usually viewed as a vertical in a cumulative test report. A cumulative report is a view that is constructed from the results represented by multiple OBSERVATION archetypes. This archetype is suitable for representation of general pathology test results, but not intended to cover full synoptic reports. For these, additional resources are required to represent the data properly
RIM MappingObservation[isNormalAct() and subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and domainMember("LabObservationType", code)]
LabReport.id
DefinitionMaster Resource Id, always first in all resources
ControlMandatory, 1..1
Typeid
RIM Mappingunique(./id[isNormalDatatype() and displayable="false" and scope="OBJ" and reliability="ISS"])
LabReport.status
DefinitionThe status of the pathology test result as a whole
ControlMandatory, 1..1
Typecode from LabReportStatus
Must Understandtrue
RequirementsLabs routinely issue provisional/incomplete reports, or withdraw previously released reports
RIM Mappingregistered: ./statusCode[isNormalDatatype()]="new"; interim: ./statusCode[isNormalDatatype()]="active"; final: ./statusCode[isNormalDatatype()]="complete" and not(./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseLabOrder", code) and isNormalAct()]); amended: ./statusCode[isNormalDatatype()]="complete" and ./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseLabOrder", code) and isNormalAct() and statusCode="completed"]; cancelled: ./statusCode[isNormalDatatype()]="aborted"; withdrawn: ./statusCode[isNormalDatatype()]="obsolete"
LabReport.issued
DefinitionThe date and/or time that the result was issued from the source for the recorded ‘Test result status
ControlMandatory, 1..1
Typeinstant
Must Understandtrue
RequirementsClinicians need to be able to check the date that the report was released
CommentsMay be different from LabReport.updated, because that is the status of this record, not the report the record is about
RIM MappingfirstOf(unique(./participation[isHighest(priorityCode) and typeCode="VRF" and isNormalParticipation()]/time[type="TS"]), unique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/time[type="TS"]))
LabReport.patient
DefinitionThe patient about who the report is about
ControlMandatory, 1..1
TypeResource(Patient)
Must Understandtrue
RequirementsMust know the patient context
RIM Mappingunique(./participation[isHighest(priorityCode) and typeCode="SBJ" and isNormalParticipation()]/role[classCode="PAT"])
To Doneed to check the wording -is it about, upon, for?
LabReport.admission
DefinitionThe admission that this diagnostic investigation is associated with
ControlOptional, 0..1
TypeResource(Admission)
RequirementsSome institutions track and file diagnostic reports under a specific admission
RIM Mappingunique(./inboundRelationship[isHighest(priorityCode) and typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#ENC", code) and moodCode="EVN" and isNormalAct()])
To DoReckon this is not 80%
LabReport.laboratory
DefinitionThe laboratory service that issued the report
ControlMandatory, 1..1
TypeResource(Organization)
RequirementsNeed to know how to contact if there are queries about the results. Also may need to track the source of reports for secondary data analysis
CommentsThis is not necessarily the source of the atomic reports - it's the lab that takes responsibility for the clinical report
RIM Mappingunique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/role[subsumesCode("RoleClass#ASSIGN", classCode)]/scoper[subsumesCode("EntityClass#ORG", classCode) and determinerCode="INSTANCE"])
LabReport.reportId
DefinitionThe local ID assigned to the report by the order filler, usually by the Laboratory Information System (LIS).
ControlOptional, 0..1
Typeid
RequirementsNeed to know what identifier to use when making queries about this report from the source laboratory
RIM Mappingunique(./id[displayable="true" and scope="OBJ"])
LabReport.requestDetail
DefinitionDetails concerning a single pathology test requested.
Control0..*
RequirementsNeed to be able to track completion of requests based on reports issued, and also to report what diagnostic test swere requested (not always the same as what is delivered)
CommentsNote: Usually there is one test request for each result, however in some circumstances multiple test requests may be represented using a single Pathology test result resource
RIM Mappingunique(./outboundRelationship[typeCode="FLFS" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and subsumes("ActMood#PRMS", moodCode) and isNormalAct()])
LabReport.requestDetail.requestOrderId
DefinitionThe local ID assigned to the order by the order requester.
ControlOptional, 0..1
TypeIdentifier
RequirementsNeed to be able to track completion of requests based on reports issued
CommentsEquivalent to the Placer Order Identifier
RIM Mappingunique(./outboundRelationship[typeCode="FLFS" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and subsumes("ActMood#RQO", moodCode) and isNormalAct()]/id[scope="OBJ" and displayable="true"])
To DoReckon this is not 80%
LabReport.requestDetail.receiverOrderId
DefinitionThe local ID assigned to the test order by the order filler, usually by the Laboratory Information System (LIS).
ControlOptional, 0..1
TypeIdentifier
RequirementsNeed to be able to track completion of requests based on reports issued
CommentsUsually equivalent to the DICOM Accession Number and the Filler Order Identifier.
RIM Mappingunique(./id[scope="OBJ" and displayable="true"])
To DoReckon this is not 80%
LabReport.requestDetail.requestTest
DefinitionIdentification of pathology test requested,
Control0..*
TypeCodeableConcept from LabRequests
RequirementsNeed to be able to report what diagnostic test swere requested (not always the same as what is delivered)
CommentsUseful where the test requested differs from the test actually performed.
RIM Mapping./code
LabReport.requestDetail.requester
DefinitionDetails of the clinician or organisation requesting the laboratory test.
ControlOptional, 0..1
TypeResource(Agent|Organization)
RequirementsThe requesting clinician may need to be contacted concerning the interpretation of the lab report
RIM MappingAgent: unique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/role[subsumesCode("RoleClass#ASSIGN", classCode)] Organization: unique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/role[subsumesCode("RoleClass#ASSIGN", classCode)]/scoper[subsumesCode("EntityClass#ORG", classCode) and determinerCode="INSTANCE" and code[isNormalDatatype]])
LabReport.requestDetail.clinicalInfo
DefinitionDetails of the clinical information provided to the laboratory along with the original request
ControlOptional, 0..1
TypeResource(Any)
RequirementsKnowing the clinical information may influence the interpretation of the result
RIM Mapping./outboundRelationship[typeCode="PERT" and isNormalActRelationship()]/target
To DoThis isn't really *ANY* resource. You can't send a drug or an Animal or a bunch of other things. What you really want here are "acts", and I suspect there's a constraint that the subject of the LabReport must have participated in them as subject or perhaps in some other way.
LabReport.reportName
DefinitionIdentification of the pathology test performed, sometimes including specimen type.
ControlMandatory, 1..1
TypeCodeableConcept from LabReportNames
Must Understandtrue
RequirementsNeed to know what report this is, so clinicians can filter/find the reports they are looking for
CommentsA test result may be for a single analyte, or a group of items, including panel tests.
RIM Mapping./code
LabReport.service
DefinitionThe diagnostic service that performs the examination e.g. biochemistry, haematology.
ControlOptional, 0..1
TypeCodeableConcept from LabServices
RequirementsHelp clinicians filter/find the reports they are looking for
RIM Mappingunique(./inboundRelationship[typeCode="COMP" and isNormalActRelationship()]/source[subsumesCode("ActClass#LIST", classCode) and moodCode="EVN" and inDomain(code,"Lab Service") and isNormalAct()]/code
To DoI'm not sure this is in the 80%.
LabReport.diagnosticTime
DefinitionThe diagnostically relevant time for this report
ControlMandatory, 1..1
TypedateTime
Must Understandtrue
RequirementsNeed to know where in the patient history to file/present this report
CommentsThe diagnostically relevant time can be derived from the specimen collection times, but the specimen information is not always available, and the exact relationship is not always automatic
RIM Mapping./effectiveTime[type="TS"]
LabReport.specimen
DefinitionDetails about the specimen if all individual test results are derived from the same specimen
Control0..*
TypeResource(Specimen)
RequirementsNeed to be able to report information about the collected specimens on which the report is based
CommentsIf the specimen is sufficiently specified with a code in the Test result name, then this additional data may be redundant. If there are multiple specimens, these may be represented per 'Result group'
RIM Mappingunique(./participation[typeCode="SUBJ" and isNormalParticipation()]/role[subsumesCode("RoleClass#SPEC", classCode)])
LabReport.resultGroup
DefinitionA group of results. Results may be grouped by specimen, or by some value in LabReport.resultGroup.name to describe what binds all the results together.
Control1..*
Must Understandtrue
RequirementsNeed to be able to report groups of results, where the result grouping is arbitrary, but meaningful
CommentsMany (most) lab reports don't really have a meaningful group. In these cases, just create a single group with no specimen or name
RIM Mapping./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[isNormalAct() and subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and fromDomain(code, "LabObservationBattery")]
LabReport.resultGroup.name
DefinitionA code or name that describes the group of results
ControlOptional, 0..1
TypeCodeableConcept from LabResultGroupNames
Must Understandtrue
CommentsFor example, the antibody code for a goup of antibody related test, or the organism code for a group of isolate/sensitivities. Leave blank if there is no particular meaning associated with the group
RIM Mapping./code
LabReport.resultGroup.specimen
DefinitionDetails about the individual specimen to which these ‘Result group’ test results refer, where testing of multiple specimens is required.
ControlOptional, 0..1
TypeResource(Specimen)
RequirementsNeed to be able to report information about the collected specimens on which the report is based
RIM Mappingunique(./participation[typeCode="SBJ" and isNormalParticipation()]/role[subsumesCode("RoleClass#SPEC", classCode)])
LabReport.resultGroup.result
DefinitionSpecific detailed result, including both the value of the result item, and additional information that may be useful for clinical interpretation. Results include whatever specific data items pathology labs report as part of the clinical service; it is not confined to measurements.
Control1..*
Must Understandtrue
RequirementsNeed to report results with information that assist with interpretation
RIM Mapping./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and isNormalAct() and fromDomain(code, "LabObservationResult")]
LabReport.resultGroup.result.name
DefinitionIdentifies the meaning of the value
ControlOptional, 0..1
TypeCodeableConcept from LabResultNames
Must Understandtrue
RequirementsNeed to know what the result is about
Commentsresults are fundamentally a name - value pair with additional clarifying information
RIM Mapping./code
LabReport.resultGroup.result.value[x]
DefinitionActual value of the result. Most result values will be numerical measurements, but others may be coded concepts, free text, or multimedia images
ControlOptional, 0..1
TypeQuantity|CodeableConcept|Attachment|Ratio|Choice|Interval(dateTime)|string from *unbound*
Must Understandtrue
RequirementsNeed a value for the result
RIM Mapping./value
LabReport.resultGroup.result.flag
DefinitionFlag indicating the abnormal status of the result
ControlOptional, 0..1
Typecode from LabResultFlag
Must Understandtrue
RIM Mapping./interpretationCode
To DoThe proposed set of codes are too narrow (and doesn't map well to v3.)
LabReport.resultGroup.result.status
DefinitionThe status of the result value
ControlMandatory, 1..1
Typecode from LabReportStatus
Must Understandtrue
RequirementsNeed to track the status of individual results - some results are finalised before the whole report is finalised
RIM Mapping(as per LabReport.status)
LabReport.resultGroup.result.comments
DefinitionMay include statements about significant, unexpected or unreliable. values, or information about the source of the value where this may be relevant to the interpretation of the result.
ControlOptional, 0..1
Typestring
Must Understandtrue
RequirementsNeed to be able to provide free text additional information
RIM Mappingunique(./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and mapsTo(code, "LOINC# 48767-8") and isNormalAct()]/value[type="ST"])
LabReport.resultGroup.result.referenceRange
DefinitionGuidance on how to interpret the value by comparison to a normal or recommended range
Control0..*
Must Understandtrue
RequirementsNeed to be able to provide multiple reference ranges
CommentsMost results only have one reference range. Some non-numerical results don't have a reference range
RIM Mapping./outboundRelationship[typeCode="REFV" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and isCriterionInd="true" and isNormalAct()]
To DoAre multiple reference ranges in the 80%?
LabReport.resultGroup.result.referenceRange.meaning
DefinitionCode for the meaning of the reference range
ControlOptional, 0..1
TypeCodeableConcept from LabReferenceRanges
RequirementsNeed to be able to say what kind of reference range this is - normal, recommended, therapeutic, or perhaps what state this reference range applies to (i.e. hormonal cycles)
RIM Mapping./interpretationCode
LabReport.resultGroup.result.referenceRange.range[x]
DefinitionActual value of the reference range. May be a quantity (<20mg/L), an interval (10-20 umol/L), or some text
ControlMandatory, 1..1
TypeQuantity|Interval(Quantity)|string
RequirementsNeed to be able to report numerical or text reference ranges, and handle legacy data
CommentsText reference ranges are typically used in endocrinology, or for legacy data with string reference ranges
RIM Mapping./value[type=("PQ", "IVL_PQ", "ST")]
LabReport.conclusion
DefinitionConcise and clinically contextualised narrative interpretation of the pathology test results.
ControlOptional, 0..1
TypeNarrative
Must Understandtrue
RequirementsNeed to be able to provide a conclusion that is not lost amongst the basic result data
Commentscommon reports don't have a conclusion, but some do
RIM Mappingunique(./inboundRelationship[typeCode="SPRT" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and mapsTo(code, "LOINC# 48767-8") and isNormalAct()]/value[type="ST"])
To DoIs this in the 80%?
LabReport.codedDiagnosis
DefinitionCodes for the conclusion
Control0..*
TypeCodeableConcept from LabDiagnosisCodes
RIM Mappingunique(./inboundRelationship[typeCode="SPRT" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and subsumesCode(code, "LOINC# 54531-9") and isNormalAct()]/value[type="CD"])
LabReport.representation
DefinitionRich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they must be semantically equivalent.
Control1..*
TypeAttachment
Must Understandtrue
RequirementsLaboratory needs to be able to provide it's own fully formatted report for clinical fidelity
CommentsPossible formats: text/html, text/plain, text/rtf, application/msword, application/pdf, application/rtf, application/vnd.oasis.opendocument.text, application/vnd.openxmlformats-officedocument.wordprocessingml.document
RIM Mapping./text[type="ED"]
LabReport.extensions
DefinitionSee Extensions
ControlOptional, 0..1
RIM MappingN/A
LabReport.text
DefinitionText summary of report, for human interpretation
ControlMandatory, 1..1
TypeNarrative
RIM Mappingunique(./text[type="ST"])

This is an old version of FHIR retained for archive purposes. Do not use for anything else
Implementers are welcome to experiment with the content defined here, but should note that the contents are subject to change without prior notice.
© HL7.org 2011 - 2012. FHIR v0.01 generated on Mon, May 14, 2012 09:48+1000.