R6 Ballot (2nd Draft)

Publish-box (todo)

Claimresponse.shex

Financial Management Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Patient, Practitioner

Raw ShEx

ShEx statement for claimresponse

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 <Claim.shex>
IMPORT <Money.shex>
IMPORT <string.shex>
IMPORT <Period.shex>
IMPORT <Patient.shex>
IMPORT <decimal.shex>
IMPORT <boolean.shex>
IMPORT <Address.shex>
IMPORT <dateTime.shex>
IMPORT <Quantity.shex>
IMPORT <Coverage.shex>
IMPORT <Location.shex>
IMPORT <Reference.shex>
IMPORT <Encounter.shex>
IMPORT <Identifier.shex>
IMPORT <Attachment.shex>
IMPORT <positiveInt.shex>
IMPORT <Organization.shex>
IMPORT <Practitioner.shex>
IMPORT <DeviceRequest.shex>
IMPORT <SupplyRequest.shex>
IMPORT <DomainResource.shex>
IMPORT <NutritionOrder.shex>
IMPORT <ServiceRequest.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <CodeableReference.shex>
IMPORT <MedicationRequest.shex>
IMPORT <VisionPrescription.shex>
IMPORT <CommunicationRequest.shex>


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

# Response to a claim predetermination or preauthorization
<ClaimResponse> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Business Identifier for a claim 
                                            # response 
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:status @<code> AND
    	{fhir:v @fhirvs:fm-status};  # active | cancelled | draft | 
                                            # entered-in-error 
    fhir:type @<CodeableConcept>;           # More granular claim type
    fhir:subType @<CodeableConcept>?;       # More granular claim type
    fhir:use @<code> AND
    	{fhir:v @fhirvs:claim-use};  # claim | preauthorization | 
                                            # predetermination 
    fhir:patient @<Reference> AND {fhir:link 
    			@<Patient> ? };  # The recipient of the products and 
                                            # services 
    fhir:created @<dateTime>;               # Response creation date
    fhir:insurer @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Party responsible for reimbursement
    fhir:requestor @<Reference> AND {fhir:link 
    			@<Organization> OR 
    			@<Practitioner> OR 
    			@<PractitionerRole> ? }?;  # Party responsible for the claim
    fhir:request @<Reference> AND {fhir:link 
    			@<Claim> ? }?;  # Id of resource triggering 
                                            # adjudication 
    fhir:outcome @<code> AND
    	{fhir:v @fhirvs:claim-outcome};  # queued | complete | error | partial
    fhir:decision @<CodeableConcept>?;      # Result of the adjudication
    fhir:disposition @<string>?;            # Disposition Message
    fhir:preAuthRef @<string>?;             # Preauthorization reference
    fhir:preAuthPeriod @<Period>?;          # Preauthorization reference 
                                            # effective period 
    fhir:event @<OneOrMore_ClaimResponse.event>?;  # Event information
    fhir:payeeType @<CodeableConcept>?;     # Party to be paid any benefits 
                                            # payable 
    fhir:encounter @<OneOrMore_Reference_Encounter>?;  # Encounters associated with the 
                                            # listed treatments 
    fhir:diagnosisRelatedGroup @<CodeableConcept>?;  # Package billing code
    fhir:item @<OneOrMore_ClaimResponse.item>?;  # Adjudication for claim line items
    fhir:addItem @<OneOrMore_ClaimResponse.addItem>?;  # Insurer added line items
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Header-level adjudication
    fhir:total @<OneOrMore_ClaimResponse.total>?;  # Adjudication totals
    fhir:payment @<ClaimResponse.payment>?;  # Payment Details
    fhir:fundsReserve @<CodeableConcept>?;  # Funds reserved status
    fhir:formCode @<CodeableConcept>?;      # Printed form identifier
    fhir:form @<Attachment>?;               # Printed reference or actual form
    fhir:processNote @<OneOrMore_ClaimResponse.processNote>?;  # Note concerning adjudication
    fhir:communicationRequest @<OneOrMore_Reference_CommunicationRequest>?;  # Request for additional information
    fhir:insurance @<OneOrMore_ClaimResponse.insurance>?;  # Patient insurance information
    fhir:error @<OneOrMore_ClaimResponse.error>?;  # Processing errors
}  

