R6 Ballot (2nd Draft)

Publish-box (todo)

Immunization.shex

Public Health Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Patient, Practitioner

Raw ShEx

ShEx statement for immunization

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 <date.shex>
IMPORT <string.shex>
IMPORT <Patient.shex>
IMPORT <boolean.shex>
IMPORT <dateTime.shex>
IMPORT <Location.shex>
IMPORT <Quantity.shex>
IMPORT <CarePlan.shex>
IMPORT <Resource.shex>
IMPORT <Reference.shex>
IMPORT <Encounter.shex>
IMPORT <Identifier.shex>
IMPORT <Annotation.shex>
IMPORT <Organization.shex>
IMPORT <Practitioner.shex>
IMPORT <RelatedPerson.shex>
IMPORT <DomainResource.shex>
IMPORT <ServiceRequest.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <CodeableReference.shex>
IMPORT <MedicationRequest.shex>


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

# Immunization event information
<Immunization> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Business identifier
    fhir:basedOn @<OneOrMore_Reference_CarePlan_OR_ImmunizationRecommendation_OR_MedicationRequest_OR_ServiceRequest>?;  # Authority that the immunization 
                                            # event is based on 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:immunization-status};  # completed | entered-in-error | 
                                            # not-done 
    fhir:statusReason @<CodeableConcept>?;  # Reason for current status
    fhir:vaccineCode @<CodeableConcept>;    # Vaccine administered
    fhir:administeredProduct @<CodeableReference>?;  # Product that was administered
    fhir:manufacturer @<CodeableReference>?;  # Vaccine manufacturer
    fhir:lotNumber @<string>?;              # Vaccine lot number
    fhir:expirationDate @<date>?;           # Vaccine expiration date
    fhir:patient @<Reference> AND {fhir:link 
    			@<Patient> ? };  # Who was immunized
    fhir:encounter @<Reference> AND {fhir:link 
    			@<Encounter> ? }?;  # Encounter immunization was part of
    fhir:supportingInformation @<OneOrMore_Reference_Resource>?;  # Additional information in support 
                                            # of the immunization 
    fhir:occurrence @<dateTime>  OR 
    			@<string>  ;  # Vaccine administration date
    fhir:primarySource @<boolean>?;         # Indicates context the data was 
                                            # captured in 
    fhir:informationSource @<CodeableReference>?;  # Indicates the source of a  
                                            # reported record 
    fhir:location @<Reference> AND {fhir:link 
    			@<Location> ? }?;  # The service delivery location
    fhir:site @<CodeableConcept>?;          # Body site vaccine  was administered
    fhir:route @<CodeableConcept>?;         # How vaccine entered body
    fhir:doseQuantity @<Quantity>?;         # Amount of vaccine administered
    fhir:performer @<OneOrMore_Immunization.performer>?;  # Who performed event
    fhir:note @<OneOrMore_Annotation>?;     # Additional immunization notes
    fhir:reason @<OneOrMore_CodeableReference>?;  # Why immunization occurred
    fhir:isSubpotent @<boolean>?;           # Dose potency
    fhir:subpotentReason @<OneOrMore_CodeableConcept>?;  # Reason for being subpotent
    fhir:programEligibility @<OneOrMore_Immunization.programEligibility>?;  # Patient eligibility for a specific 
                                            # vaccination program 
    fhir:fundingSource @<CodeableConcept>?;  # Funding source for the vaccine
    fhir:reaction @<OneOrMore_Immunization.reaction>?;  # Details of a reaction that follows 
                                            # immunization 
    fhir:protocolApplied @<OneOrMore_Immunization.protocolApplied>?;  # Protocol followed by the provider
}  

# Details of a reaction that follows immunization
<Immunization.reaction> EXTENDS @<BackboneElement> CLOSED {   
    fhir:date @<dateTime>?;                 # When reaction started
    fhir:manifestation @<CodeableReference>?;  # Additional information on reaction
    fhir:reported @<boolean>?;              # Indicates self-reported reaction
}  

# Protocol followed by the provider
<Immunization.protocolApplied> EXTENDS @<BackboneElement> CLOSED {   
    fhir:series @<string>?;                 # Name of vaccine series
    fhir:authority @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Who is responsible for publishing 
                                            # the recommendations 
    fhir:targetDisease @<OneOrMore_CodeableConcept>?;  # Vaccine preventatable disease 
                                            # being targeted 
    fhir:doseNumber @<string>?;             # Dose number within series
    fhir:seriesDoses @<string>?;            # Recommended number of doses for 
                                            # immunity 
}  

# Patient eligibility for a specific vaccination program
<Immunization.programEligibility> EXTENDS @<BackboneElement> CLOSED {   
    fhir:program @<CodeableConcept>;        # The program that eligibility is 
                                            # declared for 
    fhir:programStatus @<CodeableConcept>;  # The patient's eligibility status 
                                            # for the program 
}  

# Who performed event
<Immunization.performer> EXTENDS @<BackboneElement> CLOSED {   
    fhir:function @<CodeableConcept>?;      # What type of performance was done
    fhir:actor @<Reference> AND {fhir:link 
    			@<Organization> OR 
    			@<Patient> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> OR 
    			@<RelatedPerson> ? };  # Individual or organization who was 
                                            # performing 
}  

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

<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}

<OneOrMore_Reference_CarePlan_OR_ImmunizationRecommendation_OR_MedicationRequest_OR_ServiceRequest> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<CarePlan> OR 
			@<ImmunizationRecommendation> OR 
			@<MedicationRequest> OR 
			@<ServiceRequest> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_CarePlan_OR_ImmunizationRecommendation_OR_MedicationRequest_OR_ServiceRequest> 
}

<OneOrMore_Reference_Resource> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<Resource> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_Resource> 
}

<OneOrMore_Immunization.performer> CLOSED {
    rdf:first @<Immunization.performer>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Immunization.performer> 
}

<OneOrMore_Annotation> CLOSED {
    rdf:first @<Annotation>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Annotation> 
}

<OneOrMore_CodeableReference> CLOSED {
    rdf:first @<CodeableReference>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableReference> 
}

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

<OneOrMore_Immunization.programEligibility> CLOSED {
    rdf:first @<Immunization.programEligibility>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Immunization.programEligibility> 
}

<OneOrMore_Immunization.reaction> CLOSED {
    rdf:first @<Immunization.reaction>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Immunization.reaction> 
}

<OneOrMore_Immunization.protocolApplied> CLOSED {
    rdf:first @<Immunization.protocolApplied>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Immunization.protocolApplied> 
}

#---------------------- Value Sets ------------------------

# The value set to instantiate this attribute should be drawn from a terminologically robust code system that consists of or contains concepts to support describing the current status of the administered dose of vaccine.
fhirvs:immunization-status ["completed" "entered-in-error" "not-done"]


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.