R6 Ballot (1st Draft)

This page is part of the FHIR Specification v6.0.0-ballot1: Release 6 Ballot (1st Draft) (see Ballot Notes). The current version is 5.0.0. For a full list of available versions, see the Directory of published versions

10.7 Resource MolecularSequence - Content

Clinical Genomics icon Work GroupMaturity Level: 1 Trial UseSecurity Category: Patient Compartments: Patient

Representation of a molecular sequence.

The MolecularSequence resource is designed for representing molecular sequences. It can represent the sequence in different ways, allowing implementations to adopt the most effective one for their use case.

It is strongly encouraged to provide as much information in this resource for any reported sequences, because receiving systems (e.g. discovery research, outcomes analysis, and public health reporting) may use this information to normalize sequences over time or across sources. However, these data should not be used to dynamically correct/change sequence representations for clinical use outside of the laboratory, due to insufficient information.

The MolecularSequence resource is designed to represent a single sequence in an instance. Each sequence might have multiple representations, but implementers SHALL ensure all representations are for the same sequence. This means that if a single MolecularSequence instance contains a literal, two formatted files, and a relative, all four of those representations must represent the same sequence. This can be a challenge across systems, as semantic equivalency of sequences cannot be guaranteed unless there is an agreed upon standard between sending and receiving systems.

The MolecularSequence resource should only be used to capture a molecular sequence. It will not be used for other entities such as variant, variant annotations, genotypes, haplotypes, etc. Those concepts will be captured in Observation profiles found in the Genomics Reporting Implementation Guide icon. The sequence that was observed that led to the identification of those concepts can be delivered with this resource, and will be referenced by those observations.

MolecularSequence will not be used to capture data such as precise read of DNA sequences and sequence alignment are not included; such data may be accessible through references to GA4GH icon (Global Alliance for Genomics and Health) API, and may be referenced to by the formatted element.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MolecularSequence TUDomainResourceRepresentation of a molecular sequence

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierUnique ID for this particular sequence

... type Σ0..1codeaa | dna | rna
Binding: sequence Type (Required)
... subject Σ0..1Reference(Patient | Group | Substance | BiologicallyDerivedProduct | NutritionProduct)Subject this sequence is associated too
... specimen Σ0..1Reference(Specimen)Specimen used for sequencing
... device Σ0..1Reference(Device)The method for sequencing
... performer Σ0..1Reference(Organization)Who should be responsible for test result
... literal Σ0..1stringSequence that was observed
... formatted Σ0..*AttachmentEmbedded file or a link (URL) which contains content to represent the sequence

... relative Σ0..*BackboneElementA sequence defined relative to another sequence

.... coordinateSystem Σ1..1CodeableConceptWays of identifying nucleotides or amino acids within a sequence
Binding: LL5323-2 icon (Extensible)
.... ordinalPosition 0..1integerIndicates the order in which the sequence should be considered when putting multiple 'relative' elements together
.... sequenceRange 0..1RangeIndicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
.... startingSequence ΣC0..1BackboneElementA sequence used as starting sequence
+ Rule: Both genomeAssembly and chromosome must be both contained if either one of them is contained
+ Rule: Have and only have one of the following elements in startingSequence: 1. genomeAssembly; 2 sequence
..... genomeAssembly ΣC0..1CodeableConceptThe genome assembly used for starting sequence, e.g. GRCh38
Binding: LL1040-6 icon (Extensible)
..... chromosome ΣC0..1CodeableConceptChromosome Identifier
Binding: LL2938-0 icon (Required)
..... sequence[x] ΣC0..1The reference sequence that represents the starting sequence
Binding: Multiple bindings acceptable (NCBI or LRG) (Example)
...... sequenceCodeableConceptCodeableConcept
...... sequenceStringstring
...... sequenceReferenceReference(MolecularSequence)
..... windowStart Σ0..1integerStart position of the window on the starting sequence
..... windowEnd Σ0..1integerEnd position of the window on the starting sequence
..... orientation Σ0..1codesense | antisense
Binding: orientation Type (Required)
..... strand Σ0..1codewatson | crick
Binding: strand Type (Required)
.... edit Σ0..*BackboneElementChanges in sequence from the starting sequence

..... start Σ0..1integerStart position of the edit on the starting sequence
..... end Σ0..1integerEnd position of the edit on the starting sequence
..... replacementSequence Σ0..1stringAllele that was observed
..... replacedSequence Σ0..1stringAllele in the starting sequence

doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

