Genomics Reporting Implementation Guide
3.0.1-SNAPSHOT - Ballot International flag

Genomics Reporting Implementation Guide, published by HL7 International / Clinical Genomics. This guide is not an authorized publication; it is the continuous build for version 3.0.1-SNAPSHOT built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/genomics-reporting/ and changes regularly. See the Directory of published versions

Resource Profile: Genomic Study

Official URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study Version: 3.0.1-SNAPSHOT
Active as of 2024-04-09 Computable Name: GenomicStudy

A genomic study is a set of analyses performed to analyze and generate genomic data.

The details of a performed genomic study are captured as genomic study analysis instances, referenced via the genomic study's genomic-study-analysis-ext extension.

Genomic Study and Genomic Study Analysis profiles are backported from the FHIR R5 GenomicStudy resource.

Scope and Usage

A genomic study instance aims at delineating relevant information of a performed genomic study. A genomic study might comprise one or more analyses, each serving a specific purpose. These analyses may vary in method (e.g., karyotyping, CNV, or SNV detection), performer, software, devices used, or regions studied.

A genomic study instance describes relevant information including the reasons, purpose, and performers of the study. It also provides technical endpoints to access these data. It serves as a logical aggregator for complex genomic analyses.

A genomic study instance might be based on one or more service requests or care plans. The reasons for performing a genomic study might be driven by specific Conditions or Observations. Although the genomic study subject is the focus of the study, the analysis-level focus could be used to specify other relevant subjects or specimens. For example, trio testing may involve three subjects: the proband, and both parents. The proband would be the subject listed directly under the genomic study, while each of the analyses could represent proband, mother, and father genomic analyses.

In clinical use, the study interpreters use all the results of these various analyses to provide diagnostic and therapeutic insights for the patient, where performers are listed according to their participation in each genomic analysis. Each analysis may be based on a set of defined protocols that may differ from the performed protocols.

Detailed information about the results of the analyses may be represented by Observations and gathered in a Genomic Report. Both resources may refer back to the originating genomic study to allow navigation.

Example Walkthrough

The following figure is based on the Procedure/lungMass example. Some things to note:

  • A genomics report can reference 0..* genomic studies.
  • A genomic study's code codifies the overall test that was performed.
  • A genomic study can reference genomic study analyses.
  • A genomic study analysis' method characterizes the technique(s) used to perform the particular analysis.
  • A genomic study analysis' change type characterizes the type(s) of molecular alterations detectable by the analysis.
  • A genomic study analysis can reference BED files that provide precise sequencing coverage regions.
  • A genomic study analysis can reference a VCF file generated via the analysis.
  • Variant and other observations can explicitly reference the genomic study from which the observation was derived.
genomic study

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure Procedure
... text 0..1 Narrative GenomicStudy.description
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... genomic-study-analysis 0..* Reference(Genomic Study Analysis) GenomicStudy.analysis
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-analysis-ext
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... identifier 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri 0..* uri GenomicStudy.instantiatesUri
... basedOn 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... partOf 0..0
... status 1..1 code GenomicStudy.status
... statusReason 0..0
... category 1..1 CodeableConcept Classification of the procedure
.... coding 1..1 Coding Code defined by a terminology system
Required Pattern: At least the following
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
... code 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] 0..1 dateTime GenomicStudy.startDate
... recorder 0..0
... asserter 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... location 0..0
... reasonCode 0..* CodeableConcept GenomicStudy.reason
... reasonReference 0..* Reference(Condition | Observation) GenomicStudy.reason
... bodySite 0..0
... outcome 0..0
... report 0..0
... complication 0..0
... complicationDetail 0..0
... followUp 0..0
... note 0..* Annotation GenomicStudy.note
... focalDevice 0..0
... usedReference 0..0
... usedCode 0..0

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..* Procedure An action that is being or was performed on a patient
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative GenomicStudy.description
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical Σ 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri Σ 0..* uri GenomicStudy.instantiatesUri
... basedOn Σ 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... status ?!Σ 1..1 code GenomicStudy.status
Binding: EventStatus (required): A code specifying the state of the procedure.

... category Σ 1..1 CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

.... coding Σ 1..1 Coding Code defined by a terminology system

Required Pattern: At least the following
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
... code Σ 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject Σ 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter Σ 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] Σ 0..1 dateTime GenomicStudy.startDate
... asserter Σ 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... reasonCode Σ 0..* CodeableConcept GenomicStudy.reason
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference Σ 0..* Reference(Condition | Observation) GenomicStudy.reason
... note 0..* Annotation GenomicStudy.note

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..* Procedure An action that is being or was performed on a patient
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative GenomicStudy.description
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... genomic-study-analysis 0..* Reference(Genomic Study Analysis) GenomicStudy.analysis
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-analysis-ext
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical Σ 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri Σ 0..* uri GenomicStudy.instantiatesUri
... basedOn Σ 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... status ?!Σ 1..1 code GenomicStudy.status
Binding: EventStatus (required): A code specifying the state of the procedure.

