STU 3 Ballot

This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3

Explanationofbenefit.shex

Raw ShEx

ShEx statement for explanationofbenefit

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
BASE <http://hl7.org/fhir/shape/>

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


# Explanation of Benefit resource
<ExplanationOfBenefit> CLOSED {
    a [fhir:ExplanationOfBenefit];
    fhir:nodeRole [fhir:treeRoot]?;
    fhir:Resource.id @<id>?;                # Logical id of this artifact
    fhir:Resource.meta @<Meta>?;            # Metadata about the resource
    fhir:Resource.implicitRules @<uri>?;    # A set of rules under which this 
                                            # content was created 
    fhir:Resource.language @<code>?;        # Language of the resource content
    fhir:DomainResource.text @<Narrative>?;  # Text summary of the resource, for 
                                            # human interpretation 
    fhir:DomainResource.contained @<Resource>*;  # Contained, inline Resources
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.identifier @<Identifier>*;  # Business Identifier
    fhir:ExplanationOfBenefit.status @<code> AND
    	{fhir:value @fhirvs:explanationofbenefit-status};  # active | cancelled | draft | 
                                            # entered-in-error 
    (                                       # Insurer
        fhir:ExplanationOfBenefit.authorIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.authorReference @<OrganizationReference> 
    )?;
    (                                       # Claim reference
        fhir:ExplanationOfBenefit.claimIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.claimReference @<ClaimReference> 
    )?;
    (                                       # Claim response reference
        fhir:ExplanationOfBenefit.claimResponseIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.claimResponseReference @<ClaimResponseReference> 
    )?;
    fhir:ExplanationOfBenefit.type @<Coding> AND
    	{fhir:value @fhirvs:claim-type};  # Type or discipline
    fhir:ExplanationOfBenefit.subType @<Coding>*;  # Finer grained claim type 
                                            # information 
    fhir:ExplanationOfBenefit.ruleset @<Coding>?;  # Current specification followed
    fhir:ExplanationOfBenefit.originalRuleset @<Coding>?;  # Original specification followed
    fhir:ExplanationOfBenefit.created @<dateTime>?;  # Creation date
    fhir:ExplanationOfBenefit.billablePeriod @<Period>?;  # Period for charge submission
    fhir:ExplanationOfBenefit.outcome @<Coding>?;  # complete | error | partial
    fhir:ExplanationOfBenefit.disposition @<string>?;  # Disposition Message
    (                                       # Responsible provider for the claim
        fhir:ExplanationOfBenefit.providerIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.providerReference @<PractitionerReference> 
    )?;
    (                                       # Responsible organization for the 
                                            # claim 
        fhir:ExplanationOfBenefit.organizationIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.organizationReference @<OrganizationReference> 
    )?;
    (                                       # Servicing Facility
        fhir:ExplanationOfBenefit.facilityIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.facilityReference @<LocationReference> 
    )?;
    fhir:ExplanationOfBenefit.related @<ExplanationOfBenefit.related>*;  # Related Claims which may be 
                                            # revelant to processing this claimn 
    (                                       # Prescription
        fhir:ExplanationOfBenefit.prescriptionIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.prescriptionReference @<MedicationOrderReference>  |
        fhir:ExplanationOfBenefit.prescriptionReference @<VisionPrescriptionReference> 
    )?;
    (                                       # Original Prescription
        fhir:ExplanationOfBenefit.originalPrescriptionIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.originalPrescriptionReference @<MedicationOrderReference> 
    )?;
    fhir:ExplanationOfBenefit.payee @<ExplanationOfBenefit.payee>?;  # Payee
    (                                       # Treatment Referral
        fhir:ExplanationOfBenefit.referralIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.referralReference @<ReferralRequestReference> 
    )?;
    fhir:ExplanationOfBenefit.information @<ExplanationOfBenefit.information>*; 
    fhir:ExplanationOfBenefit.diagnosis @<ExplanationOfBenefit.diagnosis>*;  # Diagnosis
    fhir:ExplanationOfBenefit.procedure @<ExplanationOfBenefit.procedure>*;  # Procedures performed
    (                                       # The subject of the Products and 
                                            # Services 
        fhir:ExplanationOfBenefit.patientIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.patientReference @<PatientReference> 
    );
    fhir:ExplanationOfBenefit.precedence @<positiveInt>?;  # Precedence (primary, secondary, 
                                            # etc.) 
    fhir:ExplanationOfBenefit.coverage @<ExplanationOfBenefit.coverage>;  # Insurance or medical plan
    fhir:ExplanationOfBenefit.accident @<ExplanationOfBenefit.accident>?; 
    fhir:ExplanationOfBenefit.employmentImpacted @<Period>?;  # Period unable to work
    fhir:ExplanationOfBenefit.hospitalization @<Period>?;  # Period in hospital
    fhir:ExplanationOfBenefit.item @<ExplanationOfBenefit.item>*;  # Goods and Services
    fhir:ExplanationOfBenefit.addItem @<ExplanationOfBenefit.addItem>*;  # Insurer added line items
    fhir:ExplanationOfBenefit.missingTeeth @<ExplanationOfBenefit.missingTeeth>*;  # Only if type = oral
    fhir:ExplanationOfBenefit.totalCost @<Money>?;  # Total Cost of service from the 
                                            # Claim 
    fhir:ExplanationOfBenefit.unallocDeductable @<Money>?;  # Unallocated deductable
    fhir:ExplanationOfBenefit.totalBenefit @<Money>?;  # Total benefit payable for the Claim
    fhir:ExplanationOfBenefit.payment @<ExplanationOfBenefit.payment>?; 
    fhir:ExplanationOfBenefit.form @<Coding> AND
    	{fhir:value @fhirvs:forms}?;  # Printed Form Identifier
    fhir:ExplanationOfBenefit.note @<ExplanationOfBenefit.note>*;  # Processing notes
    fhir:ExplanationOfBenefit.benefitBalance @<ExplanationOfBenefit.benefitBalance>*;  # Balance by Benefit Category
    fhir:index xsd:integer?                 # Relative position in a list
}