MolecularSequence (DomainResource)A unique identifier for this particular sequence instanceidentifier : Identifier [0..*]Amino Acid Sequence/ DNA Sequence / RNA Sequencetype : code [0..1] « null (Strength=Required)SequenceType! »Indicates the subject this sequence is associated toosubject : Reference [0..1] « Patient|Group|Substance| BiologicallyDerivedProduct|NutritionProduct »The actual focus of a molecular sequence when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the subject would be the child (proband) and the focus would be the parentfocus : Reference [0..*] « Any »Specimen used for sequencingspecimen : Reference [0..1] « Specimen »The method for sequencing, for example, chip informationdevice : Reference [0..1] « Device »The organization or lab that should be responsible for this resultperformer : Reference [0..1] « Organization »Sequence that was observedliteral : string [0..1]Sequence that was observed as file content. Can be an actual file contents, or referenced by a URL to an external systemformatted : Attachment [0..*]RelativeThese are different ways of identifying nucleotides or amino acids within a sequence. Different databases and file types may use different systems. For detail definitions, see https://loinc.org/92822-6/ for more detailcoordinateSystem : CodeableConcept [1..1] « null (Strength=Extensible)LL5323-2+ »Indicates the order in which the sequence should be considered when putting multiple 'relative' elements togetherordinalPosition : integer [0..1]Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used togethersequenceRange : Range [0..1]StartingSequenceThe genome assembly used for starting sequence, e.g. GRCh38genomeAssembly : CodeableConcept [0..1] « null (Strength=Extensible)LL1040-6+ » « This element has or is affected by some invariantsC »Structural unit composed of a nucleic acid molecule which controls its own replication through the interaction of specific proteins at one or more origins of replication ([SO:0000340](http://www.sequenceontology.org/browser/current_svn/term/SO:0000340))chromosome : CodeableConcept [0..1] « null (Strength=Required)LL2938-0! » « This element has or is affected by some invariantsC »The reference sequence that represents the starting sequencesequence[x] : DataType [0..1] « CodeableConcept|string|Reference( MolecularSequence); null (Strength=Example)Multiple bindings acceptable ...?? » « This element has or is affected by some invariantsC »Start position of the window on the starting sequence. This value should honor the rules of the coordinateSystemwindowStart : integer [0..1]End position of the window on the starting sequence. This value should honor the rules of the coordinateSystemwindowEnd : integer [0..1]A relative reference to a DNA strand based on gene orientation. The strand that contains the open reading frame of the gene is the "sense" strand, and the opposite complementary strand is the "antisense" strandorientation : code [0..1] « null (Strength=Required)OrientationType! »An absolute reference to a strand. The Watson strand is the strand whose 5'-end is on the short arm of the chromosome, and the Crick strand as the one whose 5'-end is on the long armstrand : code [0..1] « null (Strength=Required)StrandType! »EditStart position of the edit on the starting sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusivestart : integer [0..1]End position of the edit on the starting sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last positionend : integer [0..1]Allele that was observed. Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the observed sequence. When the sequence type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.endreplacementSequence : string [0..1]Allele in the starting sequence. Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the starting sequence. When the sequence type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.endreplacedSequence : string [0..1]A sequence that is used as a starting sequence to describe variants that are present in a sequence analyzedstartingSequence[0..1]Changes in sequence from the starting sequenceedit[0..*]A sequence defined relative to another sequencerelative[0..*]

XML Template

<MolecularSequence xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier Unique ID for this particular sequence --></identifier>
 <type value="[code]"/><!-- 0..1 aa | dna | rna -->
 <subject><!-- 0..1 Reference(BiologicallyDerivedProduct|Group|NutritionProduct|
   Patient|Substance) Subject this sequence is associated too --></subject>
 <focus><!-- 0..* Reference(Any) What the molecular sequence is about, when it is not about the subject of record --></focus>
 <specimen><!-- 0..1 Reference(Specimen) Specimen used for sequencing --></specimen>
 <device><!-- 0..1 Reference(Device) The method for sequencing --></device>
 <performer><!-- 0..1 Reference(Organization) Who should be responsible for test result --></performer>
 <literal value="[string]"/><!-- 0..1 Sequence that was observed -->
 <formatted><!-- 0..* Attachment Embedded file or a link (URL) which contains content to represent the sequence --></formatted>
 <relative>  <!-- 0..* A sequence defined relative to another sequence -->
  <coordinateSystem><!-- 1..1 CodeableConcept Ways of identifying nucleotides or amino acids within a sequence icon --></coordinateSystem>
  <ordinalPosition value="[integer]"/><!-- 0..1 Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together -->
  <sequenceRange><!-- 0..1 Range Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together --></sequenceRange>
  <startingSequence>  <!-- 0..1 A sequence used as starting sequence -->
   <genomeAssembly><!-- I 0..1 CodeableConcept The genome assembly used for starting sequence, e.g. GRCh38 icon --></genomeAssembly>
   <chromosome><!-- I 0..1 CodeableConcept Chromosome Identifier icon --></chromosome>
   <sequence[x]><!-- I 0..1 CodeableConcept|string|Reference(MolecularSequence) The reference sequence that represents the starting sequence --></sequence[x]>
   <windowStart value="[integer]"/><!-- 0..1 Start position of the window on the starting sequence -->
   <windowEnd value="[integer]"/><!-- 0..1 End position of the window on the starting sequence -->
   <orientation value="[code]"/><!-- 0..1 sense | antisense -->
   <strand value="[code]"/><!-- 0..1 watson | crick -->
  </startingSequence>
  <edit>  <!-- 0..* Changes in sequence from the starting sequence -->
   <start value="[integer]"/><!-- 0..1 Start position of the edit on the starting sequence -->
   <end value="[integer]"/><!-- 0..1 End position of the edit on the starting sequence -->
   <replacementSequence value="[string]"/><!-- 0..1 Allele that was observed -->
   <replacedSequence value="[string]"/><!-- 0..1 Allele in the starting sequence -->
  </edit>
 </relative>