# Adjudication for claim details
<ClaimResponse.item.detail> EXTENDS @<BackboneElement> CLOSED {   
    fhir:detailSequence @<positiveInt>;     # Claim detail instance identifier
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Detail level adjudication results
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Detail level adjudication details
    fhir:subDetail @<OneOrMore_ClaimResponse.item.detail.subDetail>?;  # Adjudication for claim sub-details
}  

# Adjudication totals
<ClaimResponse.total> EXTENDS @<BackboneElement> CLOSED {   
    fhir:category @<CodeableConcept>;       # Type of adjudication information
    fhir:amount @<Money>;                   # Financial total for the category
}  

# Event information
<ClaimResponse.event> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>;           # Specific event
    fhir:when @<dateTime>  OR 
    			@<Period>  ;  # Occurance date or period
}  

# Note concerning adjudication
<ClaimResponse.processNote> EXTENDS @<BackboneElement> CLOSED {   
    fhir:number @<positiveInt>?;            # Note instance identifier
    fhir:type @<CodeableConcept>?;          # Note purpose
    fhir:text @<string>;                    # Note explanatory text
    fhir:language @<CodeableConcept>?;      # Language of the text
}  

# Adjudication details
<ClaimResponse.item.adjudication> EXTENDS @<BackboneElement> CLOSED {   
    fhir:category @<CodeableConcept>;       # Type of adjudication information
    fhir:reason @<CodeableConcept>?;        # Explanation of adjudication outcome
    fhir:amount @<Money>?;                  # Monetary amount
    fhir:quantity @<Quantity>?;             # Non-monetary value
}  

# Adjudication for claim sub-details
<ClaimResponse.item.detail.subDetail> EXTENDS @<BackboneElement> CLOSED {   
    fhir:subDetailSequence @<positiveInt>;  # Claim sub-detail instance 
                                            # identifier 
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Subdetail level adjudication 
                                            # results 
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Subdetail level adjudication 
                                            # details 
}  

# Insurer added line details
<ClaimResponse.addItem.detail> EXTENDS @<BackboneElement> CLOSED {   
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:revenue @<CodeableConcept>?;       # Revenue or cost center code
    fhir:productOrService @<CodeableConcept>?;  # Billing, service, product, or drug 
                                            # code 
    fhir:productOrServiceEnd @<CodeableConcept>?;  # End of a range of codes
    fhir:modifier @<OneOrMore_CodeableConcept>?;  # Service/Product billing modifiers
    fhir:quantity @<Quantity>?;             # Count of products or services
    fhir:unitPrice @<Money>?;               # Fee, charge or cost per item
    fhir:factor @<decimal>?;                # Price scaling factor
    fhir:tax @<Money>?;                     # Total tax
    fhir:net @<Money>?;                     # Total item cost
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Added items detail level 
                                            # adjudication results 
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Added items detail adjudication
    fhir:subDetail @<OneOrMore_ClaimResponse.addItem.detail.subDetail>?;  # Insurer added line items
}  

# Payment Details
<ClaimResponse.payment> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>;           # Partial or complete payment
    fhir:adjustment @<Money>?;              # Payment adjustment for non-claim 
                                            # issues 
    fhir:adjustmentReason @<CodeableConcept>?;  # Explanation for the adjustment
    fhir:date @<date>?;                     # Expected date of payment
    fhir:amount @<Money>;                   # Payable amount after adjustment
    fhir:identifier @<Identifier>?;         # Business identifier for the payment
}  

# Adjudication for claim line items
<ClaimResponse.item> EXTENDS @<BackboneElement> CLOSED {   
    fhir:itemSequence @<positiveInt>;       # Claim item instance identifier
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Adjudication results
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Adjudication details
    fhir:detail @<OneOrMore_ClaimResponse.item.detail>?;  # Adjudication for claim details
}  

# Patient insurance information
<ClaimResponse.insurance> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequence @<positiveInt>;           # Insurance instance identifier
    fhir:focal @<boolean>;                  # Coverage to be used for 
                                            # adjudication 
    fhir:coverage @<Reference> AND {fhir:link 
    			@<Coverage> ? };  # Insurance information
    fhir:businessArrangement @<string>?;    # Additional provider contract number
    fhir:claimResponse @<Reference> AND {fhir:link 
    			@<ClaimResponse> ? }?;  # Adjudication results
}  

