FHIR CI-Build

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

Substancepolymer.shex

Biomedical Research and Regulation Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for substancepolymer

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 <string.shex>
IMPORT <integer.shex>
IMPORT <boolean.shex>
IMPORT <Quantity.shex>
IMPORT <Identifier.shex>
IMPORT <Attachment.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>


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

# Properties of a substance specific to it being a polymer
<SubstancePolymer> EXTENDS @<DomainResource> CLOSED {   

    a [fhir:SubstancePolymer]?;
    fhir:nodeRole [fhir:treeRoot]?;

    fhir:identifier @<Identifier>?;         # A business idenfier for this 
                                            # polymer, but typically this is 
                                            # handled by a SubstanceDefinition 
                                            # identifier 
    fhir:class @<CodeableConcept>?;         # Overall type of the polymer
    fhir:geometry @<CodeableConcept>?;      # Polymer geometry, e.g. linear, 
                                            # branched, cross-linked, network or 
                                            # dendritic 
    fhir:copolymerConnectivity @<OneOrMore_CodeableConcept>?;  # Descrtibes the copolymer sequence 
                                            # type (polymer connectivity) 
    fhir:modification @<string>?;           # Todo - this is intended to connect 
                                            # to a repeating full modification 
                                            # structure, also used by Protein 
                                            # and Nucleic Acid . String is just 
                                            # a placeholder 
    fhir:monomerSet @<OneOrMore_SubstancePolymer.monomerSet>?;  # Todo
    fhir:repeat @<OneOrMore_SubstancePolymer.repeat>?;  # Specifies and quantifies the 
                                            # repeated units and their 
                                            # configuration 
}  

# A graphical structure for this SRU
<SubstancePolymer.repeat.repeatUnit.structuralRepresentation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>?;          # The type of structure (e.g. Full, 
                                            # Partial, Representative) 
    fhir:representation @<string>?;         # The structural representation as 
                                            # text string in a standard format 
                                            # e.g. InChI, SMILES, MOLFILE, CDX, 
                                            # SDF, PDB, mmCIF 
    fhir:format @<CodeableConcept>?;        # The format of the representation 
                                            # e.g. InChI, SMILES, MOLFILE, CDX, 
                                            # SDF, PDB, mmCIF 
    fhir:attachment @<Attachment>?;         # An attached file with the 
                                            # structural representation 
}  

# Todo
<SubstancePolymer.monomerSet> EXTENDS @<BackboneElement> CLOSED {   
    fhir:ratioType @<CodeableConcept>?;     # Captures the type of ratio to the 
                                            # entire polymer, e.g. 
                                            # Monomer/Polymer ratio, SRU/Polymer 
                                            # Ratio 
    fhir:startingMaterial @<OneOrMore_SubstancePolymer.monomerSet.startingMaterial>?;  # The starting materials - 
                                            # monomer(s) used in the synthesis 
                                            # of the polymer 
}  

# Specifies and quantifies the repeated units and their configuration
<SubstancePolymer.repeat> EXTENDS @<BackboneElement> CLOSED {   
    fhir:averageMolecularFormula @<string>?;  # A representation of an (average) 
                                            # molecular formula from a polymer 
    fhir:repeatUnitAmountType @<CodeableConcept>?;  # How the quantitative amount of 
                                            # Structural Repeat Units is 
                                            # captured (e.g. Exact, Numeric, 
                                            # Average) 
    fhir:repeatUnit @<OneOrMore_SubstancePolymer.repeat.repeatUnit>?;  # An SRU - Structural Repeat Unit
}  

# An SRU - Structural Repeat Unit
<SubstancePolymer.repeat.repeatUnit> EXTENDS @<BackboneElement> CLOSED {   
    fhir:unit @<string>?;                   # Structural repeat units are 
                                            # essential elements for defining 
                                            # polymers 
    fhir:orientation @<CodeableConcept>?;   # The orientation of the 
                                            # polymerisation, e.g. head-tail, 
                                            # head-head, random 
    fhir:amount @<integer>?;                # Number of repeats of this unit
    fhir:degreeOfPolymerisation @<OneOrMore_SubstancePolymer.repeat.repeatUnit.degreeOfPolymerisation>?;  # Applies to homopolymer and block 
                                            # co-polymers where the degree of 
                                            # polymerisation within a block can 
                                            # be described 
    fhir:structuralRepresentation @<OneOrMore_SubstancePolymer.repeat.repeatUnit.structuralRepresentation>?;  # A graphical structure for this SRU
}  

# The starting materials - monomer(s) used in the synthesis of the polymer
<SubstancePolymer.monomerSet.startingMaterial> EXTENDS @<BackboneElement> CLOSED {   
    fhir:code @<CodeableConcept>?;          # The type of substance for this 
                                            # starting material 
    fhir:category @<CodeableConcept>?;      # Substance high level category, 
                                            # e.g. chemical substance 
    fhir:isDefining @<boolean>?;            # Used to specify whether the 
                                            # attribute described is a defining 
                                            # element for the unique 
                                            # identification of the polymer 
    fhir:amount @<Quantity>?;               # A percentage
}  

# Applies to homopolymer and block co-polymers where the degree of polymerisation within a block can be described
<SubstancePolymer.repeat.repeatUnit.degreeOfPolymerisation> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>?;          # The type of the degree of 
                                            # polymerisation shall be described, 
                                            # e.g. SRU/Polymer Ratio 
    fhir:average @<integer>?;               # An average amount of polymerisation
    fhir:low @<integer>?;                   # A low expected limit of the amount
    fhir:high @<integer>?;                  # A high expected limit of the amount
}  

#---------------------- Cardinality Types (OneOrMore) -------------------

<OneOrMore_CodeableConcept> CLOSED {
    rdf:first @<CodeableConcept>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> 
}

<OneOrMore_SubstancePolymer.monomerSet> CLOSED {
    rdf:first @<SubstancePolymer.monomerSet>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.monomerSet> 
}

<OneOrMore_SubstancePolymer.repeat> CLOSED {
    rdf:first @<SubstancePolymer.repeat>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.repeat> 
}

<OneOrMore_SubstancePolymer.monomerSet.startingMaterial> CLOSED {
    rdf:first @<SubstancePolymer.monomerSet.startingMaterial>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.monomerSet.startingMaterial> 
}

<OneOrMore_SubstancePolymer.repeat.repeatUnit> CLOSED {
    rdf:first @<SubstancePolymer.repeat.repeatUnit>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.repeat.repeatUnit> 
}

<OneOrMore_SubstancePolymer.repeat.repeatUnit.degreeOfPolymerisation> CLOSED {
    rdf:first @<SubstancePolymer.repeat.repeatUnit.degreeOfPolymerisation>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.repeat.repeatUnit.degreeOfPolymerisation> 
}

<OneOrMore_SubstancePolymer.repeat.repeatUnit.structuralRepresentation> CLOSED {
    rdf:first @<SubstancePolymer.repeat.repeatUnit.structuralRepresentation>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_SubstancePolymer.repeat.repeatUnit.structuralRepresentation> 
}


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.