# Payee
<ExplanationOfBenefit.payee> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.payee.type @<Coding>?;  # Type of party: Subscriber, 
                                            # Provider, other 
    fhir:ExplanationOfBenefit.payee.resourceType @<Coding> AND
    	{fhir:value @fhirvs:resource-type-link}?;  # organization | patient | 
                                            # practitioner | relatedperson 
    (                                       # Party to receive the payable
        fhir:ExplanationOfBenefit.payee.partyIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<PractitionerReference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<OrganizationReference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<PatientReference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<RelatedPersonReference> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# Goods and Services
<ExplanationOfBenefit.item> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.item.sequence @<positiveInt>;  # Service instance
    fhir:ExplanationOfBenefit.item.careTeam @<ExplanationOfBenefit.item.careTeam>*; 
    fhir:ExplanationOfBenefit.item.diagnosisLinkId @<positiveInt>*;  # Applicable diagnoses
    fhir:ExplanationOfBenefit.item.revenue @<Coding>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.category @<Coding>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.service @<Coding>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.modifier @<Coding>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.programCode @<Coding>*;  # Program specific reason for item 
                                            # inclusion 
    (                                       # Date or dates of Service
        fhir:ExplanationOfBenefit.item.servicedDate @<date>  |
        fhir:ExplanationOfBenefit.item.servicedPeriod @<Period> 
    )?;
    (                                       # Place of service
        fhir:ExplanationOfBenefit.item.locationCoding @<Coding>  |
        fhir:ExplanationOfBenefit.item.locationAddress @<Address>  |
        fhir:ExplanationOfBenefit.item.locationReference @<LocationReference> 
    )?;
    fhir:ExplanationOfBenefit.item.quantity @<SimpleQuantity>?;  # Count of Products or Services
    fhir:ExplanationOfBenefit.item.unitPrice @<Money>?;  # Fee, charge or cost per point
    fhir:ExplanationOfBenefit.item.factor @<decimal>?;  # Price scaling factor
    fhir:ExplanationOfBenefit.item.points @<decimal>?;  # Difficulty scaling factor
    fhir:ExplanationOfBenefit.item.net @<Money>?;  # Total item cost
    fhir:ExplanationOfBenefit.item.udi @<DeviceReference>*;  # Unique Device Identifier
    fhir:ExplanationOfBenefit.item.bodySite @<Coding>?;  # Service Location
    fhir:ExplanationOfBenefit.item.subSite @<Coding>*;  # Service Sub-location
    fhir:ExplanationOfBenefit.item.noteNumber @<positiveInt>*;  # List of note numbers which apply
    fhir:ExplanationOfBenefit.item.adjudication @<ExplanationOfBenefit.item.adjudication>*;  # Adjudication details
    fhir:ExplanationOfBenefit.item.detail @<ExplanationOfBenefit.item.detail>*;  # Additional items
    fhir:ExplanationOfBenefit.item.prosthesis @<ExplanationOfBenefit.item.prosthesis>?;  # Prosthetic details
    fhir:index xsd:integer?                 # Relative position in a list
}