... category Σ 1..1 CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... coding Σ 1..1 Coding Code defined by a terminology system

Required Pattern: At least the following
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... version 0..1 string Version of the system - if relevant
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
..... display 0..1 string Representation defined by the system
..... userSelected 0..1 boolean If this coding was chosen directly by the user
.... text Σ 0..1 string Plain text representation of the concept
... code Σ 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject Σ 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter Σ 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] Σ 0..1 dateTime GenomicStudy.startDate
... asserter Σ 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... performer Σ 0..* BackboneElement The people who performed the procedure
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... function Σ 0..1 CodeableConcept Type of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.

.... actor Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) The reference to the practitioner
.... onBehalfOf 0..1 Reference(Organization) Organization the device or practitioner was acting for
... reasonCode Σ 0..* CodeableConcept GenomicStudy.reason
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference Σ 0..* Reference(Condition | Observation) GenomicStudy.reason
... note 0..* Annotation GenomicStudy.note

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG
Procedure.performer.functionexampleProcedurePerformerRoleCodes
http://hl7.org/fhir/ValueSet/performer-role
from the FHIR Standard
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
http://hl7.org/fhir/ValueSet/device-action
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from Procedure

Differential View

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure Procedure
... text 0..1 Narrative GenomicStudy.description
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... genomic-study-analysis 0..* Reference(Genomic Study Analysis) GenomicStudy.analysis
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-analysis-ext
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... identifier 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri 0..* uri GenomicStudy.instantiatesUri
... basedOn 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... partOf 0..0
... status 1..1 code GenomicStudy.status
... statusReason 0..0
... category 1..1 CodeableConcept Classification of the procedure
.... coding 1..1 Coding Code defined by a terminology system
Required Pattern: At least the following
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
... code 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] 0..1 dateTime GenomicStudy.startDate
... recorder 0..0
... asserter 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... location 0..0
... reasonCode 0..* CodeableConcept GenomicStudy.reason
... reasonReference 0..* Reference(Condition | Observation) GenomicStudy.reason
... bodySite 0..0
... outcome 0..0
... report 0..0
... complication 0..0
... complicationDetail 0..0
... followUp 0..0
... note 0..* Annotation GenomicStudy.note
... focalDevice 0..0
... usedReference 0..0
... usedCode 0..0

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..* Procedure An action that is being or was performed on a patient
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative GenomicStudy.description
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical Σ 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri Σ 0..* uri GenomicStudy.instantiatesUri
... basedOn Σ 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... status ?!Σ 1..1 code GenomicStudy.status
Binding: EventStatus (required): A code specifying the state of the procedure.

... category Σ 1..1 CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

.... coding Σ 1..1 Coding Code defined by a terminology system

Required Pattern: At least the following
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
... code Σ 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject Σ 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter Σ 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] Σ 0..1 dateTime GenomicStudy.startDate
... asserter Σ 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... reasonCode Σ 0..* CodeableConcept GenomicStudy.reason
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference Σ 0..* Reference(Condition | Observation) GenomicStudy.reason
... note 0..* Annotation GenomicStudy.note

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..* Procedure An action that is being or was performed on a patient
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative GenomicStudy.description
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
... genomic-study-analysis 0..* Reference(Genomic Study Analysis) GenomicStudy.analysis
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-analysis-ext
... referrer 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.referrer
URL: http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study-referrer-ext
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier GenomicStudy.identifier
... instantiatesCanonical Σ 0..* canonical(PlanDefinition) GenomicStudy.instantiatesCanonical
... instantiatesUri Σ 0..* uri GenomicStudy.instantiatesUri
... basedOn Σ 0..* Reference(ServiceRequest) GenomicStudy.basedOn
... status ?!Σ 1..1 code GenomicStudy.status
Binding: EventStatus (required): A code specifying the state of the procedure.

... category Σ 1..1 CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... coding Σ 1..1 Coding Code defined by a terminology system

