NHS North West Genomics
2.2.0 - ci-build
NHS North West Genomics - Local Development build (v2.2.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://fhir.nwgenomics.nhs.uk/Questionnaire/GenomicTestReport | Version: 2.2.0 | ||||
| Active as of 2026-09-20 | Computable Name: | ||||
The aim of this is to support conversion of Genomic Report (HL7 v2 ORU) for use by several NHS Trusts (as HL7 v2 or FHIR).
This Questionnaire describes the common requirement for a Genomic Test Report, extended by Report Panel Questionnaires for each kind of individual test finding - see Report Panels below for the full list.
Although this Questionnaire is genomics-specific in name, the model it describes - Patient, Hospital Spell, Diagnostic Workflow and Results - is a core model for diagnostic reports generally, not something unique to genomics. The same shape applies equally to pathology, radiology and clinical referral reports; genomics is simply the domain this IG documents it against first. See Diagnostic Model Overview for the basic model this Questionnaire adds detail to, and how it relates to Genomic Test Order on the order side.
This is a level 2 (field-level) view of the basic model introduced in Diagnostic Model Overview, showing the entities and key attributes a Genomic Test Report actually carries:
erDiagram
Patient ||--|{ DiagnosticReport : subject
HospitalSpell ||--o{ DiagnosticReport : encounter
ServiceRequest |o--o{ DiagnosticReport : "basedOn (optional)"
DiagnosticReport }o--o{ PractitionerRole : "performer / resultsInterpreter"
PractitionerRole }o--|| Organization : organization
DiagnosticReport ||--o{ Specimen : specimen
DiagnosticReport ||--o{ Observation : "result (Report Panels)"
DiagnosticReport ||--o| Binary : "presentedForm (Attachment.url)"
DocumentReference ||--o| Binary : "content (Attachment.url)"
Patient {
Identifier nhsNumber
Identifier medicalRecordNumber
}
HospitalSpell {
Identifier hospitalProviderSpellIdentifier
}
ServiceRequest {
Identifier orderIdentifier "Placer/Filler Order Number"
}
DiagnosticReport {
Identifier reportIdentifier
code code "Procedure/Test Code"
dateTime effectiveDateTime "Report Date"
code status "Report Status"
string conclusion
CodeableConcept conclusionCode "Outcome"
}
PractitionerRole {
Identifier practitionerIdentifier
}
Organization {
Identifier organisationCode
}
Specimen {
Identifier specimenId
Identifier accessionIdentifier
}
Observation {
code code "Panel-specific finding"
}
DocumentReference {
code type "Narrative Report"
}
Binary {
code contentType
base64Binary data
}
ServiceRequest is shown as optional (basedOn) because it is only
present for a closed-loop report - one answering a specific prior order
the reporting system already knows about. An unsolicited report,
produced without a matching order ever having been received, has no order to
reference - see Order Reference below.
Narrative Report. The full report, as a PDF, is HL7 v2's OBX (type =
ED) - see OBX (type = ED), whose own v2-to-FHIR
conversion mapping is to DocumentReference. DiagnosticReport.presentedForm
and DocumentReference.content are both just an Attachment with a url -
in this IG, both point at the same Binary resource holding the actual
PDF bytes, rather than each carrying its own separate copy. DocumentReference
is the resource this content would be shared via (e.g. IHE XDS.b/MHD, or the
NHS England National Record Locator), while DiagnosticReport.presentedForm
is the more direct route for a system that already holds the DiagnosticReport
and just wants the PDF alongside it.
A laboratory report contains both structured and unstructured information, and they complement each other rather than replace one another.
The Laboratory Report acts as the bridge between these two worlds. It references the structured observations for computer processing, clinical decision support, analytics, and interoperability, while also linking to the complete unstructured report that clinicians view as the authoritative laboratory document. This approach ensures that systems can exchange computable data without losing the rich narrative and legal record contained in the original laboratory report.
The FHIR DiagnosticReport illustrated above is well suited to workflow-based information exchange, where structured clinical data is exchanged between systems and individual observations can be processed, queried, and acted upon. However, it may be less suitable for document sharing use cases, such as IHE XDS/MHD or the NHS England National Record Locator (NRL), where the laboratory report is exchanged as a complete clinical document. In these scenarios, the preferred approach is a FHIR Document (the FHIR equivalent of a Clinical Document Architecture (CDA) document), which packages the report into a self-contained, attested document with a Composition resource as its root. This preserves the report as a legal and clinical record while still allowing structured data to be included.
Further details are available in the Document Perspective section of the HL7 Europe Laboratory Implementation Guide: HL7 Europe Laboratory Report
NW Genomics example FHIR Document - Genomic Report
Metadata is data that applies to the patient's entire clinical pathway and so it extends beyond diagnostic tests. Test detail tends to be common across all diagnostic tests in a patient's pathway, not just genomics.
| Name | LOINC | Value Set / Data Type | Cardinality | HL7 v2 OML_O21 Message | HL7 FHIR ServiceRequest | HL7 FHIR Resource (Message + RESTful) |
|---|---|---|---|---|---|---|
| NHS Number | NHS Number | 0..1 | PID | ServiceRequest.subject.identifier | Patient | |
| Medical Record Number | Medical Record Number | 0..1 | PID | ServiceRequest.subject.identifier | Patient |
Treat as mandatory for reflex or subcontracted orders.
| Name | LOINC | Value Set / Data Type | Cardinality | HL7 v2 OML_O21 Message | HL7 FHIR ServiceRequest | HL7 FHIR Resource (Message + RESTful) |
|---|---|---|---|---|---|---|
| Hospital Service | Service | 0..1 | PV1-10 | Encounter.serviceType | ||
| Case Identification or Account Number | 56797-4 | HospitalProviderSpellIdentifier | 0..1 | PV1-19 | ServiceRequest.encounter.identifier | Encounter.identifier HospitalSpell |
DiagnosticReport.basedOn references the ServiceRequest (order, per
Genomic Test Order) that this report
answers, carried in HL7 v2 as ORC-2/ORC-3 (see the Order Number row
below).
basedOn is populated
and this section is present.ORU_R01 (and its FHIR Message equivalent) is
explicitly designed to also support reporting a result for an order the
receiving system never saw in the first place. In that case there is no
ServiceRequest to reference, basedOn is absent, and this section - and
the Order Number row below - simply doesn't apply.See ctDNA Management Information - How the Two Event Messages Link Together for a fuller worked explanation of solicited vs unsolicited reports in this IG.
| Name | Description | Value Set / Data Type | Cardinality | HL7 v2 ORU_RO1 Message | HL7 FHIR DiagnosticReport | HL7 FHIR Resource (RESTful) |
|---|---|---|---|---|---|---|
| Order Number | The Unique order number assigned by the Order Placer (order comms or EHR), that requested the report - absent for an unsolicited report, see Order Reference above. | Order Identifier | 0..1 | ORC-2 | DiagnosticReport.basedOn | ServiceRequest |
| Report Number | Identifies the report, assigned by Order Filler (LIMS) | Report Identifier | 1..1 | OBR-3 | DiagnosticReport.identifier[ReportNumber] | |
| (Order) Procedure Code | For Genomics this is Test Directory Code. (For Radiology this is NICIP code) | See below | 1..1 | OBR-4 | DiagnosticReport.code | |
| Account(/Visit) Number | Assigned by the Order Placer where it is known as spell or episode id. It is used by all diagnostics to link tests to a spell/episode | Hospital Provider Spell Identifier | PV1-19 | DiagnosticReport.encounter | ||
| Report date | Date/time the report was issued | 1..1 | OBR-7 | DiagnosticReport.effectiveDateTime | ||
| Report Status | 1..1 | OBR-22 | DiagnosticReport.status | |||
| Conclusion | Conclusion | DiagnosticReport.conclusion | ||||
| Outcome | Conclusion Code | Genomic Test Outcome Codes | 0..1 | OBX LOINC 51968-6 | DiagnosticReport.conclusionCode | |
| Results Interpreter | Who created the report | England Practitioner Identifier | 0..* | OBR-32 and OBR-33 | DiagnosticReport.resultsInterpreter | Practitioner |
| Performer (operator) | England Practitioner Identifier | 1..* | OBR-34 | DiagnosticReport.performer[operator] | Practitioner | |
| Performer (organisation) | The organisation who created the report | Organisation Code | 1..* | DiagnosticReport.performer[organization] | Organizaton | |
| Specimen | The sample(s) that were used for testing | See Genomic Test Order - Specimen | 0..1 | SPM | DiagnosticReport.specimen.identifier | Specimen |
| Results | Detailed (strucutured) results | Domain specific - see below | 0..* | OBX | DiagnosticReport.results | Varies |
| Narrative Report | Results and entire Report in PDF representation | Domain specific - see below | 0..* | OBX (type=ED) | DiagnosticReport.presentedForm |
DiagnosticReport.result (see Detailed Model above) is
where the individual findings of a test live. This is specific to genomics
and focused on the requirements of general clinicians, not genomic
specialists, so this section will tend to be an extract of the wider
Genomics Reporting Implementation
Guide rather
than a complete restatement of it. It divides into two parts:
derivedFrom/extended from Genomic Test
Report the same way Ask At Order
Entry Questionnaires extend Genomic Test
Order.flowchart LR
CORE["Common Core<br/>Genomic Test Report"]
PANEL["+ Report Panel Questionnaire<br/>(varies by result type - e.g. Reportable<br/>Variant, BCR-ABL Monitoring, Chimerism Testing)"]
RESULTS["+ Genomic Results<br/>(e.g. Reportable Variant, Laboratory Analyte<br/>Result, Diagnostic Implication)"]
QNAIRE["Report as recorded in LIMS<br/>(NW Genomics)"]
MSG["HL7 v2 ORU_R01<br/>or FHIR Message R01"]
EPR["EPR<br/>(NHS Trust)"]
CORE --> QNAIRE
PANEL --> QNAIRE
RESULTS --> QNAIRE
QNAIRE -->|"report issued"| MSG
MSG --> EPR
The common core, whichever Report Panel Questionnaire applies, and the actual
Genomic Results it carries together are what a
Questionnaire/QuestionnaireResponse represents - the report as recorded inside
the LIMS. HL7 v2 ORU_R01/FHIR Message R01 is a different thing: the wire
format that same report is sent onward to an EPR in, once it's issued - not the
record the LIMS itself holds. Report Panels and Genomic Results are what vary between
result types; the message shape they end up populating downstream does not - the
mirror image of Genomic Test
Order's Ask At Order
Entry Questions/OML_O21/FHIR Message O21 pattern on the order side.
Genomic Test Report only models the
report-level metadata common to every report (patient, order/report
identifiers, dates, status, conclusion, performers) - its /Results group
deliberately doesn't model individual test findings inline. Instead, each
individual result is carried under DiagnosticReport.result as a separate,
panel-specific Questionnaire, one per kind of test - each documenting the
discrete fields a particular result type needs, in the same
Questionnaire-as-computable-data-model style as Genomic Test
Report and Genomic Test
Order themselves (see How To Engineer
(scale and deliver)
Interoperability).
| Report Panel Questionnaire | Code | Used In | Status |
|---|---|---|---|
| Reportable Variant Result Panel | LOINC 81250-3 "Discrete genetic variant panel" |
OMICS DSS Result Integration | Grounded in real Variant examples |
| BCR-ABL Monitoring Result Panel | LOINC 69380-4 "BCR-ABL1 fusion transcript … [# Ratio] … (International Scale)" |
BCR-ABL Monitoring | Grounded in real Observation examples |
| Chimerism Testing Result Panel | Local code (STR-based chimerism testing) | Histocompatibility and Immunogenetics | Candidate mapping, not yet confirmed against a real example - see the Questionnaire's own description |
New result types should follow this pattern - add a new panel Questionnaire (rather than extending Genomic Test Report itself), and list it in the table above.
classDiagram
class GenomicReport["Genomic Laboratory Report (result)"]
class Variant
class GenomicStudy["Genomic Study"]
class DiagnosticImplication["Diagnostic Implication"]
class TherapeuticImplication["Therapeutic Implication"]
class GenomicStudyAnalysis["Genomic Study Analysis"]
Variant --|> GenomicReport
GenomicStudy --|> GenomicReport
GenomicStudyAnalysis --|> GenomicReport
DiagnosticImplication --|> GenomicReport
TherapeuticImplication ..|> GenomicReport
Variant <|--|> DiagnosticImplication
Variant <|..|> TherapeuticImplication
The underlying HL7 FHIR profiles/resources this IG's genomic results are built from - either directly, or (where noted) via one of the Report Panels above:
| Genomic Result | Code | Used In | Report Panel |
|---|---|---|---|
| Genomic Study (Procedure) - description | - | Examples below (Lynch syndrome, cystic fibrosis carrier) | (none yet) |
| Genomic Study Analysis (extension on Genomic Study) | LOINC 48002-0 "Genomic source class [Type]" |
Not yet confirmed against a real example | (none yet) |
| Laboratory Analyte Result (Observation) | - | BCR-ABL Monitoring | BCR-ABL Monitoring Result Panel |
| Reportable Variant (Observation) | LOINC 48018-6 "Gene studied [ID]" (component) |
OMICS DSS Result Integration | Reportable Variant Result Panel |
| Molecular Consequence (Observation) | Sequence Ontology (functional-effect), e.g. SO_0001786 loss_of_heterozygosity |
OMICS DSS Result Integration - see Outstanding Issues for why Loss of Heterozygosity is modelled this way | Reportable Variant Result Panel |
| Diagnostic Implication (Observation) - description | - | Examples below (Lynch syndrome, cystic fibrosis carrier) | (none yet) |
| Histocompatibility and Immunogenetic Reporting | - | Histocompatibility and Immunogenetics | Chimerism Testing Result Panel (candidate mapping by analogy, not confirmed - see the Questionnaire's own description) |
| Cytogenetic Genomic Report (this IG's own future/proposed model - no balloted HL7 profile exists yet) | LOINC cytogenetics panels, e.g. 62389-2 (master panel), 62356-1 (ISCN), 62367-8 (FISH) |
Haemato-Oncology Diagnostic Pathway - Future genomic data model (proposed) | (none yet - proposed direction only) |
HL7 LRI (Ref A) Example 2 (5.9.1.2) - FOUND DISCRETE – TARGETED MUTATIONS ANALYSIS THAT STUDIES MANY MUTATIONS (106)
HL7 LRI (Ref A) Example 3 (5.9.1.3) - SIMPLE VARIANT – MUTATION ANALYSIS WITH SEQUENCE PLUS DELETION-DUPLICATION STUDY
Profile: Questionnaire
| LinkID | Text | Cardinality | Type | Description & Constraints![]() |
|---|---|---|---|---|
![]() |
The aim of this is to support conversion of Genomic Report (HL7 v2 ORU) for use by several NHS Trusts (as HL7 v2 or FHIR). | Questionnaire | https://fhir.nwgenomics.nhs.uk/Questionnaire/GenomicTestReport#2.2.0 | |
![]() ![]() |
Metadata | 0..1 | group | Value Set: |
![]() ![]() ![]() |
NHS Number | 0..1 | string | Definition: Patient.identifier:nhsNumber Value Set: |
![]() ![]() ![]() |
Hospital Number (Medical Record Number) | 1..1 | string | Definition: Patient.identifier:MedicalRecordNumber Value Set: |
![]() ![]() ![]() |
Account Number (Episode or Stay Number) | 0..1 | string | Definition: DiagnosticReport.encounter.identifier.value Value Set: |
![]() ![]() ![]() ![]() |
PV1-19 (also known as stay number) | 0..1 | display | Value Set: |
![]() ![]() ![]() |
Hospital Service | 0..1 | choice | Definition: Encounter.serviceType Value Set: Service |
![]() ![]() |
Overall study variables type (Test Details) | 0..1 | group | Value Set: |
![]() ![]() ![]() |
Test request ID/Order ID/Order Placer Number | 0..1 | string | Definition: ServiceRequest.identifier:OrderIdentifier Value Set: |
![]() ![]() ![]() |
Order Filler Number | 0..1 | string | Definition: ServiceRequest.identifier:OrderFillerNumber Value Set: |
![]() ![]() ![]() |
Report Number | 1..1 | string | Definition: DiagnosticReport.identifier:ReportNumber Value Set: |
![]() ![]() ![]() |
Referring Organisation ODS Code / Ordering Facility | 0..1 | string | Definition: PractitionerRole.organization.identifier.value Value Set: |
![]() ![]() ![]() |
Report Date | 1..1 | dateTime | Definition: DiagnosticReport.effectiveDateTime Value Set: |
![]() ![]() ![]() |
Report Status | 1..1 | choice | Definition: DiagnosticReport.status Value Set: DiagnosticReportStatus |
![]() ![]() ![]() |
Results Interpreter | 0..1 | string | Definition: DiagnosticReport.resultsInterpreter Value Set: |
![]() ![]() ![]() ![]() |
OBR-32 (Principal) and OBR-33 (Assistant) - see Practitioner Identifier. | 0..1 | display | Value Set: |
![]() ![]() ![]() |
Performer (Operator/Technician) | 0..1 | string | Definition: DiagnosticReport.performer:operator Value Set: |
![]() ![]() ![]() |
Performer (Organisation) | 0..1 | string | Definition: DiagnosticReport.performer:organization Value Set: |
![]() ![]() ![]() ![]() |
The organisation that produced the report - see Organisation Code. No dedicated HL7 v2 field identified for this element. | 0..1 | display | Value Set: |
![]() ![]() ![]() |
Specimen/Biopsy | 0..1 | group | Definition: Specimen Value Set: |
![]() ![]() ![]() ![]() |
Specimen ID Number | 0..1 | string | Definition: Specimen.identifier Value Set: |
![]() ![]() ![]() ![]() |
Lab DNA Number (If Known) | 0..1 | string | Definition: Specimen.accessionIdentifier Value Set: |
![]() ![]() ![]() |
Gene dis assessed | 0..1 | choice | Definition: Observation.valueCodeableConcept Value Set: Genomic Clinical Indication Codes |
![]() ![]() ![]() |
Test Code | 0..1 | choice | Definition: DiagnosticReport.code Value Set: |
![]() ![]() ![]() ![]() |
OBR-4, carried on the report. The same code is carried on the order as ServiceRequest.code - see Genomic Test Order. | 0..1 | display | Value Set: |
![]() ![]() |
Results | 0..1 | group | Definition: DiagnosticReport.result Value Set: |
![]() ![]() ![]() |
Gene analysis narr rpt Doc | 0..1 | string | Definition: DiagnosticReport.presentedForm Value Set: |
![]() ![]() ![]() |
Conclusion | 0..1 | string | Definition: DiagnosticReport.conclusion Value Set: |
![]() ![]() ![]() ![]() |
Free-text interpretive summary. No dedicated LOINC/OBX code identified for this element - see the Outcome item below for the coded equivalent. | 0..1 | display | Value Set: |
![]() ![]() ![]() |
Outcome (NHS England Genomics Test Outcome) | 0..1 | choice | Definition: DiagnosticReport.conclusionCode.coding:GenomicTestOutcomeCode Value Set: Genomic Test Outcome Codes |
![]() ![]() ![]() |
Individual test results are carried as separate, panel-specific Questionnaires nested under DiagnosticReport.result - see Report Panels below for the full list (e.g. Reportable Variant Result Panel, BCR-ABL Monitoring Result Panel, Chimerism Testing Result Panel). | 0..1 | display | Value Set: |
Documentation for this format | ||||
Profile: Questionnaire
Metadata
NHS Number
Hospital Number (Medical Record Number)*
Account Number (Episode or Stay Number)
PV1-19 (also known as stay number)
Hospital Service
Overall study variables type (Test Details)
Test request ID/Order ID/Order Placer Number
Order Filler Number
Report Number*
Referring Organisation ODS Code / Ordering Facility
Report Date*
Report Status*
Results Interpreter
OBR-32 (Principal) and OBR-33 (Assistant) - see Practitioner Identifier.
Performer (Operator/Technician)
Performer (Organisation)
The organisation that produced the report - see Organisation Code. No dedicated HL7 v2 field identified for this element.
Specimen/Biopsy
Specimen ID Number
Lab DNA Number (If Known)
Gene dis assessed
Test Code
OBR-4, carried on the report. The same code is carried on the order as ServiceRequest.code - see Genomic Test Order.
Results
Gene analysis narr rpt Doc
Conclusion
Free-text interpretive summary. No dedicated LOINC/OBX code identified for this element - see the Outcome item below for the coded equivalent.
Outcome (NHS England Genomics Test Outcome)
Individual test results are carried as separate, panel-specific Questionnaires nested under DiagnosticReport.result - see Report Panels below for the full list (e.g. Reportable Variant Result Panel, BCR-ABL Monitoring Result Panel, Chimerism Testing Result Panel).
Profile: Questionnaire
| LinkID | Description & Constraints![]() |
|---|---|
![]() |
Value Set: |
![]() ![]() |
Definition: Patient.identifier:nhsNumber Value Set: |
![]() ![]() |
Definition: Patient.identifier:MedicalRecordNumber Value Set: |
![]() ![]() |
Definition: DiagnosticReport.encounter.identifier.value Value Set: |
![]() ![]() ![]() |
Value Set: |
![]() ![]() |
Definition: Encounter.serviceType Value Set: Service |
![]() |
Value Set: |
![]() ![]() |
Definition: ServiceRequest.identifier:OrderIdentifier Value Set: |
![]() ![]() |
Definition: ServiceRequest.identifier:OrderFillerNumber Value Set: |
![]() ![]() |
Definition: DiagnosticReport.identifier:ReportNumber Value Set: |
![]() ![]() |
Definition: PractitionerRole.organization.identifier.value Value Set: |
![]() ![]() |
Definition: DiagnosticReport.effectiveDateTime Value Set: |
![]() ![]() |
Definition: DiagnosticReport.status Value Set: DiagnosticReportStatus |
![]() ![]() |
Definition: DiagnosticReport.resultsInterpreter Value Set: |
![]() ![]() ![]() |
Value Set: |
![]() ![]() |
Definition: DiagnosticReport.performer:operator Value Set: |
![]() ![]() |
Definition: DiagnosticReport.performer:organization Value Set: |
![]() ![]() ![]() |
Value Set: |
![]() ![]() |
Definition: Specimen Value Set: |
![]() ![]() ![]() |
Definition: Specimen.identifier Value Set: |
![]() ![]() ![]() |
Definition: Specimen.accessionIdentifier Value Set: |
![]() ![]() |
Definition: Observation.valueCodeableConcept Value Set: Genomic Clinical Indication Codes |
![]() ![]() |
Definition: DiagnosticReport.code Value Set: |
![]() ![]() ![]() |
Value Set: |
![]() |
Definition: DiagnosticReport.result Value Set: |
![]() ![]() |
Definition: DiagnosticReport.presentedForm Value Set: |
![]() ![]() |
Definition: DiagnosticReport.conclusion Value Set: |
![]() ![]() ![]() |
Value Set: |
![]() ![]() |
Definition: DiagnosticReport.conclusionCode.coding:GenomicTestOutcomeCode Value Set: Genomic Test Outcome Codes |
![]() ![]() |
Value Set: |
Documentation for this format | |
Try this questionnaire out:
There are currently no QuestionnaireResponse instances for this Questionnaire defined in this IG.