# Insurance or medical plan
<ExplanationOfBenefit.coverage> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    (                                       # Insurance information
        fhir:ExplanationOfBenefit.coverage.coverageIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.coverage.coverageReference @<CoverageReference> 
    )?;
    fhir:ExplanationOfBenefit.coverage.preAuthRef @<string>*;  # Pre-Authorization/Determination 
                                            # Reference 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Only if type = oral
<ExplanationOfBenefit.missingTeeth> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.missingTeeth.tooth @<Coding>;  # Tooth Code
    fhir:ExplanationOfBenefit.missingTeeth.reason @<Coding>?;  # Reason for missing
    fhir:ExplanationOfBenefit.missingTeeth.extractionDate @<date>?;  # Date of Extraction
    fhir:index xsd:integer?                 # Relative position in a list
}

# Processing notes
<ExplanationOfBenefit.note> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.note.number @<positiveInt>?;  # Note Number for this note
    fhir:ExplanationOfBenefit.note.type @<Coding> AND
    	{fhir:value @fhirvs:note-type}?;  # display | print | printoper
    fhir:ExplanationOfBenefit.note.text @<string>?;  # Note explanitory text
    fhir:ExplanationOfBenefit.note.language @<Coding>?;  # Language
    fhir:index xsd:integer?                 # Relative position in a list
}

 
<ExplanationOfBenefit.accident> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.accident.date @<date>?;  # When the accident occurred
    fhir:ExplanationOfBenefit.accident.type @<Coding> AND
    	{fhir:value @fhirvs:v3-ActIncidentCode}?;  # The nature of the accident
    (                                       # Accident Place
        fhir:ExplanationOfBenefit.accident.locationAddress @<Address>  |
        fhir:ExplanationOfBenefit.accident.locationReference @<LocationReference> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# Diagnosis
<ExplanationOfBenefit.diagnosis> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.diagnosis.sequence @<positiveInt>;  # Number to covey order of diagnosis
    fhir:ExplanationOfBenefit.diagnosis.diagnosis @<Coding>;  # Patient's list of diagnosis
    fhir:ExplanationOfBenefit.diagnosis.type @<Coding>*;  # Type of Diagnosis
    fhir:ExplanationOfBenefit.diagnosis.drg @<Coding>?;  # Diagnosis Related Group
    fhir:index xsd:integer?                 # Relative position in a list
}

 
<ExplanationOfBenefit.payment> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.payment.type @<Coding>?;  # Partial or Complete
    fhir:ExplanationOfBenefit.payment.adjustment @<Money>?;  # Payment adjustment for non-Claim 
                                            # issues 
    fhir:ExplanationOfBenefit.payment.adjustmentReason @<Coding>?;  # Reason for Payment adjustment
    fhir:ExplanationOfBenefit.payment.date @<date>?;  # Expected date of Payment
    fhir:ExplanationOfBenefit.payment.amount @<Money>?;  # Payment amount
    fhir:ExplanationOfBenefit.payment.identifier @<Identifier>?;  # Payment identifier
    fhir:index xsd:integer?                 # Relative position in a list
}

