<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-Parameters-coverage-application" />
  <url value="https://bpcs.exchange/fhir/StructureDefinition/profile-Parameters-coverage-application" />
  <name value="ParametersCoverageApplicationRequest" />
  <title value="Parameters Coverage Application Request Profile" />
  <status value="active" />
  <experimental value="false" />
  <description value="The parameters sent when invoking a $submitApplication operation." />
  <fhirVersion value="5.0.0" />
  <mapping>
    <identity value="BPCS" />
    <name value="Internal BPCS API" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="Parameters" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Parameters" />
  <derivation value="constraint" />
  <differential>
    <element id="Parameters">
      <path value="Parameters" />
      <constraint>
        <key value="bpcs-ca-1" />
        <severity value="error" />
        <human value="Comment only allowed when Claim status is active" />
        <expression value="parameter.where(name='note').exists() implies parameter.where(name='coverage').all(resource.status='active')" />
      </constraint>
    </element>
    <element id="Parameters.parameter">
      <path value="Parameters.parameter" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="name" />
        </discriminator>
        <rules value="closed" />
      </slicing>
    </element>
    <element id="Parameters.parameter:note">
      <path value="Parameters.parameter" />
      <sliceName value="note" />
      <short value="Commit note" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:note.name">
      <path value="Parameters.parameter.name" />
      <patternString value="note" />
    </element>
    <element id="Parameters.parameter:note.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <min value="1" />
      <type>
        <code value="string" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationNoteDTO.note" />
      </mapping>
    </element>
    <element id="Parameters.parameter:note.resource">
      <path value="Parameters.parameter.resource" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:note.part">
      <path value="Parameters.parameter.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:coverage">
      <path value="Parameters.parameter" />
      <sliceName value="coverage" />
      <short value="Coverage for application" />
      <definition value="The family-based coverage being applied for or being updated" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:coverage.name">
      <path value="Parameters.parameter.name" />
      <patternString value="coverage" />
    </element>
    <element id="Parameters.parameter:coverage.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:coverage.resource">
      <path value="Parameters.parameter.resource" />
      <min value="1" />
      <type>
        <code value="Coverage" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Coverage-family-create" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO, FamilyDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:coverage.part">
      <path value="Parameters.parameter.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:family">
      <path value="Parameters.parameter" />
      <sliceName value="family" />
      <short value="Household for coverage" />
      <definition value="Information about the household associated with the coverage" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:family.name">
      <path value="Parameters.parameter.name" />
      <patternString value="family" />
    </element>
    <element id="Parameters.parameter:family.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:family.resource">
      <path value="Parameters.parameter.resource" />
      <min value="1" />
      <type>
        <code value="Group" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Group" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="FamilyDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:family.part">
      <path value="Parameters.parameter.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:request">
      <path value="Parameters.parameter" />
      <sliceName value="request" />
      <short value="Enrollment request" />
      <definition value="Represents the submission of a request for coverage" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:request.name">
      <path value="Parameters.parameter.name" />
      <patternString value="request" />
    </element>
    <element id="Parameters.parameter:request.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:request.resource">
      <path value="Parameters.parameter.resource" />
      <min value="1" />
      <type>
        <code value="EnrollmentRequest" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-EnrollmentRequest" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:request.part">
      <path value="Parameters.parameter.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:delegate">
      <path value="Parameters.parameter" />
      <sliceName value="delegate" />
      <short value="Household for coverage" />
      <definition value="Information about the household associated with the coverage" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:delegate.name">
      <path value="Parameters.parameter.name" />
      <patternString value="delegate" />
    </element>
    <element id="Parameters.parameter:delegate.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:delegate.resource">
      <path value="Parameters.parameter.resource" />
      <min value="1" />
      <type>
        <code value="RelatedPerson" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-RelatedPerson-delegate-create" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ApplicationDTO.delegate" />
      </mapping>
    </element>
    <element id="Parameters.parameter:delegate.part">
      <path value="Parameters.parameter.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember">
      <path value="Parameters.parameter" />
      <sliceName value="familyMember" />
      <short value="Household for coverage" />
      <definition value="Information about the household associated with the coverage" />
      <comment value="The maximum number of family members varies depending on type of coverage" />
      <min value="1" />
      <max value="17" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.name">
      <path value="Parameters.parameter.name" />
      <patternString value="familyMember" />
    </element>
    <element id="Parameters.parameter:familyMember.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.resource">
      <path value="Parameters.parameter.resource" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part">
      <path value="Parameters.parameter.part" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="name" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <min value="1" />
      <mapping>
        <identity value="BPCS" />
        <map value="FamilyDTO.familyMember" />
      </mapping>
    </element>
    <element id="Parameters.parameter:familyMember.part:recipient">
      <path value="Parameters.parameter.part" />
      <sliceName value="recipient" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:recipient.name">
      <path value="Parameters.parameter.part.name" />
      <patternString value="recipient" />
    </element>
    <element id="Parameters.parameter:familyMember.part:recipient.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:recipient.resource">
      <path value="Parameters.parameter.part.resource" />
      <min value="1" />
      <type>
        <code value="Patient" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Patient-application" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="FamilyMemberDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:familyMember.part:recipient.part">
      <path value="Parameters.parameter.part.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:memberCoverage">
      <path value="Parameters.parameter.part" />
      <sliceName value="memberCoverage" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:memberCoverage.name">
      <path value="Parameters.parameter.part.name" />
      <patternString value="memberCoverage" />
    </element>
    <element id="Parameters.parameter:familyMember.part:memberCoverage.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:memberCoverage.resource">
      <path value="Parameters.parameter.part.resource" />
      <min value="1" />
      <type>
        <code value="Coverage" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Coverage-individual-public-create" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="FamilyMemberDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:familyMember.part:memberCoverage.part">
      <path value="Parameters.parameter.part.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:consent">
      <path value="Parameters.parameter.part" />
      <sliceName value="consent" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:consent.name">
      <path value="Parameters.parameter.part.name" />
      <patternString value="consent" />
    </element>
    <element id="Parameters.parameter:familyMember.part:consent.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:consent.resource">
      <path value="Parameters.parameter.part.resource" />
      <min value="1" />
      <type>
        <code value="Consent" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Consent" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="ConsentDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:familyMember.part:consent.part">
      <path value="Parameters.parameter.part.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:income">
      <path value="Parameters.parameter.part" />
      <sliceName value="income" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:income.name">
      <path value="Parameters.parameter.part.name" />
      <patternString value="income" />
    </element>
    <element id="Parameters.parameter:familyMember.part:income.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:income.resource">
      <path value="Parameters.parameter.part.resource" />
      <min value="1" />
      <type>
        <code value="Observation" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Observation-income" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:income.part">
      <path value="Parameters.parameter.part.part" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance">
      <path value="Parameters.parameter.part" />
      <sliceName value="privateInsurance" />
      <max value="2" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance.name">
      <path value="Parameters.parameter.part.name" />
      <patternString value="privateInsurance" />
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <max value="0" />
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance.resource">
      <path value="Parameters.parameter.part.resource" />
      <min value="1" />
      <type>
        <code value="Coverage" />
        <profile value="https://bpcs.exchange/fhir/StructureDefinition/profile-Coverage-individual-private-create" />
      </type>
      <mustSupport value="true" />
      <mapping>
        <identity value="BPCS" />
        <map value="InsuranceDTO" />
      </mapping>
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance.resource.extension">
      <path value="Parameters.parameter.part.resource.extension" />
      <min value="1" />
    </element>
    <element id="Parameters.parameter:familyMember.part:privateInsurance.part">
      <path value="Parameters.parameter.part.part" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>