STU3 Candidate

This page is part of the FHIR Specification (v1.8.0: STU 3 Draft). 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 
    fhir:ExplanationOfBenefit.type @<CodeableConcept> AND
    	{fhir:value @fhirvs:claim-type}?;  # Type or discipline
    fhir:ExplanationOfBenefit.subType @<CodeableConcept>*;  # Finer grained claim type 
                                            # information 
    fhir:ExplanationOfBenefit.patient @<Reference>?;  # The subject of the Products and 
                                            # Services 
    fhir:ExplanationOfBenefit.billablePeriod @<Period>?;  # Period for charge submission
    fhir:ExplanationOfBenefit.created @<dateTime>?;  # Creation date
    fhir:ExplanationOfBenefit.enterer @<Reference>?;  # Author
    fhir:ExplanationOfBenefit.insurer @<Reference>?;  # Insurer
    fhir:ExplanationOfBenefit.provider @<Reference>?;  # Responsible provider for the claim
    fhir:ExplanationOfBenefit.organization @<Reference>?;  # Responsible organization for the 
                                            # claim 
    fhir:ExplanationOfBenefit.referral @<Reference>?;  # Treatment Referral
    fhir:ExplanationOfBenefit.facility @<Reference>?;  # Servicing Facility
    fhir:ExplanationOfBenefit.claim @<Reference>?;  # Claim reference
    fhir:ExplanationOfBenefit.claimResponse @<Reference>?;  # Claim response reference
    fhir:ExplanationOfBenefit.outcome @<CodeableConcept>?;  # complete | error | partial
    fhir:ExplanationOfBenefit.disposition @<string>?;  # Disposition Message
    fhir:ExplanationOfBenefit.related @<ExplanationOfBenefit.related>*;  # Related Claims which may be 
                                            # revelant to processing this claim 
    fhir:ExplanationOfBenefit.prescription  # Prescription
    (   @<MedicationRequestReference> OR
        @<VisionPrescriptionReference>
    )?;
    fhir:ExplanationOfBenefit.originalPrescription @<Reference>?;  # Original Prescription
    fhir:ExplanationOfBenefit.payee @<ExplanationOfBenefit.payee>?;  # Payee
    fhir:ExplanationOfBenefit.information @<ExplanationOfBenefit.information>*;  # Exceptions, special 
                                            # considerations, the condition, 
                                            # situation, prior or concurrent 
                                            # issues 
    fhir:ExplanationOfBenefit.careTeam @<ExplanationOfBenefit.careTeam>*;  # Care Team members
    fhir:ExplanationOfBenefit.diagnosis @<ExplanationOfBenefit.diagnosis>*;  # Diagnosis
    fhir:ExplanationOfBenefit.procedure @<ExplanationOfBenefit.procedure>*;  # Procedures performed
    fhir:ExplanationOfBenefit.precedence @<positiveInt>?;  # Precedence (primary, secondary, 
                                            # etc.) 
    fhir:ExplanationOfBenefit.insurance @<ExplanationOfBenefit.insurance>?;  # Insurance or medical plan
    fhir:ExplanationOfBenefit.accident @<ExplanationOfBenefit.accident>?;  # Details of an 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.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>?;  # Payment (if paid)
    fhir:ExplanationOfBenefit.form @<CodeableConcept> 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
}

# 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.careTeamLinkId @<positiveInt>*;  # Applicable careteam members
    fhir:ExplanationOfBenefit.item.diagnosisLinkId @<positiveInt>*;  # Applicable diagnoses
    fhir:ExplanationOfBenefit.item.procedureLinkId @<positiveInt>*;  # Applicable procedures
    fhir:ExplanationOfBenefit.item.informationLinkId @<positiveInt>*;  # Applicable exception and 
                                            # supporting information 
    fhir:ExplanationOfBenefit.item.revenue @<CodeableConcept>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.category @<CodeableConcept>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.service @<CodeableConcept>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.modifier @<CodeableConcept>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.programCode @<CodeableConcept>*;  # 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.locationCodeableConcept @<CodeableConcept>  |
        fhir:ExplanationOfBenefit.item.locationAddress @<Address>  |
        fhir:ExplanationOfBenefit.item.locationReference @<Reference> 
    )?;
    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.net @<Money>?;  # Total item cost
    fhir:ExplanationOfBenefit.item.udi @<Reference>*;  # Unique Device Identifier
    fhir:ExplanationOfBenefit.item.bodySite @<CodeableConcept>?;  # Service Location
    fhir:ExplanationOfBenefit.item.subSite @<CodeableConcept>*;  # 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
}

# Care Team members
<ExplanationOfBenefit.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.careTeam.sequence @<positiveInt>;  # Number to covey order of careteam
    fhir:ExplanationOfBenefit.careTeam.provider  # Member of the Care Team
    (   @<PractitionerReference> OR
        @<OrganizationReference>
    );
    fhir:ExplanationOfBenefit.careTeam.responsible @<boolean>?;  # Billing practitioner
    fhir:ExplanationOfBenefit.careTeam.role @<CodeableConcept>?;  # Role on the team
    fhir:ExplanationOfBenefit.careTeam.qualification @<CodeableConcept>?;  # Type, classification or 
                                            # Specialization 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Related Claims which may be revelant to processing this claim