# Related Claims which may be revelant to processing this claimn
<ExplanationOfBenefit.related> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    (                                       # Reference to the related claim
        fhir:ExplanationOfBenefit.related.claimIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.related.claimReference @<ClaimReference> 
    )?;
    fhir:ExplanationOfBenefit.related.relationship @<Coding>?;  # How the reference claim is related
    fhir:ExplanationOfBenefit.related.reference @<Identifier>?;  # Related file or case reference
    fhir:index xsd:integer?                 # Relative position in a list
}

# Procedures performed
<ExplanationOfBenefit.procedure> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.procedure.sequence @<positiveInt>;  # Procedure sequence for reference
    fhir:ExplanationOfBenefit.procedure.date @<dateTime>?;  # When the procedure was performed
    (                                       # Patient's list of procedures 
                                            # performed 
        fhir:ExplanationOfBenefit.procedure.procedureCoding @<Coding>  |
        fhir:ExplanationOfBenefit.procedure.procedureReference @<ProcedureReference> 
    );
    fhir:index xsd:integer?                 # Relative position in a list
}

# Insurer added line items
<ExplanationOfBenefit.addItem> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.addItem.sequenceLinkId @<positiveInt>*;  # Service instances
    fhir:ExplanationOfBenefit.addItem.revenue @<Coding>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.addItem.category @<Coding>?;  # Type of service or product
    fhir:ExplanationOfBenefit.addItem.service @<Coding>?;  # Billing Code
    fhir:ExplanationOfBenefit.addItem.modifier @<Coding>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.addItem.fee @<Money>?;  # Professional fee or Product charge
    fhir:ExplanationOfBenefit.addItem.noteNumber @<positiveInt>*;  # List of note numbers which apply
    fhir:ExplanationOfBenefit.addItem.adjudication @<ExplanationOfBenefit.item.adjudication>*;  # Added items adjudication
    fhir:ExplanationOfBenefit.addItem.detail @<ExplanationOfBenefit.addItem.detail>*;  # Added items details
    fhir:index xsd:integer?                 # Relative position in a list
}

 
<ExplanationOfBenefit.information> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.information.category @<Coding>;  # Category of information
    fhir:ExplanationOfBenefit.information.code @<Coding>?;  # Type of information
    (                                       # When it occurred
        fhir:ExplanationOfBenefit.information.timingDate @<date>  |
        fhir:ExplanationOfBenefit.information.timingPeriod @<Period> 
    )?;
    (                                       # Additional Data
        fhir:ExplanationOfBenefit.information.valueString @<string>  |
        fhir:ExplanationOfBenefit.information.valueQuantity @<Quantity> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# Balance by Benefit Category
<ExplanationOfBenefit.benefitBalance> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.benefitBalance.category @<Coding>;  # Benefit Category
    fhir:ExplanationOfBenefit.benefitBalance.subCategory @<Coding>?;  # Benefit SubCategory
    fhir:ExplanationOfBenefit.benefitBalance.name @<string>?;  # Short name for the benefit
    fhir:ExplanationOfBenefit.benefitBalance.description @<string>?;  # Description of the benefit
    fhir:ExplanationOfBenefit.benefitBalance.network @<Coding>?;  # In or out of network
    fhir:ExplanationOfBenefit.benefitBalance.unit @<Coding>?;  # Individual or family
    fhir:ExplanationOfBenefit.benefitBalance.term @<Coding>?;  # Annual or lifetime
    fhir:ExplanationOfBenefit.benefitBalance.financial @<ExplanationOfBenefit.benefitBalance.financial>*;  # Benefit Summary
    fhir:index xsd:integer?                 # Relative position in a list
}

# Benefit Summary
<ExplanationOfBenefit.benefitBalance.financial> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.benefitBalance.financial.type @<Coding>;  # Deductable, visits, benefit amount
    (                                       # Benefits allowed
        fhir:ExplanationOfBenefit.benefitBalance.financial.benefitUnsignedInt @<unsignedInt>  |
        fhir:ExplanationOfBenefit.benefitBalance.financial.benefitString @<string>  |
        fhir:ExplanationOfBenefit.benefitBalance.financial.benefitMoney @<Money> 
    )?;
    (                                       # Benefits used
        fhir:ExplanationOfBenefit.benefitBalance.financial.benefitUsedUnsignedInt @<unsignedInt>  |
        fhir:ExplanationOfBenefit.benefitBalance.financial.benefitUsedMoney @<Money> 
    )?;
    fhir:index xsd:integer?                 # Relative position in a list
}