Required Pattern: At least the following
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... version 0..1 string Version of the system - if relevant
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
..... display 0..1 string Representation defined by the system
..... userSelected 0..1 boolean If this coding was chosen directly by the user
.... text Σ 0..1 string Plain text representation of the concept
... code Σ 0..1 CodeableConcept GenomicStudy.type
Binding: Genomic Study Type ValueSet (example)
... subject Σ 1..1 Reference(Patient | Group) GenomicStudy.subject
... encounter Σ 0..1 Reference(Encounter) GenomicStudy.encounter
... performed[x] Σ 0..1 dateTime GenomicStudy.startDate
... asserter Σ 0..1 Reference(Practitioner | PractitionerRole) GenomicStudy.interpreter
... performer Σ 0..* BackboneElement The people who performed the procedure
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... function Σ 0..1 CodeableConcept Type of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.

.... actor Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) The reference to the practitioner
.... onBehalfOf 0..1 Reference(Organization) Organization the device or practitioner was acting for
... reasonCode Σ 0..* CodeableConcept GenomicStudy.reason
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference Σ 0..* Reference(Condition | Observation) GenomicStudy.reason
... note 0..* Annotation GenomicStudy.note

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeexampleGenomicStudyTypeVS (a valid code from Genomic Study Type CodeSystem)
http://hl7.org/fhir/uv/genomics-reporting/ValueSet/genomic-study-type-vs
from this IG
Procedure.performer.functionexampleProcedurePerformerRoleCodes
http://hl7.org/fhir/ValueSet/performer-role
from the FHIR Standard
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
http://hl7.org/fhir/ValueSet/device-action
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from Procedure

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Metrics and Region Details

Since the release of R5 included the GenomicStudy resource, some concepts are being added and others are being slightly reframed. The Metrics extension is used to assert high level quality metrics. The Regions extension is used to assert details about the scope of the analysis. There are options to express detail about genes and regions in the analysis. These include:

  • all genes or regions that were studied for analysis
  • genes or regions that had sufficient quality and coverage and are deemed to be called
  • genes or regions that were deemed uncallable, typically due to low coverage, but could be due to other quality issues

When expressing the each of those elements, there are two approaches to consider:

  • genes may be listed as coded values (HGNC)
  • region details may be shared via a BED file (the exact specification of the BED file is beyond the scope of this IG)

Attaching Genomic Files

The guidance below for file attachments needs to be carefully reviewed and considered. There are potential issues, and the Work Group welcomes feedback.

While this implementation guide strives to provide structured genomic data via a variety of observations, there are use cases that warrant a deeper level of data than this guide allows. These use cases might be best served by sending commonly used files (VCF, BAM, CRAM, MAF, BED to name a few) with the genomic study. To promote a consistent approach to sharing these files, we provide the guidance in this section. Even with this guidance, note that best practices in exchanging these files along with the metadata necessary to make use of them through a FHIR API, remains a complicated and open issue. See operations for a description of an experimental alternative workflow.

When sending these genomic files, implementers should first utilize this Genomic Study profile. Each study has one or more analyses, each of which can define input and output elements. From there, the GenomicDataFile can be used to send the file content along with meaningful metadata. This approach allows the files to have their own existence and enables queries to find them via the DocumentReference resource. To enable linking from the report to files, the Genomic Study Reference extension can be used to reference the study, corresponding analyses, and then the files. This can be helpful for those processing the report to easily identify the files that were sent along with the report.

When sending genomic files there are many considerations. For example, it is not unusual for files to be gigabytes in size. The DocumentReference resource has different options to evaluate for your use case. If embedded directly using DocumentReference.content.attachment.data, servers receiving the files may have size constraints per resource or per transaction which may limit your options. Instead of sending a large data file, the file can be referenced by a URL and title using the DocumentReference.content.attachment.url element. This can point to an online resource that hosts the file or from where the file can be accessed. For genomic files, the host is likely not the FHIR server providing the DocumentReference data instance. Be aware that use of DocumentReference to provide access to files through URLs introduces authorization requirements that are out of scope of this Implementation Guide. With either of these approaches, it is important to note the files might be compressed. Also, the mime types for these genomic files will vary, or possibly be missing. The senders of the data should include as much metadata as possible to enable the receiver to appropriately handle the files.

For receivers to make use of these files, many facets of the generation of the files will be needed, such as what pipelines, tools, and settings were used. The intended downstream use cases must be carefully evaluated to ensure appropriate file preparation. The GenomicStudyAnalysis defines a number of attributes that can be used to better understand the file. Also, the DocumentReference.description might be helpful for a sending system to provide guidance on how the file was generated. A fully computable approach for this issue has yet to be defined.

It should be noted that this GenomicStudy profile is not an appropriate way to send a copy of the report (e.g., PDF or other document containing the written report). Instead, use Genomic Report and the presentedForm attribute.

A full, detailed implementation discussion is outside the scope of this IG. In a future release, this IG may include other profiles or artifacts along with more specific guidance.