R6 Ballot (2nd Draft)

Publish-box (todo)

Chargeitem.shex

Patient Administration Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Device, Encounter, Patient, Practitioner, RelatedPerson

Raw ShEx

ShEx statement for chargeitem

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 <uri.shex>
IMPORT <code.shex>
IMPORT <Group.shex>
IMPORT <Period.shex>
IMPORT <Timing.shex>
IMPORT <Device.shex>
IMPORT <Patient.shex>
IMPORT <Account.shex>
IMPORT <dateTime.shex>
IMPORT <Quantity.shex>
IMPORT <CareTeam.shex>
IMPORT <Resource.shex>
IMPORT <canonical.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 <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <MonetaryComponent.shex>
IMPORT <CodeableReference.shex>
IMPORT <HealthcareService.shex>


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

# Item containing charge code(s) associated with the provision of healthcare provider products
<ChargeItem> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Business Identifier for item
    fhir:definitionUri @<OneOrMore_uri>?;   # Defining information about the 
                                            # code of this charge item 
    fhir:definitionCanonical @<OneOrMore_canonical>?;  # Resource defining the code of this 
                                            # ChargeItem 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:chargeitem-status};  # planned | billable | not-billable 
                                            # | aborted | billed | 
                                            # entered-in-error | unknown 
    fhir:partOf @<OneOrMore_Reference_ChargeItem>?;  # Part of referenced ChargeItem
    fhir:code @<CodeableConcept>;           # A code that identifies the charge, 
                                            # like a billing code 
    fhir:subject @<Reference> AND {fhir:link 
    			@<Group> OR 
    			@<Patient> ? };  # Individual service was done for/to
    fhir:encounter @<Reference> AND {fhir:link 
    			@<Encounter> ? }?;  # Encounter associated with this 
                                            # ChargeItem 
    fhir:occurrence @<dateTime>  OR 
    			@<Period>  OR 
    			@<Timing>  ?;  # When the charged service was 
                                            # applied 
    fhir:performer @<OneOrMore_ChargeItem.performer>?;  # Who performed charged service
    fhir:performingOrganization @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Organization providing the charged 
                                            # service 
    fhir:requestingOrganization @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Organization requesting the 
                                            # charged service 
    fhir:costCenter @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Organization that has ownership of 
                                            # the (potential, future) revenue 
    fhir:quantity @<Quantity>?;             # Quantity of which the charge item 
                                            # has been serviced 
    fhir:bodysite @<OneOrMore_CodeableConcept>?;  # Anatomical location, if relevant
    fhir:unitPriceComponent @<MonetaryComponent>?;  # Unit price overriding the 
                                            # associated rules 
    fhir:totalPriceComponent @<MonetaryComponent>?;  # Total price overriding the 
                                            # associated rules 
    fhir:overrideReason @<CodeableConcept>?;  # Reason for overriding the list 
                                            # price/factor 
    fhir:enterer @<Reference> AND {fhir:link 
    			@<Device> OR 
    			@<Organization> OR 
    			@<Patient> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> OR 
    			@<RelatedPerson> ? }?;  # Individual who was entering
    fhir:enteredDate @<dateTime>?;          # Date the charge item was entered
    fhir:reason @<OneOrMore_CodeableReference>?;  # Why was the charged  service 
                                            # rendered? 
    fhir:service @<OneOrMore_CodeableReference>?;  # Which rendered service is being 
                                            # charged? 
    fhir:product @<OneOrMore_CodeableReference>?;  # Product charged
    fhir:account @<OneOrMore_Reference_Account>?;  # Account to place this charge
    fhir:note @<OneOrMore_Annotation>?;     # Comments made about the ChargeItem
    fhir:supportingInformation @<OneOrMore_Reference_Resource>?;  # Further information supporting 
                                            # this charge 
}  

# Who performed charged service
<ChargeItem.performer> EXTENDS @<BackboneElement> CLOSED {   
    fhir:function @<CodeableConcept>?;      # What type of performance was done
    fhir:actor @<Reference> AND {fhir:link 
    			@<CareTeam> OR 
    			@<Device> OR 
    			@<HealthcareService> OR 
    			@<Organization> OR 
    			@<Patient> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> OR 
    			@<RelatedPerson> ? };  # Individual who was performing
}  

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

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

<OneOrMore_uri> CLOSED {
    rdf:first @<uri>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_uri> 
}

<OneOrMore_canonical> CLOSED {
    rdf:first @<canonical>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_canonical> 
}

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

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

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

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

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

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

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

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

# Codes identifying the lifecycle stage of a ChargeItem.
fhirvs:chargeitem-status ["planned" "billable" "not-billable" "aborted" "billed" "entered-in-error" "unknown"]


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.