R6 Ballot (2nd Draft)

Publish-box (todo)

Measurereport.shex

Clinical Quality Information Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Patient

Raw ShEx

ShEx statement for measurereport

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 <List.shex>
IMPORT <Group.shex>
IMPORT <Range.shex>
IMPORT <Device.shex>
IMPORT <Period.shex>
IMPORT <string.shex>
IMPORT <Patient.shex>
IMPORT <boolean.shex>
IMPORT <integer.shex>
IMPORT <CareTeam.shex>
IMPORT <Location.shex>
IMPORT <dateTime.shex>
IMPORT <Quantity.shex>
IMPORT <Duration.shex>
IMPORT <Resource.shex>
IMPORT <canonical.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <Parameters.shex>
IMPORT <Organization.shex>
IMPORT <Practitioner.shex>
IMPORT <RelatedPerson.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <HealthcareService.shex>


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

# Results of a measure evaluation
<MeasureReport> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Additional identifier for the 
                                            # MeasureReport 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:measure-report-status};  # complete | pending | error
    fhir:type @<code> AND
    	{fhir:v @fhirvs:measure-report-type};  # individual | subject-list | 
                                            # summary | data-exchange 
    fhir:dataUpdateType @<code> AND
    	{fhir:v @fhirvs:submit-data-update-type}?;  # incremental | snapshot
    fhir:measure @<canonical>?;             # What measure was calculated
    fhir:subject @<Reference> AND {fhir:link 
    			@<CareTeam> OR 
    			@<Device> OR 
    			@<Group> OR 
    			@<HealthcareService> OR 
    			@<Location> OR 
    			@<Organization> OR 
    			@<Patient> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> OR 
    			@<RelatedPerson> ? }?;  # What individual(s) the report is 
                                            # for 
    fhir:date @<dateTime>?;                 # When the measure was calculated
    fhir:reporter @<Reference> AND {fhir:link 
    			@<Group> OR 
    			@<Organization> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> ? }?;  # Who is reporting the data
    fhir:reportingVendor @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # What vendor prepared the data
    fhir:location @<Reference> AND {fhir:link 
    			@<Location> ? }?;  # Where the reported data is from
    fhir:period @<Period>;                  # What period the report covers
    fhir:inputParameters @<Reference> AND {fhir:link 
    			@<Parameters> ? }?;  # What parameters were provided to 
                                            # the report 
    fhir:scoring @<CodeableConcept>?;       # What scoring method (e.g. 
                                            # proportion, ratio, 
                                            # continuous-variable) 
    fhir:improvementNotation @<CodeableConcept>?;  # increase | decrease
    fhir:group @<OneOrMore_MeasureReport.group>?;  # Measure results for each group
    fhir:supplementalData @<OneOrMore_Reference_Resource>?;  # Additional information collected 
                                            # for the report 
    fhir:evaluatedResource @<OneOrMore_Reference_Resource>?;  # What data was used to calculate 
                                            # the measure score 
}  

# Stratum results, one for each unique value, or set of values, in the stratifier, or stratifier components
<MeasureReport.group.stratifier.stratum> EXTENDS @<BackboneElement> CLOSED {   
    fhir:value @<CodeableConcept>  OR 
    			@<boolean>  OR 
    			@<Quantity>  OR 
    			@<Range>  OR 
    			@<Reference>  ?;  # The stratum value, e.g. male
    fhir:component @<OneOrMore_MeasureReport.group.stratifier.stratum.component>?;  # Stratifier component values
    fhir:population @<OneOrMore_MeasureReport.group.stratifier.stratum.population>?;  # Population results in this stratum
    fhir:measureScore @<Quantity>  OR 
    			@<dateTime>  OR 
    			@<CodeableConcept>  OR 
    			@<Period>  OR 
    			@<Range>  OR 
    			@<Duration>  ?;  # What score this stratum achieved
}  

# Stratifier component values
<MeasureReport.group.stratifier.stratum.component> EXTENDS @<BackboneElement> CLOSED {   
    fhir:linkId @<string>?;                 # Pointer to specific stratifier 
                                            # component from Measure 
    fhir:code @<CodeableConcept>;           # What stratifier component of the 
                                            # group 
    fhir:value @<CodeableConcept>  OR 
    			@<boolean>  OR 
    			@<Quantity>  OR 
    			@<Range>  OR 
    			@<Reference>  ;  # The stratum component value, e.g. 
                                            # male 
}  