<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
    fhir:ExplanationOfBenefit.related.claim @<Reference>?;  # Reference to the related claim
    fhir:ExplanationOfBenefit.related.relationship @<CodeableConcept>?;  # 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
}

# Payment (if paid)
<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 @<CodeableConcept>?;  # Partial or Complete
    fhir:ExplanationOfBenefit.payment.adjustment @<Money>?;  # Payment adjustment for non-Claim 
                                            # issues 
    fhir:ExplanationOfBenefit.payment.adjustmentReason @<CodeableConcept>?;  # 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
}

# Details of an accident
<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 @<CodeableConcept> AND
    	{fhir:value @fhirvs:v3-ActIncidentCode}?;  # The nature of the accident
    (                                       # Accident Place
        fhir:ExplanationOfBenefit.accident.locationAddress @<Address>  |
        fhir:ExplanationOfBenefit.accident.locationReference @<Reference> 
    )?;
    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
    (                                       # Patient's list of diagnosis
        fhir:ExplanationOfBenefit.diagnosis.diagnosisCodeableConcept @<CodeableConcept>  |
        fhir:ExplanationOfBenefit.diagnosis.diagnosisReference @<Reference> 
    );
    fhir:ExplanationOfBenefit.diagnosis.type @<CodeableConcept>*;  # Type of Diagnosis
    fhir:ExplanationOfBenefit.diagnosis.packageCode @<CodeableConcept>?;  # Package billing code
    fhir:index xsd:integer?                 # Relative position in a list
}

# Insurance or medical plan
<ExplanationOfBenefit.insurance> 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.insurance.coverage @<Reference>?;  # Insurance information
    fhir:ExplanationOfBenefit.insurance.preAuthRef @<string>*;  # Pre-Authorization/Determination 
                                            # Reference 
    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 @<CodeableConcept>;  # Benefit Category
    fhir:ExplanationOfBenefit.benefitBalance.subCategory @<CodeableConcept>?;  # Benefit SubCategory
    fhir:ExplanationOfBenefit.benefitBalance.excluded @<boolean>?;  # Excluded from the plan
    fhir:ExplanationOfBenefit.benefitBalance.name @<string>?;  # Short name for the benefit
    fhir:ExplanationOfBenefit.benefitBalance.description @<string>?;  # Description of the benefit
    fhir:ExplanationOfBenefit.benefitBalance.network @<CodeableConcept>?;  # In or out of network
    fhir:ExplanationOfBenefit.benefitBalance.unit @<CodeableConcept>?;  # Individual or family
    fhir:ExplanationOfBenefit.benefitBalance.term @<CodeableConcept>?;  # Annual or lifetime
    fhir:ExplanationOfBenefit.benefitBalance.financial @<ExplanationOfBenefit.benefitBalance.financial>*;  # Benefit Summary
    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 @<CodeableConcept>?;  # Type of party: Subscriber, 
                                            # Provider, other 
    fhir:ExplanationOfBenefit.payee.resourceType @<CodeableConcept> 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 @<Reference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<Reference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<Reference>  |
        fhir:ExplanationOfBenefit.payee.partyReference @<Reference> 
    )?;
    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 @<CodeableConcept> AND
    	{fhir:value @fhirvs:note-type}?;  # display | print | printoper
    fhir:ExplanationOfBenefit.note.text @<string>?;  # Note explanitory text
    fhir:ExplanationOfBenefit.note.language @<CodeableConcept>?;  # Language
    fhir:index xsd:integer?                 # Relative position in a list
}

# Exceptions, special considerations, the condition, situation, prior or concurrent issues
<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 @<CodeableConcept>;  # Category of information
    fhir:ExplanationOfBenefit.information.code @<CodeableConcept>?;  # Type of information
    (                                       # When it occurred
        fhir:ExplanationOfBenefit.information.timingDate @<date>  |
        fhir:ExplanationOfBenefit.information.timingPeriod @<Period> 
    )?;
    (                                       # Additional Data or supporting 
                                            # information 
        fhir:ExplanationOfBenefit.information.valueString @<string>  |
        fhir:ExplanationOfBenefit.information.valueQuantity @<Quantity>  |
        fhir:ExplanationOfBenefit.information.valueAttachment @<Attachment>  |
        fhir:ExplanationOfBenefit.information.valueReference @<Reference> 
    )?;
    fhir:ExplanationOfBenefit.information.reason @<Coding>?;  # Reason associated with the 
                                            # information 
    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.procedureCodeableConcept @<CodeableConcept>  |
        fhir:ExplanationOfBenefit.procedure.procedureReference @<Reference> 
    );
    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 @<CodeableConcept>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.addItem.category @<CodeableConcept>?;  # Type of service or product
    fhir:ExplanationOfBenefit.addItem.service @<CodeableConcept>?;  # Billing Code
    fhir:ExplanationOfBenefit.addItem.modifier @<CodeableConcept>*;  # 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
}

