FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions

Moleculardefinition.shex

Clinical Genomics Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for moleculardefinition

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

IMPORT <code.shex>
IMPORT <Range.shex>
IMPORT <string.shex>
IMPORT <integer.shex>
IMPORT <boolean.shex>
IMPORT <markdown.shex>
IMPORT <Quantity.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <DocumentReference.shex>

start=@<MolecularDefinition> AND {fhir:nodeRole [fhir:treeRoot]}

# Definitional content for a molecular entity
<MolecularDefinition> EXTENDS @<DomainResource> CLOSED {   
    a [fhir:MolecularDefinition]?;fhir:nodeRole [fhir:treeRoot]?;

    fhir:identifier @<OneOrMore_Identifier>?;  # Unique ID of an instance
    fhir:description @<markdown>?;          # Description of the Molecular 
                                            # Definition instance 
    fhir:moleculeType @<CodeableConcept>?;  # The type of molecule (e.g., DNA, 
                                            # RNA, amino acid) 
    fhir:type @<OneOrMore_CodeableConcept>?;  # Classification of the molecule 
                                            # into types other than those 
                                            # defined by moleculeType 
    fhir:topology @<OneOrMore_CodeableConcept>?;  # The structural topology of the 
                                            # molecular entity (e.g., linear, 
                                            # circular) 
    fhir:memberState @<OneOrMore_Reference_MolecularDefinition>?;  # Reserved for future profiles 
                                            # (e.g., haplotype, genotype) 
    fhir:location @<OneOrMore_MolecularDefinition.location>?;  # A defined location on a molecular 
                                            # entity 
    fhir:representation @<OneOrMore_MolecularDefinition.representation>?;  # A representation of a molecular 
                                            # entity 
}  

# One of the concatenated entities
<MolecularDefinition.representation.concatenated.sequenceElement> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequence @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # A reference to the sequence that 
                                            # defines this specific concatenated 
                                            # element 
    fhir:ordinalIndex @<integer>;           # The ordinal index of the element 
                                            # within the concatenated 
                                            # representation 
}  

# A cytoband-based location on a sequence
<MolecularDefinition.location.cytobandLocation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:genomeAssembly @<MolecularDefinition.location.cytobandLocation.genomeAssembly>;  # Reference Genome
    fhir:cytobandInterval @<MolecularDefinition.location.cytobandLocation.cytobandInterval>;  # Cytoband Interval
}  

# A defined location on a molecular entity
<MolecularDefinition.location> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceLocation @<MolecularDefinition.location.sequenceLocation>?;  # A coordinate-based location on a 
                                            # sequence 
    fhir:cytobandLocation @<MolecularDefinition.location.cytobandLocation>?;  # A cytoband-based location on a 
                                            # sequence 
    fhir:featureLocation @<OneOrMore_string>?;  # Reserved and possibly deprecated
}  

# The interval on startingMolecule that defines the portion to be extracted to produce the intended entity
<MolecularDefinition.representation.extracted.coordinateInterval> EXTENDS @<BackboneElement> CLOSED {   
    fhir:coordinateSystem @<MolecularDefinition.representation.extracted.coordinateInterval.coordinateSystem>?;  # The coordinate system used to 
                                            # define the location 
    fhir:start @<Quantity>  OR 
    			@<Range>  ?;  # The start location of the interval
    fhir:end @<Quantity>  OR 
    			@<Range>  ?;  # The end location of the interval
}  

# Cytoband Interval
<MolecularDefinition.location.cytobandLocation.cytobandInterval> EXTENDS @<BackboneElement> CLOSED {   
    fhir:chromosome @<CodeableConcept>;     # Chromosome
    fhir:startCytoband @<MolecularDefinition.location.cytobandLocation.cytobandInterval.startCytoband>?;  # Start
    fhir:endCytoband @<MolecularDefinition.location.cytobandLocation.cytobandInterval.endCytoband>?;  # End
}  

# Reference Genome
<MolecularDefinition.location.cytobandLocation.genomeAssembly> EXTENDS @<BackboneElement> CLOSED {   
    fhir:organism @<CodeableConcept>?;      # Species of the organism
    fhir:build @<CodeableConcept>?;         # Build number
    fhir:accession @<CodeableConcept>?;     # Accession
    fhir:description @<markdown>  OR 
    			@<string>  ?;  # Genome assembly description
}  