# The populations in the group
<MeasureReport.group.population> EXTENDS @<BackboneElement> CLOSED {   
    fhir:linkId @<string>?;                 # Pointer to specific population 
                                            # from Measure 
    fhir:code @<CodeableConcept>?;          # initial-population | numerator | 
                                            # numerator-exclusion | denominator 
                                            # | denominator-exclusion | 
                                            # denominator-exception | 
                                            # measure-population | 
                                            # measure-population-exclusion | 
                                            # measure-observation 
    fhir:count @<integer>?;                 # Size of the population
    fhir:subjectResults @<Reference> AND {fhir:link 
    			@<List> ? }?;  # For subject-list reports, the 
                                            # subject results in this population 
    fhir:subjectReport @<OneOrMore_Reference_MeasureReport>?;  # For subject-list reports, a 
                                            # subject result in this population 
    fhir:subjects @<Reference> AND {fhir:link 
    			@<Group> ? }?;  # What individual(s) in the 
                                            # population 
}  

# Measure results for each group
<MeasureReport.group> EXTENDS @<BackboneElement> CLOSED {   
    fhir:linkId @<string>?;                 # Pointer to specific group from 
                                            # Measure 
    fhir:code @<CodeableConcept>?;          # Meaning of the group
    fhir:subject @<Reference> AND {fhir:link 
    			@<CareTeam> OR 
    			@<Device> OR 
    			@<Group> OR 
    			@<HealthcareService> OR 
    			@<Location> OR 
    			@<Organization> OR 
    			@<Patient> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> OR 
    			@<RelatedPerson> ? }?;  # What individual(s) the report is 
                                            # for 
    fhir:population @<OneOrMore_MeasureReport.group.population>?;  # The populations in the group
    fhir:measureScore @<Quantity>  OR 
    			@<dateTime>  OR 
    			@<CodeableConcept>  OR 
    			@<Period>  OR 
    			@<Range>  OR 
    			@<Duration>  ?;  # What score this group achieved
    fhir:stratifier @<OneOrMore_MeasureReport.group.stratifier>?;  # Stratification results
}  

# Stratification results
<MeasureReport.group.stratifier> EXTENDS @<BackboneElement> CLOSED {   
    fhir:linkId @<string>?;                 # Pointer to specific stratifier 
                                            # from Measure 
    fhir:code @<CodeableConcept>?;          # What stratifier of the group
    fhir:stratum @<OneOrMore_MeasureReport.group.stratifier.stratum>?;  # Stratum results, one for each 
                                            # unique value, or set of values, in 
                                            # the stratifier, or stratifier 
                                            # components 
}  

# Population results in this stratum
<MeasureReport.group.stratifier.stratum.population> EXTENDS @<BackboneElement> CLOSED {   
    fhir:linkId @<string>?;                 # Pointer to specific population 
                                            # from Measure 
    fhir:code @<CodeableConcept>?;          # initial-population | numerator | 
                                            # numerator-exclusion | denominator 
                                            # | denominator-exclusion | 
                                            # denominator-exception | 
                                            # measure-population | 
                                            # measure-population-exclusion | 
                                            # measure-observation 
    fhir:count @<integer>?;                 # Size of the population
    fhir:subjectResults @<Reference> AND {fhir:link 
    			@<List> ? }?;  # For subject-list reports, the 
                                            # subject results in this population 
    fhir:subjectReport @<OneOrMore_Reference_MeasureReport>?;  # For subject-list reports, a 
                                            # subject result in this population 
    fhir:subjects @<Reference> AND {fhir:link 
    			@<Group> ? }?;  # What individual(s) in the 
                                            # population 
}  

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

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

<OneOrMore_MeasureReport.group> CLOSED {
    rdf:first @<MeasureReport.group>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group> 
}

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

<OneOrMore_MeasureReport.group.stratifier.stratum.component> CLOSED {
    rdf:first @<MeasureReport.group.stratifier.stratum.component>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group.stratifier.stratum.component> 
}

<OneOrMore_MeasureReport.group.stratifier.stratum.population> CLOSED {
    rdf:first @<MeasureReport.group.stratifier.stratum.population>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group.stratifier.stratum.population> 
}

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

<OneOrMore_MeasureReport.group.population> CLOSED {
    rdf:first @<MeasureReport.group.population>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group.population> 
}

<OneOrMore_MeasureReport.group.stratifier> CLOSED {
    rdf:first @<MeasureReport.group.stratifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group.stratifier> 
}

<OneOrMore_MeasureReport.group.stratifier.stratum> CLOSED {
    rdf:first @<MeasureReport.group.stratifier.stratum>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MeasureReport.group.stratifier.stratum> 
}

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

# The status of the measure report.
fhirvs:measure-report-status ["complete" "pending" "error"]

# The type of the measure report.
fhirvs:measure-report-type ["individual" "subject-list" "summary" "data-exchange"]

# Concepts for how a measure report consumer and receiver coordinate data exchange updates. The choices are snapshot or incremental updates
fhirvs:submit-data-update-type ["incremental" "snapshot"]


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.