</MolecularSequence>

JSON Template

{doco
  "resourceType" : "MolecularSequence",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // Unique ID for this particular sequence
  "type" : "<code>", // aa | dna | rna
  "subject" : { Reference(BiologicallyDerivedProduct|Group|NutritionProduct|
   Patient|Substance) }, // Subject this sequence is associated too
  "focus" : [{ Reference(Any) }], // What the molecular sequence is about, when it is not about the subject of record
  "specimen" : { Reference(Specimen) }, // Specimen used for sequencing
  "device" : { Reference(Device) }, // The method for sequencing
  "performer" : { Reference(Organization) }, // Who should be responsible for test result
  "literal" : "<string>", // Sequence that was observed
  "formatted" : [{ Attachment }], // Embedded file or a link (URL) which contains content to represent the sequence
  "relative" : [{ // A sequence defined relative to another sequence
    "coordinateSystem" : { CodeableConcept }, // R!  Ways of identifying nucleotides or amino acids within a sequence icon
    "ordinalPosition" : <integer>, // Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together
    "sequenceRange" : { Range }, // Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
    "startingSequence" : { // A sequence used as starting sequence
      "genomeAssembly" : { CodeableConcept }, // I The genome assembly used for starting sequence, e.g. GRCh38 icon
      "chromosome" : { CodeableConcept }, // I Chromosome Identifier icon
      // sequence[x]: The reference sequence that represents the starting sequence. One of these 3:
      "sequenceCodeableConcept" : { CodeableConcept },
      "sequenceString" : "<string>",
      "sequenceReference" : { Reference(MolecularSequence) },
      "windowStart" : <integer>, // Start position of the window on the starting sequence
      "windowEnd" : <integer>, // End position of the window on the starting sequence
      "orientation" : "<code>", // sense | antisense
      "strand" : "<code>" // watson | crick
    },
    "edit" : [{ // Changes in sequence from the starting sequence
      "start" : <integer>, // Start position of the edit on the starting sequence
      "end" : <integer>, // End position of the edit on the starting sequence
      "replacementSequence" : "<string>", // Allele that was observed
      "replacedSequence" : "<string>" // Allele in the starting sequence
    }]
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MolecularSequence;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:identifier  ( [ Identifier ] ... ) ; # 0..* Unique ID for this particular sequence
  fhir:type [ code ] ; # 0..1 aa | dna | rna
  fhir:subject [ Reference(BiologicallyDerivedProduct|Group|NutritionProduct|Patient|Substance) ] ; # 0..1 Subject this sequence is associated too
  fhir:focus  ( [ Reference(Any) ] ... ) ; # 0..* What the molecular sequence is about, when it is not about the subject of record
  fhir:specimen [ Reference(Specimen) ] ; # 0..1 Specimen used for sequencing
  fhir:device [ Reference(Device) ] ; # 0..1 The method for sequencing
  fhir:performer [ Reference(Organization) ] ; # 0..1 Who should be responsible for test result
  fhir:literal [ string ] ; # 0..1 Sequence that was observed
  fhir:formatted  ( [ Attachment ] ... ) ; # 0..* Embedded file or a link (URL) which contains content to represent the sequence
  fhir:relative ( [ # 0..* A sequence defined relative to another sequence
    fhir:coordinateSystem [ CodeableConcept ] ; # 1..1 Ways of identifying nucleotides or amino acids within a sequence
    fhir:ordinalPosition [ integer ] ; # 0..1 Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together
    fhir:sequenceRange [ Range ] ; # 0..1 Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
    fhir:startingSequence [ # 0..1 A sequence used as starting sequence
      fhir:genomeAssembly [ CodeableConcept ] ; # 0..1 I The genome assembly used for starting sequence, e.g. GRCh38
      fhir:chromosome [ CodeableConcept ] ; # 0..1 I Chromosome Identifier
      # sequence[x] : 0..1 I The reference sequence that represents the starting sequence. One of these 3
        fhir:sequence [  a fhir:CodeableConcept ; CodeableConcept ]
        fhir:sequence [  a fhir:string ; string ]
        fhir:sequence [  a fhir:Reference ; Reference(MolecularSequence) ]
      fhir:windowStart [ integer ] ; # 0..1 Start position of the window on the starting sequence
      fhir:windowEnd [ integer ] ; # 0..1 End position of the window on the starting sequence
      fhir:orientation [ code ] ; # 0..1 sense | antisense
      fhir:strand [ code ] ; # 0..1 watson | crick
    ] ;
    fhir:edit ( [ # 0..* Changes in sequence from the starting sequence
      fhir:start [ integer ] ; # 0..1 Start position of the edit on the starting sequence
      fhir:end [ integer ] ; # 0..1 End position of the edit on the starting sequence
      fhir:replacementSequence [ string ] ; # 0..1 Allele that was observed
      fhir:replacedSequence [ string ] ; # 0..1 Allele in the starting sequence
    ] ... ) ;
  ] ... ) ;
]

Changes from both R4 and R4B

MolecularSequence
MolecularSequence.subject
  • Renamed from patient to subject
  • Type Reference: Added Target Types Group, Substance, BiologicallyDerivedProduct, NutritionProduct
MolecularSequence.focus
  • Added Element
MolecularSequence.literal
  • Added Element
MolecularSequence.formatted
  • Added Element
MolecularSequence.relative
  • Added Element
MolecularSequence.relative.coordinateSystem
  • Added Mandatory Element
MolecularSequence.relative.ordinalPosition
  • Added Element
MolecularSequence.relative.sequenceRange
  • Added Element
MolecularSequence.relative.startingSequence
  • Added Element
MolecularSequence.relative.startingSequence.genomeAssembly
  • Added Element
MolecularSequence.relative.startingSequence.chromosome
  • Added Element
MolecularSequence.relative.startingSequence.sequence[x]
  • Added Element
MolecularSequence.relative.startingSequence.windowStart
  • Added Element
MolecularSequence.relative.startingSequence.windowEnd
  • Added Element
MolecularSequence.relative.startingSequence.orientation
  • Added Element
MolecularSequence.relative.startingSequence.strand
  • Added Element
MolecularSequence.relative.edit
  • Added Element
MolecularSequence.relative.edit.start
  • Added Element
MolecularSequence.relative.edit.end
  • Added Element
MolecularSequence.relative.edit.replacementSequence
  • Added Element
MolecularSequence.relative.edit.replacedSequence
  • Added Element
MolecularSequence.coordinateSystem
  • Deleted (>relative.coordinateSystem)
MolecularSequence.quantity
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.referenceSeq
  • Deleted (->relative.startingSequence.sequence[x])
MolecularSequence.variant
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.observedSeq
  • Deleted (->relative.startingSequence.sequenceString)
MolecularSequence.quality
  • Deleted (Removed from the resource.)
MolecularSequence.readCoverage
  • Deleted (Removed. Covered by the RegionStudied Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.repository
  • Deleted (->formatted)
MolecularSequence.pointer
  • Deleted (->relative)
MolecularSequence.structureVariant
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MolecularSequence TUDomainResourceRepresentation of a molecular sequence

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierUnique ID for this particular sequence

... type Σ0..1codeaa | dna | rna
Binding: sequence Type (Required)
... subject Σ0..1Reference(Patient | Group | Substance | BiologicallyDerivedProduct | NutritionProduct)Subject this sequence is associated too
... specimen Σ0..1Reference(Specimen)Specimen used for sequencing
... device Σ0..1Reference(Device)The method for sequencing
... performer Σ0..1Reference(Organization)Who should be responsible for test result
... literal Σ0..1stringSequence that was observed
... formatted Σ0..*AttachmentEmbedded file or a link (URL) which contains content to represent the sequence

... relative Σ0..*BackboneElementA sequence defined relative to another sequence

.... coordinateSystem Σ1..1CodeableConceptWays of identifying nucleotides or amino acids within a sequence
Binding: LL5323-2 icon (Extensible)
.... ordinalPosition 0..1integerIndicates the order in which the sequence should be considered when putting multiple 'relative' elements together
.... sequenceRange 0..1RangeIndicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
.... startingSequence ΣC0..1BackboneElementA sequence used as starting sequence
+ Rule: Both genomeAssembly and chromosome must be both contained if either one of them is contained
+ Rule: Have and only have one of the following elements in startingSequence: 1. genomeAssembly; 2 sequence
..... genomeAssembly ΣC0..1CodeableConceptThe genome assembly used for starting sequence, e.g. GRCh38
Binding: LL1040-6 icon (Extensible)
..... chromosome ΣC0..1CodeableConceptChromosome Identifier
Binding: LL2938-0 icon (Required)
..... sequence[x] ΣC0..1The reference sequence that represents the starting sequence
Binding: Multiple bindings acceptable (NCBI or LRG) (Example)
...... sequenceCodeableConceptCodeableConcept
...... sequenceStringstring
...... sequenceReferenceReference(MolecularSequence)
..... windowStart Σ0..1integerStart position of the window on the starting sequence
..... windowEnd Σ0..1integerEnd position of the window on the starting sequence
..... orientation Σ0..1codesense | antisense
Binding: orientation Type (Required)
..... strand Σ0..1codewatson | crick
Binding: strand Type (Required)
.... edit Σ0..*BackboneElementChanges in sequence from the starting sequence

..... start Σ0..1integerStart position of the edit on the starting sequence
..... end Σ0..1integerEnd position of the edit on the starting sequence
..... replacementSequence Σ0..1stringAllele that was observed
..... replacedSequence Σ0..1stringAllele in the starting sequence

doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

MolecularSequence (DomainResource)A unique identifier for this particular sequence instanceidentifier : Identifier [0..*]Amino Acid Sequence/ DNA Sequence / RNA Sequencetype : code [0..1] « null (Strength=Required)SequenceType! »Indicates the subject this sequence is associated toosubject : Reference [0..1] « Patient|Group|Substance| BiologicallyDerivedProduct|NutritionProduct »The actual focus of a molecular sequence when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the subject would be the child (proband) and the focus would be the parentfocus : Reference [0..*] « Any »Specimen used for sequencingspecimen : Reference [0..1] « Specimen »The method for sequencing, for example, chip informationdevice : Reference [0..1] « Device »The organization or lab that should be responsible for this resultperformer : Reference [0..1] « Organization »Sequence that was observedliteral : string [0..1]Sequence that was observed as file content. Can be an actual file contents, or referenced by a URL to an external systemformatted : Attachment [0..*]RelativeThese are different ways of identifying nucleotides or amino acids within a sequence. Different databases and file types may use different systems. For detail definitions, see https://loinc.org/92822-6/ for more detailcoordinateSystem : CodeableConcept [1..1] « null (Strength=Extensible)LL5323-2+ »Indicates the order in which the sequence should be considered when putting multiple 'relative' elements togetherordinalPosition : integer [0..1]Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used togethersequenceRange : Range [0..1]StartingSequenceThe genome assembly used for starting sequence, e.g. GRCh38genomeAssembly : CodeableConcept [0..1] « null (Strength=Extensible)LL1040-6+ » « This element has or is affected by some invariantsC »Structural unit composed of a nucleic acid molecule which controls its own replication through the interaction of specific proteins at one or more origins of replication ([SO:0000340](http://www.sequenceontology.org/browser/current_svn/term/SO:0000340))chromosome : CodeableConcept [0..1] « null (Strength=Required)LL2938-0! » « This element has or is affected by some invariantsC »The reference sequence that represents the starting sequencesequence[x] : DataType [0..1] « CodeableConcept|string|Reference( MolecularSequence); null (Strength=Example)Multiple bindings acceptable ...?? » « This element has or is affected by some invariantsC »Start position of the window on the starting sequence. This value should honor the rules of the coordinateSystemwindowStart : integer [0..1]End position of the window on the starting sequence. This value should honor the rules of the coordinateSystemwindowEnd : integer [0..1]A relative reference to a DNA strand based on gene orientation. The strand that contains the open reading frame of the gene is the "sense" strand, and the opposite complementary strand is the "antisense" strandorientation : code [0..1] « null (Strength=Required)OrientationType! »An absolute reference to a strand. The Watson strand is the strand whose 5'-end is on the short arm of the chromosome, and the Crick strand as the one whose 5'-end is on the long armstrand : code [0..1] « null (Strength=Required)StrandType! »EditStart position of the edit on the starting sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusivestart : integer [0..1]End position of the edit on the starting sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last positionend : integer [0..1]Allele that was observed. Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the observed sequence. When the sequence type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.endreplacementSequence : string [0..1]Allele in the starting sequence. Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the starting sequence. When the sequence type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.endreplacedSequence : string [0..1]A sequence that is used as a starting sequence to describe variants that are present in a sequence analyzedstartingSequence[0..1]Changes in sequence from the starting sequenceedit[0..*]A sequence defined relative to another sequencerelative[0..*]

XML Template

<MolecularSequence xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier Unique ID for this particular sequence --></identifier>
 <type value="[code]"/><!-- 0..1 aa | dna | rna -->
 <subject><!-- 0..1 Reference(BiologicallyDerivedProduct|Group|NutritionProduct|
   Patient|Substance) Subject this sequence is associated too --></subject>
 <focus><!-- 0..* Reference(Any) What the molecular sequence is about, when it is not about the subject of record --></focus>
 <specimen><!-- 0..1 Reference(Specimen) Specimen used for sequencing --></specimen>
 <device><!-- 0..1 Reference(Device) The method for sequencing --></device>
 <performer><!-- 0..1 Reference(Organization) Who should be responsible for test result --></performer>
 <literal value="[string]"/><!-- 0..1 Sequence that was observed -->
 <formatted><!-- 0..* Attachment Embedded file or a link (URL) which contains content to represent the sequence --></formatted>
 <relative>  <!-- 0..* A sequence defined relative to another sequence -->
  <coordinateSystem><!-- 1..1 CodeableConcept Ways of identifying nucleotides or amino acids within a sequence icon --></coordinateSystem>
  <ordinalPosition value="[integer]"/><!-- 0..1 Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together -->
  <sequenceRange><!-- 0..1 Range Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together --></sequenceRange>
  <startingSequence>  <!-- 0..1 A sequence used as starting sequence -->
   <genomeAssembly><!-- I 0..1 CodeableConcept The genome assembly used for starting sequence, e.g. GRCh38 icon --></genomeAssembly>
   <chromosome><!-- I 0..1 CodeableConcept Chromosome Identifier icon --></chromosome>
   <sequence[x]><!-- I 0..1 CodeableConcept|string|Reference(MolecularSequence) The reference sequence that represents the starting sequence --></sequence[x]>
   <windowStart value="[integer]"/><!-- 0..1 Start position of the window on the starting sequence -->
   <windowEnd value="[integer]"/><!-- 0..1 End position of the window on the starting sequence -->
   <orientation value="[code]"/><!-- 0..1 sense | antisense -->
   <strand value="[code]"/><!-- 0..1 watson | crick -->
  </startingSequence>
  <edit>  <!-- 0..* Changes in sequence from the starting sequence -->
   <start value="[integer]"/><!-- 0..1 Start position of the edit on the starting sequence -->
   <end value="[integer]"/><!-- 0..1 End position of the edit on the starting sequence -->
   <replacementSequence value="[string]"/><!-- 0..1 Allele that was observed -->
   <replacedSequence value="[string]"/><!-- 0..1 Allele in the starting sequence -->
  </edit>
 </relative>
</MolecularSequence>

JSON Template

{doco
  "resourceType" : "MolecularSequence",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // Unique ID for this particular sequence
  "type" : "<code>", // aa | dna | rna
  "subject" : { Reference(BiologicallyDerivedProduct|Group|NutritionProduct|
   Patient|Substance) }, // Subject this sequence is associated too
  "focus" : [{ Reference(Any) }], // What the molecular sequence is about, when it is not about the subject of record
  "specimen" : { Reference(Specimen) }, // Specimen used for sequencing
  "device" : { Reference(Device) }, // The method for sequencing
  "performer" : { Reference(Organization) }, // Who should be responsible for test result
  "literal" : "<string>", // Sequence that was observed
  "formatted" : [{ Attachment }], // Embedded file or a link (URL) which contains content to represent the sequence
  "relative" : [{ // A sequence defined relative to another sequence
    "coordinateSystem" : { CodeableConcept }, // R!  Ways of identifying nucleotides or amino acids within a sequence icon
    "ordinalPosition" : <integer>, // Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together
    "sequenceRange" : { Range }, // Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
    "startingSequence" : { // A sequence used as starting sequence
      "genomeAssembly" : { CodeableConcept }, // I The genome assembly used for starting sequence, e.g. GRCh38 icon
      "chromosome" : { CodeableConcept }, // I Chromosome Identifier icon
      // sequence[x]: The reference sequence that represents the starting sequence. One of these 3:
      "sequenceCodeableConcept" : { CodeableConcept },
      "sequenceString" : "<string>",
      "sequenceReference" : { Reference(MolecularSequence) },
      "windowStart" : <integer>, // Start position of the window on the starting sequence
      "windowEnd" : <integer>, // End position of the window on the starting sequence
      "orientation" : "<code>", // sense | antisense
      "strand" : "<code>" // watson | crick
    },
    "edit" : [{ // Changes in sequence from the starting sequence
      "start" : <integer>, // Start position of the edit on the starting sequence
      "end" : <integer>, // End position of the edit on the starting sequence
      "replacementSequence" : "<string>", // Allele that was observed
      "replacedSequence" : "<string>" // Allele in the starting sequence
    }]
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MolecularSequence;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:identifier  ( [ Identifier ] ... ) ; # 0..* Unique ID for this particular sequence
  fhir:type [ code ] ; # 0..1 aa | dna | rna
  fhir:subject [ Reference(BiologicallyDerivedProduct|Group|NutritionProduct|Patient|Substance) ] ; # 0..1 Subject this sequence is associated too
  fhir:focus  ( [ Reference(Any) ] ... ) ; # 0..* What the molecular sequence is about, when it is not about the subject of record
  fhir:specimen [ Reference(Specimen) ] ; # 0..1 Specimen used for sequencing
  fhir:device [ Reference(Device) ] ; # 0..1 The method for sequencing
  fhir:performer [ Reference(Organization) ] ; # 0..1 Who should be responsible for test result
  fhir:literal [ string ] ; # 0..1 Sequence that was observed
  fhir:formatted  ( [ Attachment ] ... ) ; # 0..* Embedded file or a link (URL) which contains content to represent the sequence
  fhir:relative ( [ # 0..* A sequence defined relative to another sequence
    fhir:coordinateSystem [ CodeableConcept ] ; # 1..1 Ways of identifying nucleotides or amino acids within a sequence
    fhir:ordinalPosition [ integer ] ; # 0..1 Indicates the order in which the sequence should be considered when putting multiple 'relative' elements together
    fhir:sequenceRange [ Range ] ; # 0..1 Indicates the nucleotide range in the composed sequence when multiple 'relative' elements are used together
    fhir:startingSequence [ # 0..1 A sequence used as starting sequence
      fhir:genomeAssembly [ CodeableConcept ] ; # 0..1 I The genome assembly used for starting sequence, e.g. GRCh38
      fhir:chromosome [ CodeableConcept ] ; # 0..1 I Chromosome Identifier
      # sequence[x] : 0..1 I The reference sequence that represents the starting sequence. One of these 3
        fhir:sequence [  a fhir:CodeableConcept ; CodeableConcept ]
        fhir:sequence [  a fhir:string ; string ]
        fhir:sequence [  a fhir:Reference ; Reference(MolecularSequence) ]
      fhir:windowStart [ integer ] ; # 0..1 Start position of the window on the starting sequence
      fhir:windowEnd [ integer ] ; # 0..1 End position of the window on the starting sequence
      fhir:orientation [ code ] ; # 0..1 sense | antisense
      fhir:strand [ code ] ; # 0..1 watson | crick
    ] ;
    fhir:edit ( [ # 0..* Changes in sequence from the starting sequence
      fhir:start [ integer ] ; # 0..1 Start position of the edit on the starting sequence
      fhir:end [ integer ] ; # 0..1 End position of the edit on the starting sequence
      fhir:replacementSequence [ string ] ; # 0..1 Allele that was observed
      fhir:replacedSequence [ string ] ; # 0..1 Allele in the starting sequence
    ] ... ) ;
  ] ... ) ;
]

Changes from both R4 and R4B

MolecularSequence
MolecularSequence.subject
  • Renamed from patient to subject
  • Type Reference: Added Target Types Group, Substance, BiologicallyDerivedProduct, NutritionProduct
MolecularSequence.focus
  • Added Element
MolecularSequence.literal
  • Added Element
MolecularSequence.formatted
  • Added Element
MolecularSequence.relative
  • Added Element
MolecularSequence.relative.coordinateSystem
  • Added Mandatory Element
MolecularSequence.relative.ordinalPosition
  • Added Element
MolecularSequence.relative.sequenceRange
  • Added Element
MolecularSequence.relative.startingSequence
  • Added Element
MolecularSequence.relative.startingSequence.genomeAssembly
  • Added Element
MolecularSequence.relative.startingSequence.chromosome
  • Added Element
MolecularSequence.relative.startingSequence.sequence[x]
  • Added Element
MolecularSequence.relative.startingSequence.windowStart
  • Added Element
MolecularSequence.relative.startingSequence.windowEnd
  • Added Element
MolecularSequence.relative.startingSequence.orientation
  • Added Element
MolecularSequence.relative.startingSequence.strand
  • Added Element
MolecularSequence.relative.edit
  • Added Element
MolecularSequence.relative.edit.start
  • Added Element
MolecularSequence.relative.edit.end
  • Added Element
MolecularSequence.relative.edit.replacementSequence
  • Added Element
MolecularSequence.relative.edit.replacedSequence
  • Added Element
MolecularSequence.coordinateSystem
  • Deleted (>relative.coordinateSystem)
MolecularSequence.quantity
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.referenceSeq
  • Deleted (->relative.startingSequence.sequence[x])
MolecularSequence.variant
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.observedSeq
  • Deleted (->relative.startingSequence.sequenceString)
MolecularSequence.quality
  • Deleted (Removed from the resource.)
MolecularSequence.readCoverage
  • Deleted (Removed. Covered by the RegionStudied Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)
MolecularSequence.repository
  • Deleted (->formatted)
MolecularSequence.pointer
  • Deleted (->relative)
MolecularSequence.structureVariant
  • Deleted (Removed. Covered by the Variant Profile in the CG IG: http://hl7.org/fhir/uv/genomics-reporting/index.html)

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)

 

Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis

PathValueSetTypeDocumentation
MolecularSequence.type SequenceType Required

Type if a sequence -- DNA, RNA, or amino acid sequence.

MolecularSequence.relative.coordinateSystem http://loinc.org/LL5323-2/ icon Extensible
MolecularSequence.relative.startingSequence.genomeAssembly http://loinc.org/LL1040-6/ icon Extensible
MolecularSequence.relative.startingSequence.chromosome http://loinc.org/LL2938-0/ icon Required
MolecularSequence.relative.startingSequence.sequence[x] ??Example
MolecularSequence.relative.startingSequence.orientation OrientationType Required

Type for orientation.

MolecularSequence.relative.startingSequence.strand StrandType Required

Type for strand.

UniqueKeyLevelLocationDescriptionExpression
img msq-5Rule MolecularSequence.relative.startingSequenceBoth genomeAssembly and chromosome must be both contained if either one of them is containedchromosome.exists() = genomeAssembly.exists()
img msq-6Rule MolecularSequence.relative.startingSequenceHave and only have one of the following elements in startingSequence: 1. genomeAssembly; 2 sequencegenomeAssembly.exists() xor sequence.exists()

This resource supports three patterns for representing a sequence of interest:

  • By providing a literal string of IUPAC codes representing nucleotides or amino acids.
  • By linking to a formatted file or link containing the sequence information (e.g. FASTA file or GA4GH sequence repository).
  • By providing a list of edits from a starting sequence.

The MolecularSequence resource is designed to represent a single sequence in an instance. Each sequence might have multiple representations, but implementers SHALL ensure all representations are for the same sequence.

literal: This string element can be used to hold the sequence as a string of characters.

formatted: This Attachment is used to refer to the sequence as embedded file content or via a URL reference.

This method can be used to refer to sequence data from in an external source. If the sequence is referring to a GA4GH repository, the formatted.url should refer to a GA4GH compliant endpoint that conforms to GA4GH data models.

relative: This complex element is used for encoding sequence. When the information of starting sequence and edits are provided, the observed sequence will be derived. Here is a picture below:

null

relative.ordinalPosition: Indicates the order in which the sequence should be considered when putting multiple relative instances together.

relative.sequenceRange: Indicates the nucleotide range in the composed sequence when multiple relative instances are used together.

These attributes help to clarify what sequence is being represented with less computation/inference on the recipient side. Implementers SHOULD use sequenceRange first to determine order as the most reliable. If sequenceRange is not present then ordinalPosition SHOULD be used. Finally, if both sequenceRange and ordinalPosition are absent, then the order of the relative data elements SHOULD be used to calculate a composition. It is the responsibility of the data sender to ensure the message can be consistently understood. Additionally, gaps in sequenceRange are considered intentional (i.e. the composed sequence contains a sequence of N's, the placeholder nucleotide, for the gap range).

In a FGFR2:MET Fusion use case, where the fusion was uncovered through RNA sequencing, a partial representation can be found here.

relative.startingSequence: There are four optional ways to represent a starting sequence in MolecularSequence resource:

  1. relative.startingSequence.sequenceCodeableConcept: Starting sequence id in public database;
  2. relative.startingSequence.sequenceString: Starting sequence string;
  3. relative.startingSequence.sequenceReference: Reference to starting sequence stored in another sequence entity;
  4. relative.startingSequence.genomeAssembly, relative.startingSequence.chromosome: The combination of genome assembly and chromosome.

The relative.startingSequence.windowStart and relative.startingSequence.windowEnddefines a range from the starting sequence that is used to define a subsequence used as the starting sequence.

When saving the sequence information, the nucleic acid will be numbered with order. Some representations use a 0-based system (e.g. GA4GH API, BAM files) while some use a 1-based system (e.g. VCF file format). The element coordinateSystem contains this information.

relative.coordinateSystem binds to a LOINC answer list, please review those answers here icon as well as the detailed description found here icon.

Here are two examples:

  • 0-based example: here
  • 1-based example: here

There are many considerations concerning the directionality of DNA or RNA. Here we are using relative.startingSequence.orientation and relative.startingSequence.strand. Orientation represents the sense of the sequence, which has different meanings depending on the type. Strand represents the sequence writing order. Watson strand refers to 5' to 3' top strand (5' -> 3'), whereas Crick strand refers to 5' to 3' bottom strand (3' <- 5').

Only two possible values can be made by strand, watson and crick. Since the directionality of the sequence string might be represented in different ways in different omics scenario, below are examples of how to map other expressions into its correlated value:

Watson Crick
5′-to-3′ direction 3′-to-5′ direction
+1 -1
Sense Antisense
Positive Negative

There are attributes where the sequence is represented as a string of characters.

  • relative.startingSequence.sequenceString
  • relative.edit.replacementSequence
  • relative.edit.replacedSequence
  • literal

The characters used in these string representations of a sequence should be constrained to the IUPAC codes found here https://www.bioinformatics.org/sms2/iupac.html icon.

Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
focusreferenceWhat the molecular sequence is about, when it is not about the subject of recordMolecularSequence.focus
(Any)
identifiertokenThe unique identity for a particular sequenceMolecularSequence.identifier65 Resources
patientreferenceThe subject that the sequence is aboutMolecularSequence.subject.where(resolve() is Patient)
(Patient)
66 Resources
subjectreferenceThe subject that the sequence is aboutMolecularSequence.subject
(Group, BiologicallyDerivedProduct, NutritionProduct, Patient, Substance)
typetokenAmino Acid Sequence/ DNA Sequence / RNA SequenceMolecularSequence.type11 Resources