# Adjudication results
<ClaimResponse.item.reviewOutcome> EXTENDS @<BackboneElement> CLOSED {   
    fhir:decision @<CodeableConcept>?;      # Result of the adjudication
    fhir:reason @<OneOrMore_CodeableConcept>?;  # Reason for result of the 
                                            # adjudication 
    fhir:preAuthRef @<string>?;             # Preauthorization reference
    fhir:preAuthPeriod @<Period>?;          # Preauthorization reference 
                                            # effective period 
}  

# Insurer added line items
<ClaimResponse.addItem> EXTENDS @<BackboneElement> CLOSED {   
    fhir:itemSequence @<OneOrMore_positiveInt>?;  # Item sequence number
    fhir:detailSequence @<OneOrMore_positiveInt>?;  # Detail sequence number
    fhir:subdetailSequence @<OneOrMore_positiveInt>?;  # Subdetail sequence number
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:provider @<OneOrMore_Reference_Organization_OR_Practitioner_OR_PractitionerRole>?;  # Authorized providers
    fhir:revenue @<CodeableConcept>?;       # Revenue or cost center code
    fhir:productOrService @<CodeableConcept>?;  # Billing, service, product, or drug 
                                            # code 
    fhir:productOrServiceEnd @<CodeableConcept>?;  # End of a range of codes
    fhir:request @<OneOrMore_Reference_DeviceRequest_OR_MedicationRequest_OR_NutritionOrder_OR_ServiceRequest_OR_SupplyRequest_OR_VisionPrescription>?;  # Request or Referral for Service
    fhir:modifier @<OneOrMore_CodeableConcept>?;  # Service/Product billing modifiers
    fhir:programCode @<OneOrMore_CodeableConcept>?;  # Program the product or service is 
                                            # provided under 
    fhir:serviced @<date>  OR 
    			@<Period>  ?;  # Date or dates of service or 
                                            # product delivery 
    fhir:location @<CodeableConcept>  OR 
    			@<Address>  OR 
    			(@<Reference>  AND {fhir:link @<Location> })  ?;  # Place of service or where product 
                                            # was supplied 
    fhir:quantity @<Quantity>?;             # Count of products or services
    fhir:unitPrice @<Money>?;               # Fee, charge or cost per item
    fhir:factor @<decimal>?;                # Price scaling factor
    fhir:tax @<Money>?;                     # Total tax
    fhir:net @<Money>?;                     # Total item cost
    fhir:bodySite @<OneOrMore_ClaimResponse.addItem.bodySite>?;  # Anatomical location
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Added items adjudication results
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Added items adjudication
    fhir:detail @<OneOrMore_ClaimResponse.addItem.detail>?;  # Insurer added line details
}  

# Anatomical location
<ClaimResponse.addItem.bodySite> EXTENDS @<BackboneElement> CLOSED {   
    fhir:site @<OneOrMore_CodeableReference>;  # Location
    fhir:subSite @<OneOrMore_CodeableConcept>?;  # Sub-location
}  

# Processing errors
<ClaimResponse.error> EXTENDS @<BackboneElement> CLOSED {   
    fhir:itemSequence @<positiveInt>?;      # Item sequence number
    fhir:detailSequence @<positiveInt>?;    # Detail sequence number
    fhir:subDetailSequence @<positiveInt>?;  # Subdetail sequence number
    fhir:code @<CodeableConcept>;           # Error code detailing processing 
                                            # issues 
    fhir:expression @<OneOrMore_string>?;   # FHIRPath of element(s) related to 
                                            # issue 
}  