# Added items details
<ExplanationOfBenefit.addItem.detail> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.addItem.detail.revenue @<Coding>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.addItem.detail.category @<Coding>?;  # Type of service or product
    fhir:ExplanationOfBenefit.addItem.detail.service @<Coding>?;  # Billing Code
    fhir:ExplanationOfBenefit.addItem.detail.modifier @<Coding>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.addItem.detail.fee @<Money>?;  # Professional fee or Product charge
    fhir:ExplanationOfBenefit.addItem.detail.noteNumber @<positiveInt>*;  # List of note numbers which apply
    fhir:ExplanationOfBenefit.addItem.detail.adjudication @<ExplanationOfBenefit.item.adjudication>*;  # Added items detail adjudication
    fhir:index xsd:integer?                 # Relative position in a list
}

# Adjudication details
<ExplanationOfBenefit.item.adjudication> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.item.adjudication.category @<Coding>;  # Adjudication category such as 
                                            # co-pay, eligible, benefit, etc. 
    fhir:ExplanationOfBenefit.item.adjudication.reason @<Coding>?;  # Adjudication reason
    fhir:ExplanationOfBenefit.item.adjudication.amount @<Money>?;  # Monetary amount
    fhir:ExplanationOfBenefit.item.adjudication.value @<decimal>?;  # Non-monitory value
    fhir:index xsd:integer?                 # Relative position in a list
}

 
<ExplanationOfBenefit.item.careTeam> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    ( 
        fhir:ExplanationOfBenefit.item.careTeam.providerIdentifier @<Identifier>  |
        fhir:ExplanationOfBenefit.item.careTeam.providerReference @<PractitionerReference>  |
        fhir:ExplanationOfBenefit.item.careTeam.providerReference @<OrganizationReference> 
    );
    fhir:ExplanationOfBenefit.item.careTeam.responsible @<boolean>?;  # Billing practitioner
    fhir:ExplanationOfBenefit.item.careTeam.role @<Coding>?;  # Role on the team
    fhir:ExplanationOfBenefit.item.careTeam.qualification @<Coding>?;  # Type, classification or 
                                            # Specialization 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Additional items
<ExplanationOfBenefit.item.detail> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.item.detail.sequence @<positiveInt>;  # Service instance
    fhir:ExplanationOfBenefit.item.detail.type @<Coding> AND
    	{fhir:value @fhirvs:v3-ActInvoiceGroupCode};  # Group or type of product or service
    fhir:ExplanationOfBenefit.item.detail.revenue @<Coding>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.detail.category @<Coding>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.detail.service @<Coding>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.detail.modifier @<Coding>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.detail.programCode @<Coding>*;  # Program specific reason for item 
                                            # inclusion 
    fhir:ExplanationOfBenefit.item.detail.quantity @<SimpleQuantity>?;  # Count of Products or Services
    fhir:ExplanationOfBenefit.item.detail.unitPrice @<Money>?;  # Fee, charge or cost per point
    fhir:ExplanationOfBenefit.item.detail.factor @<decimal>?;  # Price scaling factor
    fhir:ExplanationOfBenefit.item.detail.points @<decimal>?;  # Difficulty scaling factor
    fhir:ExplanationOfBenefit.item.detail.net @<Money>?;  # Total additional item cost
    fhir:ExplanationOfBenefit.item.detail.udi @<DeviceReference>*;  # Unique Device Identifier
    fhir:ExplanationOfBenefit.item.detail.noteNumber @<positiveInt>*;  # List of note numbers which apply
    fhir:ExplanationOfBenefit.item.detail.adjudication @<ExplanationOfBenefit.item.adjudication>*;  # Detail adjudication
    fhir:ExplanationOfBenefit.item.detail.subDetail @<ExplanationOfBenefit.item.detail.subDetail>*;  # Additional items
    fhir:index xsd:integer?                 # Relative position in a list
}

