<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-Coverage-family-base" />
  <url value="https://bpcs.exchange/fhir/StructureDefinition/profile-Coverage-family-base" />
  <name value="CoverageFamilyBase" />
  <title value="Coverage - Family Base Profile" />
  <status value="active" />
  <experimental value="false" />
  <description value="Profile for Coverage that is enrolled in on a family rather than individual basis" />
  <fhirVersion value="5.0.0" />
  <mapping>
    <identity value="BPCS" />
    <name value="Internal BPCS API" />
  </mapping>
  <kind value="resource" />
  <abstract value="true" />
  <type value="Coverage" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Coverage" />
  <derivation value="constraint" />
  <differential>
    <element id="Coverage.id">
      <path value="Coverage.id" />
      <comment value="This will be the application number for the coverage" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:delegate">
      <path value="Coverage.extension" />
      <sliceName value="delegate" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/ext-Coverage-Delegate" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:withReceipts">
      <path value="Coverage.extension" />
      <sliceName value="withReceipts" />
      <type>
        <code value="Extension" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/ext-Coverage-WithReceiptsFlag" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO.withReceipts" />
      </mapping>
    </element>
    <element id="Coverage.extension:renewal">
      <path value="Coverage.extension" />
      <sliceName value="renewal" />
      <type>
        <code value="Extension" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/ext-Coverage-RenewalFlag" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO.type" />
      </mapping>
    </element>
    <element id="Coverage.extension:registrationDate">
      <path value="Coverage.extension" />
      <sliceName value="registrationDate" />
      <type>
        <code value="Extension" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/ext-Coverage-RegistrationDate" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:inYearAdjustment">
      <path value="Coverage.extension" />
      <sliceName value="inYearAdjustment" />
      <type>
        <code value="Extension" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/ext-Coverage-InYearAdjustmentFlag" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.status">
      <path value="Coverage.status" />
      <short value="draft | active" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://bpcs.exchange/fhir/ValueSet/vs-FinancialStatus" />
      </binding>
    </element>
    <element id="Coverage.kind">
      <path value="Coverage.kind" />
      <patternCode value="insurance" />
    </element>
    <element id="Coverage.subscriber">
      <path value="Coverage.subscriber" />
      <type>
        <code value="Reference" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Reference-rest" />
        <targetProfile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Patient-search" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.beneficiary">
      <path value="Coverage.beneficiary" />
      <definition value="The policyholder ID is the ODB eligibility number of the person who took out the insurance policy. Any given recipient can be the policyholder of more than one insurance policy. This attribute should always be populated." />
      <type>
        <code value="Reference" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Reference-group-no-patient" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.period">
      <path value="Coverage.period" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.period.start">
      <path value="Coverage.period.start" />
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO.proRatedStartDate (if not Aug 1), FamilyDTO.enrollmentEffectiveDate, FamilyHistoryDTO.enrollmentEffDate" />
      </mapping>
    </element>
    <element id="Coverage.period.end">
      <path value="Coverage.period.end" />
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="FamilyDTO.enrollmentEndDate, FamilyHistoryDTO.enrollmentEndDate" />
      </mapping>
    </element>
    <element id="Coverage.insurer">
      <path value="Coverage.insurer" />
      <patternReference>
        <reference value="Organization/bpcs" />
      </patternReference>
    </element>
    <element id="Coverage.class">
      <path value="Coverage.class" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <min value="2" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:program">
      <path value="Coverage.class" />
      <sliceName value="program" />
      <short value="Coverage plan info" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:program.type">
      <path value="Coverage.class.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/coverage-class" />
          <code value="plan" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:program.value">
      <path value="Coverage.class.value" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:program.value.system">
      <path value="Coverage.class.value.system" />
      <min value="1" />
      <patternUri value="https://bpcs.exchange/fhir/CodeSystem/cs-ProgramPlan" />
    </element>
    <element id="Coverage.class:program.value.value">
      <path value="Coverage.class.value.value" />
      <short value="BPCS Program id" />
      <comment value="The binding is extensible to allow for the addition of new codes.  Codes must be found in the current expansion of the value set." />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="https://bpcs.exchange/fhir/ValueSet/vs-Program" />
      </binding>
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO.program" />
      </mapping>
    </element>
    <element id="Coverage.class:plan">
      <path value="Coverage.class" />
      <sliceName value="plan" />
      <short value="BPCS plan info" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:plan.type">
      <path value="Coverage.class.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/coverage-class" />
          <code value="subplan" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:plan.value">
      <path value="Coverage.class.value" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.class:plan.value.system">
      <path value="Coverage.class.value.system" />
      <min value="1" />
      <patternUri value="https://bpcs.exchange/fhir/CodeSystem/cs-ProgramPlan" />
    </element>
    <element id="Coverage.class:plan.value.value">
      <path value="Coverage.class.value.value" />
      <short value="BPCS plan id" />
      <comment value="The binding is extensible to allow for the addition of new codes.  Codes must be found in the current expansion of the value set." />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="https://bpcs.exchange/fhir/ValueSet/vs-Plan" />
      </binding>
      <mapping>
        <identity value="BPCS" />
        <map value="Inferred from ApplicationDTO.program" />
      </mapping>
    </element>
  </differential>
</StructureDefinition>