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
DSS and iGene Integration Overview.
iGene Custom Fields Master Dataset - Updated 13-Aug-26.xlsx, "Variant Level Data" sheet (internal iGene specification document, not publicly linked) - the original iGene field spec and LOINC crosswalk the Result Panel below is otherwise built fromThis use case isn't a specific clinical test in its own right - it's the pipeline that turns a genomic laboratory's raw molecular testing output (from a satellite LIMS, "DLIMS") into the structured, reportable genomic variants used in a patient's genomic report. Any DLIMS-processed molecular/NGS test - for example a cancer or rare disease gene panel - uses this same pattern.
flowchart LR
A[Work order created<br/>in iGene] --> B[Test performed<br/>by DLIMS]
B --> C[Bioinformatics<br/>processing - Omics DSS]
C --> D[Reportable variants<br/>compiled into report]
D --> E[Clinical scientist<br/>reviews and finalises]
Observation pattern - not a single free-text result - see Variant (Reportable Variant).| IHE Actor | Role |
|---|---|
| Order Filler | iGene - master LIMS, creates the work order, ultimate destination for processed results |
| Automation Manager | DLIMS - satellite LIMS, performs the test against the work order |
| Automation Manager | Omics DSS - processes DLIMS test results, linked to work order metadata |
| Resource Access Provider | FHIR Repository - stores the work order and the resulting FHIR Genomics Report |
| Intermediary | Regional Integration Engine (RIE) - transforms the FHIR Genomics Report into iGene's CSV format |
| Transaction | Description | Direction |
|---|---|---|
LAB-4 |
Work order created for DLIMS | iGene → DLIMS |
LAB-5 (current, being replaced) |
DLIMS test results sent for processing, then processed output sent directly to iGene | DLIMS → Omics DSS → iGene |
| FHIR RESTful create (proposed) | Work Order metadata export, mirrors the StarLIMS export pattern | iGene → FHIR Repository |
| FHIR RESTful read (proposed) | Work Order metadata read, so results can be linked back to the originating work order | Omics DSS → FHIR Repository |
LAB-5 / FHIR RESTful create (proposed) |
Processed output converted to a FHIR Genomics Report and linked to the Work Order | Omics DSS → FHIR Repository |
| CSV transform (proposed) | Results + linked Work Order metadata transformed for iGene | FHIR Repository → RIE → iGene |
The current process works as follows:
flowchart TD
OP["Order Placer<br/>Test Ordering Entity"]
OF["Order Filler<br/>iGene"]
SC["Sub Contractor<br/>DLIMS"]
ANP["Automation Manager<br/>Analyser and<br/>Analytics Processor"]
OP -- "LAB-1<br/>laboratory order" --> OF
OF -- "LAB-3<br/>laboratory report" --> OP
OF -- "LAB-4<br/>Work Order" --> SC
SC -- "Result Metadata" --> ANP
ANP -- "LAB-5<br/>Test Result and Reportable Variant" --> OF
The diagram above shows the entire background process end-to-end - Order
Placer through to Automation Manager - for context only. The interaction
this page actually elaborates is LAB-5 (the test result/reportable
variant leg); everything else, including LAB-4 (the Work Order sent to
DLIMS), is background. LAB-4 is drawn here as a simple arrow, but today
it isn't actually delivered to Omics DSS at all - that gap is exactly what
Future Process below, and Outstanding Issues
item 3 in particular, are looking at methods of solving, rather than
something already resolved by this Current Process diagram.
Rather than sending processed output directly to iGene, it will instead be converted to a FHIR Genomics Report and stored in the FHIR Repository, following the HL7 Genomic Reporting standard. The Regional Integration Engine will then transform this data into a format suitable for iGene (likely a CSV file).
For this to work, the DLIMS work order will be exported to the FHIR Repository — mirroring the process already used for StarLIMS — so a copy of the work order is held there. Omics DSS will then access the work order metadata via the FHIR Repository, so results can be correctly linked back to the originating work order.
flowchart TD
A[iGene: Work Order Created] -->|for DLIMS| B[DLIMS: Test Performed]
A -.->|<b>Proposed process</b><br/>DLIMS Work Order metadata export<br/>same process as StarLIMS| F
B -->|Test Data| C[Omics DSS]
B -->|<b>Proposed solution to #3</b><br/>Laboratory Results ORU_R01 or equivalent| F
C -->|Processes Results,<br/>linked to Work Order metadata| D[Processed Output]
F -.->|<b>Proposed process</b><br/>Omics DSS reads<br/>Work Order metadata| C
D -.->|Current process<br/>direct send - being replaced| G[iGene]
D -->|<b>Proposed process</b><br/>Convert to FHIR Genomics Report and link to the Work Order| F[(FHIR Repository<br/>HL7 Genomic Reporting standard)]
F -->|Results + linked Work Order metadata| E[Regional Integration Engine]
E -->|Transforms to CSV| G
style F fill:#e8f4fd,stroke:#1c7ed6,stroke-width:2px
style E fill:#fff3bf,stroke:#f08c00,stroke-width:2px
style D fill:#f8f9fa,stroke:#868e96
sequenceDiagram
participant iGene as iGene<br/>Order Filler
participant RIE as Regional Integration Engine (RIE)<br/>Intermediary
participant FHIRRepo as FHIR Repository<br/>Resource Access Provider
participant DLIMS as DLIMS<br/>Automation Manager
participant DSS as Omics DSS<br/>Automation Manager
note over iGene, FHIRRepo: Work Order
iGene ->> RIE: 1. Export Work Order for DLIMS<br/>(does not go to DLIMS directly)
RIE ->> FHIRRepo: 2. Import and store Work Order
Note over DLIMS: Test performed
DLIMS ->> DSS: 3. Test output
DSS ->> DSS: 3a. Process test output
Note over iGene,DSS: Test Result
DSS ->> DSS: 4. Convert to FHIR Genomic Report
DSS ->> FHIRRepo: Retrieve linked DLIMS Work Order
FHIRRepo -->> DSS: DLIMS Work Order
DSS ->> DSS: 5. Match to Work Order,<br/>produce FHIR Message R01 (Test Result)
alt Stored directly
DSS ->> FHIRRepo: 6. Store FHIR Resources
RIE ->> FHIRRepo: 6a. Poll for Test Result
else Sent to RIE
DSS ->> RIE: 6. FHIR Message R01
end
RIE ->> RIE: 7. Convert to CSV
RIE ->> iGene: Import CSV
derivedFrom Observation for a variant's downstream effect, including Loss of Heterozygosity - see Outstanding Issues belowIn everyday terms: the work order above leads to a specimen and a report, and the report is
the hub everything else hangs off - it's the one resource that both the work order/specimen
side and the variant results side both relate back to. The patient sits behind all five
resources as their common subject, rather than only being reachable via the work order.
Each entity below is also tagged with which of the two feeds actually populates it - see
Current Process and Future Process above for the
two-stage flow this reflects: Patient/ServiceRequest/Specimen arrive first, in the
Work Order CSV export from iGene; DiagnosticReport/Variant/Molecular Consequence
are added later, once DLIMS testing is complete and Omics DSS converts its output into the
Test Result (a FHIR Genomic Report matched back to that same work order).
erDiagram
PATIENT ||--o{ SERVICE_REQUEST : "subject"
PATIENT ||--o{ SPECIMEN : "subject"
PATIENT ||--o{ DIAGNOSTIC_REPORT : "subject"
PATIENT ||--o{ VARIANT : "subject"
PATIENT ||--o{ MOLECULAR_CONSEQUENCE : "subject"
SERVICE_REQUEST ||--o{ SPECIMEN : "requests collection of"
SERVICE_REQUEST ||--o{ DIAGNOSTIC_REPORT : "is basis for"
SPECIMEN ||--o{ DIAGNOSTIC_REPORT : "is basis for"
DIAGNOSTIC_REPORT ||--o{ VARIANT : "result - SEQV/ICNV/MCNV/SV"
DIAGNOSTIC_REPORT ||--o{ MOLECULAR_CONSEQUENCE : "result - LOH"
VARIANT ||--o| MOLECULAR_CONSEQUENCE : "derivedFrom - accompanying LOH finding"
PATIENT {
string Source "Work Order - iGene CSV export"
string NHS_Number
string Medical_Record_Number
}
SERVICE_REQUEST {
string Source "Work Order - iGene CSV export"
string Placer_Order_Number
string Filler_Order_Number
string Requested_Procedure_Code "NGTD Test Code"
}
SPECIMEN {
string Source "Work Order - iGene CSV export"
string Specimen_Accession_Identifier
string Specimen_Type
string Specimen_Taken_DateTime
}
DIAGNOSTIC_REPORT {
string Source "Test Result - Omics DSS FHIR Genomic Report"
string Report_Identifier
string Status
string Conclusion
}
VARIANT {
string Source "Test Result - Omics DSS FHIR Genomic Report"
string Variant_Category "iGene type - SEQV/ICNV/MCNV/SV, LRI B.1"
string Gene_Studied
string DNA_Change_cHGVS
string Classification
}
MOLECULAR_CONSEQUENCE {
string Source "Test Result - Omics DSS FHIR Genomic Report"
string Gene "iGene type - LOH"
string LOH_State
}
DiagnosticReport.result is annotated above with the specific iGene variant
type(s) each relationship carries, since that's what ultimately decides which
of the five iGene variant types a result becomes when
converted to the flat CSV shape in Mapping to the iGene
CSV below:
Variant
Observations referenced directly from DiagnosticReport.result, distinguished
from one another by the coded Variant Category component (LRI row B.1).Molecular Consequence
Observation rather than a Variant - also referenced from
DiagnosticReport.result in its own right, and derivedFrom the Variant it
accompanies (see iGene Variant Types above for why LOH
doesn't fit the Variant shape the other four share).The proposed DLIMS work order metadata export (see Future Process above, "mirroring the process already used for StarLIMS") is expected to reuse the same CSV shape as iGene's existing StarLIMS work order export - see StarLIMS / iGene Integration - Work Order CSV Export from iGene for the canonical version of this table (kept there to avoid the two drifting apart) and StarLIMSSampleData.csv for an example file. DLIMS/Omics DSS work orders carry the same underlying order/patient/specimen data as a StarLIMS work order, just a different downstream processor:
| CSV Column | Description | Type | FHIR Mapping |
|---|---|---|---|
PatientAccessionIdentifier |
iGene's internal patient accession number - see Patient Identifier | string | Patient.identifier (PatientIdentifier) |
NHSNumber |
Patient's NHS Number - see NHS Identifier | string | Patient.identifier (NHS Number) |
PatientGivenName |
Patient's first name | string | Patient.name.given |
PatientFamilyName |
Patient's surname | string | Patient.name.family |
DateOfBirth |
Patient's date of birth | date | Patient.birthDate |
AdministrativeSex |
Sex registered at birth | string | Patient.gender |
PostCode |
Patient's postcode | string | Patient.address.postalCode |
HospitalSpellIdentifier |
Identifier for the hospital spell/episode the order was placed under - see Hospital Provider Spell Identifier | string | ServiceRequest.encounter.identifier (HospitalProviderSpellIdentifier) |
PlacerOrderNumber |
Order identifier assigned by the ordering Trust - see Order Identifier | string | ServiceRequest.identifier (OrderIdentifier, type=PLAC) |
HospitalNumber |
Patient's hospital/medical record number - see Medical Record Number | string | Patient.identifier (MedicalRecordNumber) |
FillerOrderNumber |
Order identifier assigned by iGene (the lab) - see Order Identifier | string | ServiceRequest.identifier (OrderIdentifier, type=FILL) |
TestAccessionIdentifier |
iGene's test-level accession number | string | ServiceRequest.identifier (system TBD) |
TestOrderDate |
Date/time the test was ordered | dateTime | ServiceRequest.authoredOn |
NGTDTestCode |
NHS England Genomic Test Directory test code | string | ServiceRequest.code |
NGTDTestName |
NHS England Genomic Test Directory test/package name | string | ServiceRequest.code.coding.display |
OrderStatus |
Order's current status in iGene (e.g. Dispatched) | string | ServiceRequest.status |
SpecimenDispatchDate |
Date/time the specimen was dispatched to StarLIMS | dateTime | Observation.valueDateTime (via ServiceRequest.supportingInfo) |
ShipmentTrackingNumber |
Courier tracking number for the dispatched specimen - see Shipment Tracking Number | string | Specimen.identifier (ShipmentTrackingNumber) |
DatasetTargetOrganisation |
Destination the dataset/specimen was sent to | string | Observation.valueString (via ServiceRequest.supportingInfo) |
SpecimenAccessionIdentifier |
Specimen's lab accession/DNA number - see Specimen Accession Number | string | Specimen.accessionIdentifier |
SpecimenTypeDescription |
Specimen type, free text (e.g. Blood, Tissue) | string | Specimen.type.coding.display |
SpecimenTakenDateTime |
Date/time the specimen was taken from the patient | dateTime | Specimen.collection.collectedDateTime |
ClinicalDetails |
Free-text clinical details/history (redacted in example data) | string | ServiceRequest.note |
OrderingProviderIdentifier |
Ordering clinician's professional identifier - see Practitioner Identifier | string | PractitionerRole.practitioner.identifier.value |
OrderingProviderName |
Ordering clinician's name | string | PractitionerRole.practitioner.display |
RequestingOrganisationCode |
Requesting Trust's ODS code - see Organisation Code | string | PractitionerRole.organization.identifier.value |
RequestingOrganisationName |
Requesting Trust's name | string | PractitionerRole.organization.display |
TestAccessionIdentifier, and the PLAC/FILL split on PlacerOrderNumber/
FillerOrderNumber, are not yet confirmed against a published identifier system - see
the Questionnaire's own item design notes for detail.
iGene's own custom field spec (see References) splits reportable
variants into five types, each with its own repeating set of custom fields -
SEQV1-SEQV10 (Sequence Variant), ICNV1-ICNV3 (Intragenic Copy Number
Variant), MCNV1-MCNV3 (Multigenic Copy Number Variant), SV1-SV3 (Structural
Variant) and LOH1-LOH2 (Loss of Heterozygosity). These are different kinds of
genomic change that can all appear on the same report - not different tests - which
is why iGene buckets them into separate repeating slots rather than one flat list.
BRCA1
c.68_69del - the "classic point mutation."FBN1. Still gene/transcript-
anchored (its Description field combines transcript+gene+HGVS, the same shape as
SEQV), but describes exon-level gain/loss rather than a single base change.Xq22.1-q28. No longer anchored
to one gene, so its Description field is just the cytogenetic location, not a
transcript+HGVS string.derivedFrom the variant it accompanies, rather than folding it into Variant
itself - see Outstanding Issues below.How they interrelate:
The HL7 LRI already defines a single Discrete Variant Panel
(LOINC 81250-3, LRI Chapter 5 Table 5-2, plus the Structural Variant Addenda in
Table 5-3) covering both simple and structural variants - the same panel the NTHL1
and CFTR examples are based on. Rather than iGene's separate per-variant-type field
sets, the Result Panel Questionnaire is structured around this one LRI panel, with
each item mapped to its LRI OBX row, its component in the HL7 Genomics Reporting
IG's Variant
profile, and the iGene field it rolls up into. Only elements genuinely populated by
at least one current example are modelled - see Result Panel: Elements Not
Included below for the rest.
All example values below are taken from a single variant - the small-variant
Observation (ctdna9737383222-seqv1, a BRCA1 deletion) in
Bundle-ctdna9737383222-testresults - so
they show one coherent, real result rather than a patchwork from different examples.
Rows marked N/A are structural/CNV-specific and don't apply to this simple variant;
see the mapping table's own examples for
the intragenic-CNV, multi-gene-CNV and structural-variant Observations in the same
Bundle if a worked CNV/SV example is needed.
| LRI Row | LOINC | HL7 v2 OBX (Type, R/O/C, Card.) | FHIR Variant Component | iGene Field | Example |
|---|---|---|---|---|---|
| B.1 | 83005-9 Variant category | CWE, O, [0..1] | (open-slice - LRI's own answer list only distinguishes Simple/Structural; this IG binds it to IGeneVariantCategory instead) | (is) the iGene slot type | SEQV |
| B.3 | 48018-6 Gene studied [ID] | CWE, C, [0..1] | gene-studied (this IG's own addition) |
Description (SEQV/ICNV), Gene(s) (LOH) | BRCA1 |
| B.4 | 51958-7 Transcript reference sequence [ID] | CWE, C, [0..1] | representative-transcript-ref-seq |
Description (SEQV/ICNV) | NM_007294.3 |
| B.5 | 48004-6 DNA change (c.HGVS) | CWE, C, [0..1] | representative-coding-hgvs |
Description (SEQV/ICNV) | c.68_69del |
| B.6 | 48005-3 Amino acid change (pHGVS) | CWE, C, [0..1] | representative-protein-hgvs |
Description (SEQV only) | p.(Glu23ValfsTer17) |
| B.7 | 48019-4 DNA change [Type] | CWE, O, [0..1] | coding-change-type |
(not discrete - within Description/Genomic_coordinates) | deletion |
| B.9 | 48013-7 Genomic reference sequence [ID] | CWE, C, [0..1] | genomic-ref-seq |
Genomic_coordinates (all) | NC_000017.10 |
| B.10 | 81290-9 Genomic DNA change (gHGVS) | CWE, C, [0..1] | genomic-hgvs |
Genomic_coordinates (all) | g.41276047_41276048del |
| B.11 | 69547-8 Genomic ref allele [ID] | ST, C, [0..1] | ref-allele |
(not discrete) | TCT |
| B.12 | 81254-5 Genomic allele start-end | NR, C, [0..1] | exact-start-end |
(not discrete) | 41276046 (low bound only) |
| B.13 | 69551-0 Genomic alt allele [ID] | ST, C, [0..1] | alt-allele |
(not discrete) | T |
| B.17 | 48001-2 Cytogenetic (chromosome) location | CWE, O, [0..1] | (open-slice - see note below; not the profile's Cytogenomic Nomenclature slice) | Description (MCNV), Genomic_coordinates (others) | N/A - CNV-specific |
| B.18 | 48002-0 Genomic source class [Type] | CNE, R, [0..*] | genomic-source-class |
(not discrete) | Germline |
| B.20 | 53037-8 Genetic variation clinical significance [Imp] | CNE, O, [0..1] | (not a named slice - open-slice, matches every example) | Classification (all) | Pathogenic |
| B.23 | 53034-5 Allelic state | CNE, C, [0..1] | allelic-state |
State/Zygosity/Copy-number state (all except LOH) | Heterozygous |
| B.24 | 81258-6 Allelic Frequency [NFr] | NM, C, [0..1] | sample-allelic-frequency |
Level/VAF % (all except LOH) | 0.33 |
| B.28 (Table 5-3) | 82155-3 Genomic structural variant copy number | NM, O, [0..1], sub-ID 2a.1 | copy-number |
(not discrete) | N/A - CNV-specific |
| B.32 (Table 5-3) | 81302-2 Structural variant inner start and end | NR, O, [0..1], sub-ID 2a.1 | inner-start-end |
(not discrete) | N/A - CNV/SV-specific |
Three gaps are not yet resolved:
92822-6) and Origin of Germline Genetic Variant
[Type] (94186-4), both used by the ctDNA Bundle examples (and mapped to the
FHIR profile's coordinate-system and variant-inheritance slices respectively),
have no row in LRI's Discrete Variant Panel. LRI's closest concept to the
latter is Allelic Phase (82120-7, row B.26) - a different LOINC code whose answer
list happens to include Maternal/Paternal among several "set of variants in cis"
options, not a dedicated parent-of-origin field.81262-8 "Complex variant HGVS
name" field (itself an LRI Complex Variant Panel code, row C.2 - not part of the
Discrete Variant Panel at all), but the ctDNA Bundle's structural-variant
Observation instead uses several Discrete Variant Panel components (B.9, B.11,
B.13, B.7, B.10) - no example yet confirms how these decompose into, or recombine
into, 81262-8.LRI's Discrete Variant Panel (Table 5-2/5-3) defines further rows, and the HL7 Genomics Reporting Variant profile defines further component slices, that neither iGene's own field spec nor any current example populates - these are deliberately left out of the Result Panel above, since they aren't needed for the iGene feed today:
| Data Element | LRI Row | LOINC / Code |
|---|---|---|
| Discrete genetic variant [ID] - LRI's own preferred single-field alternative to the fully-decomposed rows above | B.2 | 81252-9 |
| Amino acid change [Type] | B.8 | 48006-1 |
| Haplotype name | B.14 | 84414-2 |
| dbSNP [ID] | B.15 | 81255-2 |
| CIGAR [ID] | B.16 | 81257-8 |
| Variant analysis method [Type] | B.19 | 81304-8 |
| Genetic variant Assessment | B.21 | 69548-6 |
| Probable Associated Phenotype | B.22 | 81259-4 |
| Allelic read depth | B.25 | 82121-5 |
| Allelic phase | B.26 | 82120-7 |
| Basis for allelic phase [Type] | B.27 | 82309-6 |
| Genomic structural variant reported arrCGH [Ratio] | B.29 (Table 5-3) | 81299-0 |
| Structural variant [Length] | B.30 (Table 5-3) | 81300-6 |
| Structural variant outer start and end | B.31 (Table 5-3) | 81301-4 |
| Cytogenomic Nomenclature (ISCN) - LRI Table 5-1 row A.11 (report-level Master Panel, not the Discrete Variant Panel) | - | 81291-7 |
| Protein Reference Sequence (FHIR profile only, no LRI row) | - | protein-ref-seq (local TBD codesystem) |
| Variation Code (FHIR profile only, no LRI row) | - | 81252-9 (same code as B.2, different FHIR slice name) |
| Evidential Basis for Variant Inheritance (FHIR profile only, no LRI row) | - | 82309-6 (same code as B.27) |
| Variant Confidence Status (FHIR profile only, no LRI row) | - | variant-confidence-status (local TBD codesystem) |
| Repeat Motif (FHIR profile only, no LRI row) | - | repeat-motif (local TBD codesystem) |
| Repeat Number (FHIR profile only, no LRI row) | - | repeat-number (local TBD codesystem) |
Clinical Conclusion (conclusion-string, inherited from Genomic Observation) |
- | conclusion-string (local TBD codesystem) |
If a future DLIMS/Omics DSS feed starts populating any of these (for example, read depth or a repeat-expansion result), or iGene's own spec adds a discrete field for one, the corresponding item should move up into the Result Panel above, following the same "only what is currently used" rule.
The Result Panel above describes the discrete variant shape on the FHIR side - one
Observation per variant, repeated as many times as needed. iGene's own import is
expected to be a flat CSV file, not a repeating FHIR-style structure: iGene's
"Variant Level Data" spec names each field with a fixed slot prefix (SEQV1_…
SEQV10_, ICNV1_…ICNV3_, MCNV1_…MCNV3_, SV1_…SV3_, LOH1_,
LOH2_), which reads as one row per report/order with up to 21 variants' worth of
columns (10 + 3 + 3 + 3 + 2), rather than one row per variant.
Converting the Result Panel's repeating Discrete Variant Panel Observations into that
flat shape means the RIE (or whatever produces the CSV) must, for each DiagnosticReport:
Variant Category
component (LRI row B.1, 83005-9, bound to
IGeneVariantCategory - see Outstanding
Issues above) directly into iGene's Sequence Variant /
Intragenic CNV / Multigenic CNV / Structural Variant bucket. Every current
Variant example now populates this, so classification is an explicit, coded
value rather than an inference from which other components happen to be
populated.SEQV1, second becomes SEQV2, and so on).Description, State, Inheritance,
Level, Genomic_coordinates, Classification, Evidence - or just Description/
State for LOH) from the Result Panel items, per the mapping table
above - for example, SEQV1_Description is the concatenation of that variant's
Transcript Reference Sequence (B.4), Gene Studied (B.3), DNA Change c.HGVS (B.5)
and Amino Acid Change p.HGVS (B.6).This raises two open questions, neither resolved by any current example:
SEQV1 vs SEQV2) when a report has more than one variant of the same type -
candidates include order of detection, clinical significance, or allelic frequency,
but none is confirmed.Should the Variant profile and Result Panel be restructured around iGene's
own five variant-type categories (Sequence Variant / Intragenic CNV / Multigenic
CNV / Structural Variant / Loss of Heterozygosity), rather than the current single
generic Discrete Variant Panel that mirrors LRI? Partially decided: rather than
a full restructure into five separate profiles/panels (which would diverge from
both LRI's Discrete Variant Panel and the international HL7 Genomics Reporting
Variant profile, both of which treat simple and structural variants, and implicitly
CNVs, as one panel distinguished by which components are populated), this IG adds a
coded Variant Category component (LRI row B.1, LOINC 83005-9) to Variant,
bound to a new IGeneVariantCategory
CodeSystem/value set (SEQV/ICNV/MCNV/SV/LOH) - an IG-specific extension of
LRI's own answer list for that row, which only distinguishes Simple Variant vs
Structural Variant. This makes "which iGene slot type is this" an explicit, coded
value on the single panel, addressing the CSV mapping
ambiguity above without a structural profile split - see every current Variant
example, which now populates it. See item 2 below for the separate Loss of
Heterozygosity decision.
Decided: Loss of Heterozygosity is modelled as a separate Molecular
Consequence Observation, not as a
component (or extension) on Variant itself. This follows the HL7 Genomics
Reporting IG's own
Molecular Consequence
profile: a derivedFrom reference back to the Variant it is the consequence of,
with a functional-effect component coded from Sequence Ontology (SO_0001786
loss_of_heterozygosity, among other possible values such as loss/gain of
function) - see Molecular Consequence - Loss of Heterozygosity
(BRCA1) for a worked example,
representing the classic germline-mutation-plus-somatic-LOH "two-hit" finding at
the same locus as Variant - ctDNA Small Variant
(BRCA1). This fits the case where LOH is
the consequence of an already-reported variant cleanly, but doesn't fit iGene's
broader usage, which allows LOH to be reported standalone for a gene/region with no
companion variant required - that gap remains open.
The Data Model doesn't yet capture how a DSS result gets matched back to the correct iGene Test ID - needed to look up (and populate) iGene's own test-level custom fields (see iGene Variant Types above) from a DSS-produced result. Omics DSS itself only holds the DLIMS Lab Number, patient name and worksheet - it doesn't currently hold enough patient-identifiable information to look the patient up in iGene directly (there's no NHS Number held in DSS). The workaround in use today is a multi-step manual/semi-manual lookup:
Patient/PatientDetails tables.Proposed direction (not yet decided or reflected in the Data
Models erDiagram above): carry the DLIMS Lab Number itself into
the Data Model, most naturally as an identifier on Specimen rather than Patient
or ServiceRequest - since a single patient can have multiple specimens/samples,
Specimen is the level a lab-assigned sample number actually belongs at. That would
let a DSS result be linked back to the correct specimen (and from there, order and
report) directly from data already available to DSS, rather than through the
referral-number/patient-lookup chain above.
As a potential second, complementary solution: have DLIMS send its lab
report through the Regional Integration Engine (RIE), the same route the Work
Order already travels (see Future Process above), rather than
relying on the lookup chain above at all. The RIE already holds a copy of the Work
Order once iGene exports it, keyed by identifiers iGene itself assigned; if that
Work Order also carries the DLIMS Lab Number (per the first proposed direction
above), the RIE could match a DLIMS-originated report straight back to the correct
Work Order/Test ID itself - without Omics DSS needing to hold, or reconstruct via
iGene's Patient/PatientDetails tables, any patient-identifiable information at
all. This would need to sit alongside, not replace, the Omics DSS-produced FHIR
Genomic Report already described in Future Process - DLIMS's own
report would need to be reconciled with (or feed into) that same report, not run as
a second, independent path to iGene. This is one option, not a decided design -
the options for resolving this linkage still need to be identified and compared
before one is chosen.
A third, longer-term possibility: Clarity LIMS, proposed to
eventually replace both DLIMS and Omics DSS, may resolve this linkage problem
differently again - as a full LIMS rather than a downstream processing layer, it
would be expected to hold proper sample/patient tracking natively, potentially
removing the need for the referral-number/patient-lookup chain (or a DLIMS
Lab Number-on-Specimen workaround) altogether. Not yet confirmed - see Clarity
LIMS - Outstanding Issues.
| Source | Example |
|---|---|
| GA4GH VCF (input) - see the VCF v4.3 specification | igene_example_data.vcf |
| GA4GH Phenopacket (input) - see the Phenopacket schema documentation | igene_example_data.phenopacket.json |
FHIR Bundle (NW-GMSA R01 Test Results message) - produced from the VCF/Phenopacket above by notebook 05 - Test Results: GA4GH VCF to FHIR Genomics Reporting |
Bundle-ctdna9737383222-testresults |
The four Variant Observations inside that Bundle are also extracted as standalone
Variant examples, for individual reference:
| Variant Type | Example |
|---|---|
| Sequence (small) variant | Observation-ctdna9737383222-seqv1 (BRCA1 deletion) |
| Intragenic copy number variant | Observation-ctdna9737383222-icnv1 (FBN1 exon deletion) |
| Multigenic copy number variant | Observation-ctdna9737383222-mcnv1 (Xq22.1-q28 deletion) |
| Structural variant | Observation-ctdna9737383222-sv1 |
| Molecular Consequence - Loss of Heterozygosity | Observation-ctdna9737383222-seqv1-loh (derivedFrom the sequence variant above) |
Includes:
variant Observations conforming to the HL7 Genomics Reporting IG, plus an NW-GMSA R01 Test Results messageSee Developer Guides for the full notebook series.