# A molecular entity defined as a string literal
<MolecularDefinition.representation.literal> EXTENDS @<BackboneElement> CLOSED {   
    fhir:encoding @<CodeableConcept>?;      # The encoding used in the value
    fhir:value @<string>;                   # A string literal representation of 
                                            # the molecular entity, using the 
                                            # encoding specified in encoding 
}  

# A molecular entity that is represented as a portion of a different entity
<MolecularDefinition.representation.extracted> EXTENDS @<BackboneElement> CLOSED {   
    fhir:startingMolecule @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # The molecular entity that serves 
                                            # as the conceptual 'parent' from 
                                            # which the intended entity is 
                                            # derived 
    fhir:coordinateInterval @<MolecularDefinition.representation.extracted.coordinateInterval>?;  # The interval on startingMolecule 
                                            # that defines the portion to be 
                                            # extracted to produce the intended 
                                            # entity 
    fhir:reverseComplement @<boolean>?;     # A flag that indicates whether the 
                                            # extracted sequence should be 
                                            # reverse complemented 
}  

# An ordered concatenation of molecular entities
<MolecularDefinition.representation.concatenated> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceElement @<OneOrMore_MolecularDefinition.representation.concatenated.sequenceElement>;  # One of the concatenated entities
}  

# Start
<MolecularDefinition.location.cytobandLocation.cytobandInterval.startCytoband> EXTENDS @<BackboneElement> CLOSED {   
    fhir:arm @<code>  OR 
    			@<string>  ?;  # Arm
    fhir:region @<code>  OR 
    			@<string>  ?;  # Region
    fhir:band @<code>  OR 
    			@<string>  ?;  # Band
    fhir:subBand @<code>  OR 
    			@<string>  ?;  # Sub-band
}  

# The coordinate system used to define the location
<MolecularDefinition.representation.extracted.coordinateInterval.coordinateSystem> EXTENDS @<BackboneElement> CLOSED {   
    fhir:system @<CodeableConcept>?;        # The type of coordinate system used
    fhir:origin @<CodeableConcept>?;        # The location of the origin of the 
                                            # coordinate system 
    fhir:normalizationMethod @<CodeableConcept>?;  # The normalization method used for 
                                            # determining a location within the 
                                            # coordinate system 
}  

# The coordinate system used to define the location
<MolecularDefinition.location.sequenceLocation.coordinateInterval.coordinateSystem> EXTENDS @<BackboneElement> CLOSED {   
    fhir:system @<CodeableConcept>?;        # The type of coordinate system used
    fhir:origin @<CodeableConcept>?;        # The location of the origin of the 
                                            # coordinate system 
    fhir:normalizationMethod @<CodeableConcept>?;  # The normalization method used for 
                                            # determining a location within the 
                                            # coordinate system 
}  

# A representation of a molecular entity
<MolecularDefinition.representation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:focus @<CodeableConcept>?;         # The domain concept that is the 
                                            # focus of a given instance of the 
                                            # representation 
    fhir:code @<OneOrMore_CodeableConcept>?;  # A code (e.g., sequence accession 
                                            # number) used to represent a 
                                            # molecular entity 
    fhir:literal @<MolecularDefinition.representation.literal>?;  # A molecular entity defined as a 
                                            # string literal 
    fhir:resolvable @<Reference> AND {fhir:link 
    			@<DocumentReference> ? }?;  # A resolvable representation of a 
                                            # molecular entity (e.g., URI, 
                                            # attached and formatted file) 
    fhir:extracted @<MolecularDefinition.representation.extracted>?;  # A molecular entity that is 
                                            # represented as a portion of a 
                                            # different entity 
    fhir:repeated @<MolecularDefinition.representation.repeated>?;  # A representation as a repeated 
                                            # motif 
    fhir:concatenated @<MolecularDefinition.representation.concatenated>?;  # An ordered concatenation of 
                                            # molecular entities 
    fhir:relative @<MolecularDefinition.representation.relative>?;  # A molecular entity represented as 
                                            # an ordered series of edits on a 
                                            # specified starting entity 
}  

# The coordinate system used to define the location
<MolecularDefinition.representation.relative.edit.coordinateInterval.coordinateSystem> EXTENDS @<BackboneElement> CLOSED {   
    fhir:system @<CodeableConcept>?;        # The type of coordinate system used
    fhir:origin @<CodeableConcept>?;        # The location of the origin of the 
                                            # coordinate system 
    fhir:normalizationMethod @<CodeableConcept>?;  # The normalization method used for 
                                            # determining a location within the 
                                            # coordinate system 
}  