# 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 @<CodeableConcept>?;  # Prosthetic Material
    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 @<CodeableConcept> AND
    	{fhir:value @fhirvs:v3-ActInvoiceGroupCode};  # Group or type of product or service
    fhir:ExplanationOfBenefit.item.detail.revenue @<CodeableConcept>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.detail.category @<CodeableConcept>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.detail.service @<CodeableConcept>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.detail.modifier @<CodeableConcept>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.detail.programCode @<CodeableConcept>*;  # 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.net @<Money>?;  # Total additional item cost
    fhir:ExplanationOfBenefit.item.detail.udi @<Reference>*;  # 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
}

# 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 @<CodeableConcept>;  # Adjudication category such as 
                                            # co-pay, eligible, benefit, etc. 
    fhir:ExplanationOfBenefit.item.adjudication.reason @<CodeableConcept>?;  # 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
}

# 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 @<CodeableConcept>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.addItem.detail.category @<CodeableConcept>?;  # Type of service or product
    fhir:ExplanationOfBenefit.addItem.detail.service @<CodeableConcept>?;  # Billing Code
    fhir:ExplanationOfBenefit.addItem.detail.modifier @<CodeableConcept>*;  # 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
}

# 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 @<CodeableConcept>;  # 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
}

# 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 @<CodeableConcept> AND
    	{fhir:value @fhirvs:v3-ActInvoiceGroupCode};  # Type of product or service
    fhir:ExplanationOfBenefit.item.detail.subDetail.revenue @<CodeableConcept>?;  # Revenue or cost center code
    fhir:ExplanationOfBenefit.item.detail.subDetail.category @<CodeableConcept>?;  # Type of service or product
    fhir:ExplanationOfBenefit.item.detail.subDetail.service @<CodeableConcept>?;  # Billing Code
    fhir:ExplanationOfBenefit.item.detail.subDetail.modifier @<CodeableConcept>*;  # Service/Product billing modifiers
    fhir:ExplanationOfBenefit.item.detail.subDetail.programCode @<CodeableConcept>*;  # 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.net @<Money>?;  # Net additional item cost
    fhir:ExplanationOfBenefit.item.detail.subDetail.udi @<Reference>*;  # 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:Element.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:Element.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:Element.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 (e.g. can be ISO 3166 2 or 
                                            # 3 letter code) 
    fhir:Address.period @<Period>?;         # Time period when address was/is in 
                                            # use 
    fhir:index xsd:integer?                 # Relative position in a list
}

# Content in a format defined elsewhere
<Attachment> CLOSED {
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Attachment.contentType @<code>?;   # Mime type of the content, with 
                                            # charset etc. 
    fhir:Attachment.language @<code>?;      # Human language of the content 
                                            # (BCP-47) 
    fhir:Attachment.data @<base64Binary>?;  # Data inline, base64ed
    fhir:Attachment.url @<uri>?;            # Uri where the data can be found
    fhir:Attachment.size @<unsignedInt>?;   # Number of bytes of content (if url 
                                            # provided) 
    fhir:Attachment.hash @<base64Binary>?;  # Hash of the data (sha-1, base64ed)
    fhir:Attachment.title @<string>?;       # Label to display in place of the 
                                            # data 
    fhir:Attachment.creation @<dateTime>?;  # Date attachment was first created
    fhir:index xsd:integer?                 # Relative position in a list
}

# 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 @<Reference>?;  # Organization that issued id (may 
                                            # be just text) 
    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 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
}

# A reference from one resource to another
<Reference> CLOSED {
    fhir:link IRI?;
    fhir:Element.id @<string>?;             # xml:id (or equivalent in JSON)
    fhir:extension @<Extension>*;           # Additional Content defined by 
                                            # implementations 
    fhir:Reference.reference @<string>?;    # Literal reference, Relative, 
                                            # internal or absolute URL 
    fhir:Reference.identifier @<Identifier>?;  # Logical reference, when literal 
                                            # reference is not known 
    fhir:Reference.display @<string>?;      # Text alternative for the resource
    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:Element.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?
}

# Primitive Type boolean
<boolean> CLOSED {
    fhir:Element.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
}

# 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 decimal
<decimal> CLOSED {
    fhir:Element.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
}

# 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
}

# Primitive Type instant
<instant> CLOSED {
    fhir:Element.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
}

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

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

<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?
}

<Practitioner> {
    a [fhir:Practitioner];
    fhir:nodeRole [fhir:treeRoot]?
}

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

<MedicationRequest> {
    a [fhir:MedicationRequest];
    fhir:nodeRole [fhir:treeRoot]?
}

<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?
}

<Organization> {
    a [fhir:Organization];
    fhir:nodeRole [fhir:treeRoot]?
}

<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?
}

<VisionPrescription> {
    a [fhir:VisionPrescription];
    fhir:nodeRole [fhir:treeRoot]?
}

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

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

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

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

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

#  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 ["CPNDDRGING" "CPNDINDING" "CPNDSUPING" "DRUGING" "FRAMEING" "LENSING" "PRDING" "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"]

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

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

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

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

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

# 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.