# Prosthetic details
<ExplanationOfBenefit.item.prosthesis> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.item.prosthesis.initial @<boolean>?;  # Is this the initial service
    fhir:ExplanationOfBenefit.item.prosthesis.priorDate @<date>?;  # Initial service Date
    fhir:ExplanationOfBenefit.item.prosthesis.priorMaterial @<Coding>?;  # Prosthetic Material
    fhir:index xsd:integer?                 # Relative position in a list
}

# Additional items
<ExplanationOfBenefit.item.detail.subDetail> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:modifierExtension @<Extension>*;   # Extensions that cannot be ignored
    fhir:ExplanationOfBenefit.item.detail.subDetail.sequence @<positiveInt>;  # Service instance
    fhir:ExplanationOfBenefit.item.detail.subDetail.type @<Coding> AND
    	{fhir:value @fhirvs:v3-ActInvoiceGroupCode};  # Type of product or service
    fhir:ExplanationOfBenefit.item.detail.subDetail.revenue @<Coding>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.detail.subDetail.category @<Coding>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.detail.subDetail.service @<Coding>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.detail.subDetail.modifier @<Coding>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.detail.subDetail.programCode @<Coding>*;  # Program specific reason for item 
                                            # inclusion 
    fhir:ExplanationOfBenefit.item.detail.subDetail.quantity @<SimpleQuantity>?;  # Count of Products or Services
    fhir:ExplanationOfBenefit.item.detail.subDetail.unitPrice @<Money>?;  # Fee, charge or cost per point
    fhir:ExplanationOfBenefit.item.detail.subDetail.factor @<decimal>?;  # Price scaling factor
    fhir:ExplanationOfBenefit.item.detail.subDetail.points @<decimal>?;  # Difficulty scaling factor
    fhir:ExplanationOfBenefit.item.detail.subDetail.net @<Money>?;  # Net additional item cost
    fhir:ExplanationOfBenefit.item.detail.subDetail.udi @<DeviceReference>*;  # Unique Device Identifier
    fhir:ExplanationOfBenefit.item.detail.subDetail.noteNumber @<positiveInt>*;  # List of note numbers which apply
    fhir:ExplanationOfBenefit.item.detail.subDetail.adjudication @<ExplanationOfBenefit.item.adjudication>*;  # SubDetail adjudication
    fhir:index xsd:integer?                 # Relative position in a list
}

#---------------------- Data Types -------------------

# Primitive Type dateTime
<dateTime> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:gYear OR xsd:gYearMonth OR xsd:date OR xsd:dateTime?;  # Primitive value for dateTime
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type date
<date> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:gYear OR xsd:gYearMonth OR xsd:date?;  # Primitive value for date
    fhir:index xsd:integer?                 # Relative position in a list
}

# Metadata about a resource
<Meta> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Meta.versionId @<id>?;             # Version specific identifier
    fhir:Meta.lastUpdated @<instant>?;      # When the resource version last 
                                            # changed 
    fhir:Meta.profile @<uri>*;              # Profiles this resource claims to 
                                            # conform to 
    fhir:Meta.security @<Coding>*;          # Security Labels applied to this 
                                            # resource 
    fhir:Meta.tag @<Coding>*;               # Tags applied to this resource
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type code
<code> CLOSED {
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:string?;                 # Primitive value for code
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type string
<string> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:string MAXLENGTH 1048576?;  # Primitive value for string
    fhir:index xsd:integer?                 # Relative position in a list
}

# An address expressed using postal conventions (as opposed to GPS or other location definition formats)
<Address> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Address.use @<code> AND
    	{fhir:value @fhirvs:address-use}?;  # home | work | temp | old - purpose 
                                            # of this address 
    fhir:Address.type @<code> AND
    	{fhir:value @fhirvs:address-type}?;  # postal | physical | both
    fhir:Address.text @<string>?;           # Text representation of the address
    fhir:Address.line @<string>*;           # Street name, number, direction & 
                                            # P.O. Box etc. 
    fhir:Address.city @<string>?;           # Name of city, town etc.
    fhir:Address.district @<string>?;       # District name (aka county)
    fhir:Address.state @<string>?;          # Sub-unit of country (abbreviations 
                                            # ok) 
    fhir:Address.postalCode @<string>?;     # Postal code for area
    fhir:Address.country @<string>?;        # Country (can be ISO 3166 3 letter 
                                            # code) 
    fhir:Address.period @<Period>?;         # Time period when address was/is in 
                                            # use 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Base Resource