# Insurer added line items
<ClaimResponse.addItem.detail.subDetail> EXTENDS @<BackboneElement> CLOSED {   
    fhir:traceNumber @<OneOrMore_Identifier>?;  # Number for tracking
    fhir:revenue @<CodeableConcept>?;       # Revenue or cost center code
    fhir:productOrService @<CodeableConcept>?;  # Billing, service, product, or drug 
                                            # code 
    fhir:productOrServiceEnd @<CodeableConcept>?;  # End of a range of codes
    fhir:modifier @<OneOrMore_CodeableConcept>?;  # Service/Product billing modifiers
    fhir:quantity @<Quantity>?;             # Count of products or services
    fhir:unitPrice @<Money>?;               # Fee, charge or cost per item
    fhir:factor @<decimal>?;                # Price scaling factor
    fhir:tax @<Money>?;                     # Total tax
    fhir:net @<Money>?;                     # Total item cost
    fhir:noteNumber @<OneOrMore_positiveInt>?;  # Applicable note numbers
    fhir:reviewOutcome @<ClaimResponse.item.reviewOutcome>?;  # Added items subdetail level 
                                            # adjudication results 
    fhir:adjudication @<OneOrMore_ClaimResponse.item.adjudication>?;  # Added items subdetail adjudication
}  

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

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

<OneOrMore_ClaimResponse.event> CLOSED {
    rdf:first @<ClaimResponse.event>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.event> 
}

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

<OneOrMore_ClaimResponse.item> CLOSED {
    rdf:first @<ClaimResponse.item>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.item> 
}

<OneOrMore_ClaimResponse.addItem> CLOSED {
    rdf:first @<ClaimResponse.addItem>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.addItem> 
}

<OneOrMore_ClaimResponse.item.adjudication> CLOSED {
    rdf:first @<ClaimResponse.item.adjudication>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.item.adjudication> 
}

<OneOrMore_ClaimResponse.total> CLOSED {
    rdf:first @<ClaimResponse.total>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.total> 
}

<OneOrMore_ClaimResponse.processNote> CLOSED {
    rdf:first @<ClaimResponse.processNote>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.processNote> 
}

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

<OneOrMore_ClaimResponse.insurance> CLOSED {
    rdf:first @<ClaimResponse.insurance>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.insurance> 
}

<OneOrMore_ClaimResponse.error> CLOSED {
    rdf:first @<ClaimResponse.error>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.error> 
}

<OneOrMore_positiveInt> CLOSED {
    rdf:first @<positiveInt>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_positiveInt> 
}

<OneOrMore_ClaimResponse.item.detail.subDetail> CLOSED {
    rdf:first @<ClaimResponse.item.detail.subDetail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.item.detail.subDetail> 
}

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

<OneOrMore_ClaimResponse.addItem.detail.subDetail> CLOSED {
    rdf:first @<ClaimResponse.addItem.detail.subDetail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.addItem.detail.subDetail> 
}

<OneOrMore_ClaimResponse.item.detail> CLOSED {
    rdf:first @<ClaimResponse.item.detail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.item.detail> 
}

<OneOrMore_Reference_Organization_OR_Practitioner_OR_PractitionerRole> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<Organization> OR 
			@<Practitioner> OR 
			@<PractitionerRole> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_Organization_OR_Practitioner_OR_PractitionerRole> 
}

<OneOrMore_Reference_DeviceRequest_OR_MedicationRequest_OR_NutritionOrder_OR_ServiceRequest_OR_SupplyRequest_OR_VisionPrescription> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<DeviceRequest> OR 
			@<MedicationRequest> OR 
			@<NutritionOrder> OR 
			@<ServiceRequest> OR 
			@<SupplyRequest> OR 
			@<VisionPrescription> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_DeviceRequest_OR_MedicationRequest_OR_NutritionOrder_OR_ServiceRequest_OR_SupplyRequest_OR_VisionPrescription> 
}

<OneOrMore_ClaimResponse.addItem.bodySite> CLOSED {
    rdf:first @<ClaimResponse.addItem.bodySite>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.addItem.bodySite> 
}

<OneOrMore_ClaimResponse.addItem.detail> CLOSED {
    rdf:first @<ClaimResponse.addItem.detail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ClaimResponse.addItem.detail> 
}

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

<OneOrMore_string> CLOSED {
    rdf:first @<string>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_string> 
}

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

# This value set includes Claim Processing Outcome codes.
fhirvs:claim-outcome ["queued" "complete" "error" "partial"]

# The purpose of the Claim: predetermination, preauthorization, claim.
fhirvs:claim-use ["claim" "preauthorization" "predetermination"]

# This value set includes Status codes.
fhirvs:fm-status ["active" "cancelled" "draft" "entered-in-error"]


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.