# A defined edit (change) to be applied
<MolecularDefinition.representation.relative.edit> EXTENDS @<BackboneElement> CLOSED {   
    fhir:editOrder @<integer>?;             # Defines the order of edits when 
                                            # multiple edits are to be applied 
                                            # to the startingMolecule 
    fhir:coordinateInterval @<MolecularDefinition.representation.relative.edit.coordinateInterval>?;  # The interval on startingMolecule 
                                            # that defines the portion to be 
                                            # extracted to produce the intended 
                                            # entity 
    fhir:replacementMolecule @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # The molecular entity that serves 
                                            # as the replacement in the edit 
                                            # operation 
    fhir:replacedMolecule @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? }?;  # The portion of the molecular 
                                            # entity that is replaced by the 
                                            # replacementMolecule 
}  

# The interval on startingMolecule that defines the portion to be extracted to produce the intended entity
<MolecularDefinition.representation.relative.edit.coordinateInterval> EXTENDS @<BackboneElement> CLOSED {   
    fhir:coordinateSystem @<MolecularDefinition.representation.relative.edit.coordinateInterval.coordinateSystem>?;  # The coordinate system used to 
                                            # define the location 
    fhir:start @<Quantity>  OR 
    			@<Range>  ?;  # The start location of the interval
    fhir:end @<Quantity>  OR 
    			@<Range>  ?;  # The end location of the interval
}  

# A coordinate-based location on a sequence
<MolecularDefinition.location.sequenceLocation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceContext @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # The sequence on which the location 
                                            # is defined 
    fhir:coordinateInterval @<MolecularDefinition.location.sequenceLocation.coordinateInterval>?;  # An interval on a sequence
    fhir:strand @<CodeableConcept>?;        # The strand at the 
                                            # coordinateInterval 
}  

# An interval on a sequence
<MolecularDefinition.location.sequenceLocation.coordinateInterval> EXTENDS @<BackboneElement> CLOSED {   
    fhir:coordinateSystem @<MolecularDefinition.location.sequenceLocation.coordinateInterval.coordinateSystem>?;  # The coordinate system used to 
                                            # define the location 
    fhir:start @<Quantity>  OR 
    			@<Range>  ?;  # The start location of the interval
    fhir:end @<Quantity>  OR 
    			@<Range>  ?;  # The end location of the interval
}  

# End
<MolecularDefinition.location.cytobandLocation.cytobandInterval.endCytoband> EXTENDS @<BackboneElement> CLOSED {   
    fhir:arm @<code>  OR 
    			@<string>  ?;  # Arm
    fhir:region @<code>  OR 
    			@<string>  ?;  # Region
    fhir:band @<code>  OR 
    			@<string>  ?;  # Band
    fhir:subBand @<code>  OR 
    			@<string>  ?;  # SuBand
}  

# A representation as a repeated motif
<MolecularDefinition.representation.repeated> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceMotif @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # The motif that is repeated
    fhir:copyCount @<integer>;              # The number of copies of the motif
}  

# A molecular entity represented as an ordered series of edits on a specified starting entity
<MolecularDefinition.representation.relative> EXTENDS @<BackboneElement> CLOSED {   
    fhir:startingMolecule @<Reference> AND {fhir:link 
    			@<MolecularDefinition> ? };  # The molecular entity on which 
                                            # edits will be applied 
    fhir:edit @<OneOrMore_MolecularDefinition.representation.relative.edit>?;  # A defined edit (change) to be 
                                            # applied 
}  

#---------------------- Cardinality Types (OneOrMore) -------------------
<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}
<OneOrMore_CodeableConcept> CLOSED {
    rdf:first @<CodeableConcept>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> 
}
<OneOrMore_Reference_MolecularDefinition> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<MolecularDefinition> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_MolecularDefinition> 
}
<OneOrMore_MolecularDefinition.location> CLOSED {
    rdf:first @<MolecularDefinition.location>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularDefinition.location> 
}
<OneOrMore_MolecularDefinition.representation> CLOSED {
    rdf:first @<MolecularDefinition.representation>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularDefinition.representation> 
}
<OneOrMore_string> CLOSED {
    rdf:first @<string>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_string> 
}
<OneOrMore_MolecularDefinition.representation.concatenated.sequenceElement> CLOSED {
    rdf:first @<MolecularDefinition.representation.concatenated.sequenceElement>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularDefinition.representation.concatenated.sequenceElement> 
}
<OneOrMore_MolecularDefinition.representation.relative.edit> CLOSED {
    rdf:first @<MolecularDefinition.representation.relative.edit>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularDefinition.representation.relative.edit> 
}


Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.