<Resource> {a .+;
    fhir:Resource.id @<id>?;                # Logical id of this artifact
    fhir:Resource.meta @<Meta>?;            # Metadata about the resource
    fhir:Resource.implicitRules @<uri>?;    # A set of rules under which this 
                                            # content was created 
    fhir:Resource.language @<code>?;        # Language of the resource content
    fhir:index xsd:integer?
}

# A fixed quantity (no comparator)
<SimpleQuantity> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Time range defined by start and end date/time
<Period> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Period.start @<dateTime>?;         # Starting time with inclusive 
                                            # boundary 
    fhir:Period.end @<dateTime>?;           # End time with inclusive boundary, 
                                            # if not ongoing 
    fhir:index xsd:integer?                 # Relative position in a list
}

# A measured or measurable amount
<Quantity> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type uri
<uri> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:string?;                 # Primitive value for uri
    fhir:index xsd:integer?                 # Relative position in a list
}

<Extension> {fhir:extension @<Extension>*;
    fhir:index xsd:integer?
}

# An amount of economic utility in some recognised currency
<Money> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Quantity.value @<decimal>?;        # Numerical value (with implicit 
                                            # precision) 
    fhir:Quantity.comparator @<code> AND
    	{fhir:value @fhirvs:quantity-comparator}?;  # < | <= | >= | > - how to 
                                            # understand the value 
    fhir:Quantity.unit @<string>?;          # Unit representation
    fhir:Quantity.system @<uri>?;           # System that defines coded unit form
    fhir:Quantity.code @<code>?;            # Coded form of the unit
    fhir:index xsd:integer?                 # Relative position in a list
}

# An identifier intended for computation
<Identifier> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Identifier.use @<code> AND
    	{fhir:value @fhirvs:identifier-use}?;  # usual | official | temp | 
                                            # secondary (If known) 
    fhir:Identifier.type @<CodeableConcept>?;  # Description of identifier
    fhir:Identifier.system @<uri>?;         # The namespace for the identifier
    fhir:Identifier.value @<string>?;       # The value that is unique
    fhir:Identifier.period @<Period>?;      # Time period when id is/was valid 
                                            # for use 
    fhir:Identifier.assigner @<OrganizationReference>?;  # Organization that issued id (may 
                                            # be just text) 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type boolean
<boolean> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:boolean?;                # Primitive value for boolean
    fhir:index xsd:integer?                 # Relative position in a list
}

# A human-readable formatted text, including images
<Narrative> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Narrative.status @<code> AND
    	{fhir:value @fhirvs:narrative-status};  # generated | extensions | 
                                            # additional | empty 
    fhir:Narrative.div xsd:string;          # Limited xhtml content
    fhir:index xsd:integer?                 # Relative position in a list
}

# A reference to a code defined by a terminology system
<Coding> CLOSED {
    fhir:concept IRI?;
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Coding.system @<uri>?;             # Identity of the terminology system
    fhir:Coding.version @<string>?;         # Version of the system - if relevant
    fhir:Coding.code @<code>?;              # Symbol in syntax defined by the 
                                            # system 
    fhir:Coding.display @<string>?;         # Representation defined by the 
                                            # system 
    fhir:Coding.userSelected @<boolean>?;   # If this coding was chosen directly 
                                            # by the user 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type unsignedInt
<unsignedInt> CLOSED {
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:nonNegativeInteger?;     # Primitive value for unsignedInt
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type id
<id> CLOSED {
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:string?;                 # Primitive value for id
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type positiveInt
<positiveInt> CLOSED {
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:positiveInteger?;        # Primitive value for positiveInt
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type decimal
<decimal> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:decimal?;                # Primitive value for decimal
    fhir:index xsd:integer?                 # Relative position in a list
}

# Primitive Type instant
<instant> CLOSED {
    fhir:id @<id>?;                         # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:value xsd:dateTime?;               # Primitive value for instant
    fhir:index xsd:integer?                 # Relative position in a list
}

# Concept - reference to a terminology or just  text
<CodeableConcept> CLOSED {
    fhir:concept IRI*;
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:CodeableConcept.coding @<Coding>*;  # Code defined by a terminology 
                                            # system 
    fhir:CodeableConcept.text @<string>?;   # Plain text representation of the 
                                            # concept 
    fhir:index xsd:integer?                 # Relative position in a list
}

#---------------------- Reference Types -------------------

<ReferralRequestReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<ReferralRequest> OR CLOSED {a fhir:ReferralRequest}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<OrganizationReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Organization> OR CLOSED {a fhir:Organization}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<ClaimResponseReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<ClaimResponse> OR CLOSED {a fhir:ClaimResponse}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<DeviceReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Device> OR CLOSED {a fhir:Device}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<VisionPrescriptionReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<VisionPrescription> OR CLOSED {a fhir:VisionPrescription}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<PatientReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Patient> OR CLOSED {a fhir:Patient}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<CoverageReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Coverage> OR CLOSED {a fhir:Coverage}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<RelatedPersonReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<RelatedPerson> OR CLOSED {a fhir:RelatedPerson}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<PractitionerReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Practitioner> OR CLOSED {a fhir:Practitioner}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<ProcedureReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Procedure> OR CLOSED {a fhir:Procedure}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<MedicationOrderReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<MedicationOrder> OR CLOSED {a fhir:MedicationOrder}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<ClaimReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Claim> OR CLOSED {a fhir:Claim}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

<LocationReference> CLOSED {
    fhir:Element.id @<id>?;
    fhir:extension @<Extension>*;
    fhir:link @<Location> OR CLOSED {a fhir:Location}?;
    fhir:Reference.reference @<string>?;
    fhir:Reference.display @<string>?;
    fhir:index xsd:integer?
}

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

# The type of payee Resource
@fhirvs:resource-type-link = ["organization" "patient" "practitioner" "relatedperson"]

#  Type of invoice element that is used to assist in describing an Invoice that is either submitted for adjudication or for which is returned on adjudication results. Invoice elements of this type signify a grouping of one or more children (detail) invoice elements.  They do not have intrinsic costing associated with them, but merely reflect the sum of all costing for it's immediate children invoice elements.
@fhirvs:v3-ActInvoiceGroupCode = ["_ActInvoiceInterGroupCode" "CPNDDRGING" "CPNDINDING" "CPNDSUPING" "DRUGING" "FRAMEING" "LENSING" "PRDING" "_ActInvoiceRootGroupCode" "CPINV" "CSINV" "CSPINV" "FININV" "OHSINV" "PAINV" "RXCINV" "RXDINV" "SBFINV" "VRXINV"]

# A code specifying the state of the resource instance.
@fhirvs:explanationofbenefit-status = ["active" "cancelled" "draft" "entered-in-error"]

# This value set includes a sample set of Forms codes.
@fhirvs:forms = ["1" "2"]

# This value set includes sample Claim Type codes.
@fhirvs:claim-type = ["institutional" "oral" "pharmacy" "professional" "vision"]

# How the Quantity should be understood and represented.
@fhirvs:quantity-comparator = ["<" "<=" ">=" ">"]

# The status of a resource narrative
@fhirvs:narrative-status = ["generated" "extensions" "additional" "empty"]

#  Set of codes indicating the type of incident or accident.
@fhirvs:v3-ActIncidentCode = ["MVA" "SCHOOL" "SPT" "WPA"]

# The type of an address (physical / postal)
@fhirvs:address-type = ["postal" "physical" "both"]

# The presentation types of notes.
@fhirvs:note-type = ["display" "print" "printoper"]

# The use of an address
@fhirvs:address-use = ["home" "work" "temp" "old"]

# Identifies the purpose for this identifier, if known .
@fhirvs:identifier-use = ["usual" "official" "temp" "secondary"]

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.