<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:nhis="https://www.his.bg" targetNamespace="https://www.his.bg" elementFormDefault="qualified"
  version="1.13.1">
  <xs:include schemaLocation="https://www.his.bg/api/v1/NHIS-Fields.xsd"/>
  <!-- Common entities used in different requests. -->
  <xs:complexType name="addressBase">
    <xs:sequence>
      <xs:element name="country" type="nhis:countryCodeBase"/>
      <xs:element name="county" type="nhis:countyBase" minOccurs="0"/>
      <xs:element name="ekatte" type="nhis:ekatteBase" minOccurs="0"/>
      <xs:element name="city" type="nhis:cityBase"/>
      <xs:element name="line" type="nhis:addressDetailsBase" minOccurs="0"/>
      <xs:element name="postalCode" type="nhis:postCodeBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="assessment">
    <xs:sequence>
      <xs:element name="nrnExecution" type="nhis:nrnBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="code" type="nhis:mdaBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="directedOn" type="nhis:timestampBase" minOccurs="0"/>
      <xs:element name="performedOn" type="nhis:timestampBase" minOccurs="0"/>
      <xs:element name="note" type="nhis:text8kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="consultationBasic">
    <xs:sequence>
      <xs:element name="nrnConsultation" type="nhis:nrnBase"/>
      <xs:element name="qualification" type="nhis:qualificationBase"/>
      <xs:element name="directedOn" type="nhis:timestampBase"/>
      <xs:element name="performedOn" type="nhis:timestampBase"/>
      <xs:element name="note" type="nhis:text4kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="diagnosisBasic">
    <xs:sequence>
      <xs:element name="code" type="nhis:mkbBase"/>
      <xs:element name="additionalCode" type="nhis:mkbBase" minOccurs="0"/>
      <xs:element name="note" type="nhis:text4kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="diagnosisFull">
    <xs:complexContent>
      <xs:extension base="nhis:diagnosisBasic">
        <xs:sequence>
          <xs:element name="use" type="nhis:diagnosisUseBase"/>
          <xs:element name="rank" type="nhis:diagnosisRankBase"/>
          <xs:element name="clinicalStatus" type="nhis:diagnosisClinicalStatusBase" minOccurs="0"/>
          <xs:element name="verificationStatus" type="nhis:diagnosisVerificationStatusBase" minOccurs="0"/>
          <xs:element name="onsetDateTime" type="nhis:diagnosisOnsetBase" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="diagnosticReport">
    <xs:sequence>
      <xs:element name="code" type="nhis:specializedActivityCodeBase"/>
      <xs:element name="status" type="nhis:mdaStatus"/>
      <xs:element name="numberPerformed" type="nhis:numberPerformedBase"/>
      <xs:element name="result" type="nhis:observation" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="conclusion" type="nhis:text8kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="dosageInstruction">
    <xs:sequence>
      <xs:element name="sequence" type="nhis:sequenceBase" minOccurs="0"/>
      <xs:element name="asNeeded" type="nhis:asNeededBase" minOccurs="0"/>
      <xs:element name="route" type="nhis:routeBase" minOccurs="0"/>
      <xs:element name="doseQuantityValue" type="nhis:doseQuantityValueBase"/>
      <xs:element name="doseQuantityCode" type="nhis:doseQuantityCodeBase"/>
      <xs:element name="frequency" type="nhis:frequencyBase"/>
      <xs:element name="period" type="nhis:periodBase"/>
      <xs:element name="periodUnit" type="nhis:periodUnitBase"/>
      <xs:element name="boundsDuration" type="nhis:boundsDurationBase" minOccurs="0"/>
      <xs:element name="boundsDurationUnit" type="nhis:boundsDurationUnitBase" minOccurs="0"/>
      <xs:element name="when" type="nhis:whenToTakeBase" minOccurs="0"/>
      <xs:element name="offset" type="nhis:offsetBase" minOccurs="0"/>
      <xs:element name="text" type="nhis:textBase" minOccurs="0"/>
      <xs:element name="interpretation" type="nhis:textBase"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="extImmunizationDetails">
    <xs:sequence>
      <xs:element name="occurrence" type="nhis:occurrenceBase"/>
      <xs:element name="vaccineName" type="nhis:vaccineNameBase"/>
      <xs:element name="vaccineAtc" type="nhis:vaccineAtcBase" minOccurs="0"/>
      <xs:element name="vaccineInn" type="nhis:vaccineInnBase" minOccurs="0"/>
      <xs:element name="serialNumber" type="nhis:snBase" minOccurs="0"/>
      <xs:element name="lotNumber" type="nhis:lotBase"/>
      <xs:element name="country" type="nhis:countryCodeBase"/>
      <xs:element name="authority" type="nhis:authorityBase"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="humanNameBase">
    <xs:sequence>
      <xs:element name="given" type="nhis:givenNameBase"/>
      <xs:element name="middle" type="nhis:middleNameBase" minOccurs="0"/>
      <xs:element name="family" type="nhis:familyNameBase"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="medicalPractitionerSimple">
    <xs:sequence>
      <xs:element name="pmi" type="nhis:pmiBase"/>
      <xs:element name="qualification" type="nhis:qualificationBase"/>
      <xs:element name="practiceNumber" type="nhis:practiceNumberBase"/>
      <xs:element name="phone" type="nhis:phoneBase" minOccurs="0"/>
      <xs:element name="email" type="nhis:emailBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="medicalPractitioner">
    <xs:complexContent>
      <xs:extension base="nhis:medicalPractitionerSimple">
        <xs:sequence>
          <xs:element name="pmiDeputy" type="nhis:pmiBase" minOccurs="0"/>
          <xs:element name="role" type="nhis:deputyRoleBase"/>
          <xs:element name="rhifAreaNumber" type="nhis:rhifAreaNumberBase" minOccurs="0"/>
          <xs:element name="nhifNumber" type="nhis:nhifNumberBase" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="medicalPractitionerWithName">
    <xs:complexContent>
      <xs:extension base="nhis:medicalPractitioner">
        <xs:sequence>
          <xs:element name="name" type="nhis:humanNameBase"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="medicalPractitionerWithAccompanying">
    <xs:complexContent>
      <xs:extension base="nhis:medicalPractitioner">
        <xs:sequence>
          <xs:element name="accompanying" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="pmi" type="nhis:pmiBase"/>
                <xs:element name="qualification" type="nhis:qualificationBase"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="medicalPractitionerWithAccompanyingAndName">
    <xs:complexContent>
      <xs:extension base="nhis:medicalPractitionerWithName">
        <xs:sequence>
          <xs:element name="accompanying" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="pmi" type="nhis:pmiBase"/>
                <xs:element name="name" type="nhis:humanNameBase"/>
                <xs:element name="qualification" type="nhis:qualificationBase"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="medicationPrescribe">
    <xs:sequence>
      <xs:element name="sequenceId" type="nhis:sequenceIdBase"/>
      <xs:element name="medicationCode" type="nhis:medicationCodeBase"/>
      <xs:element name="form" type="nhis:medicationFormBase"/>
      <xs:element name="priority" type="nhis:priorityBase" minOccurs="0"/>
      <xs:element name="note" type="nhis:textBase" minOccurs="0"/>
      <xs:element name="mkb" type="nhis:mkbBase" minOccurs="0"/>
      <xs:element name="nhifCode" type="nhis:nhifCodeBase" minOccurs="0"/>
      <xs:element name="quantityValue" type="nhis:quantityBase"/>
      <xs:element name="isQuantityByForm" type="nhis:isQuantityByFormBase"/>
      <xs:element name="isDispensed" type="nhis:isDispensedBase" minOccurs="0"/>
      <xs:element name="isSubstitutionAllowed" type="nhis:isSubstitutionAllowedBase" minOccurs="0"/>
      <xs:element name="dosageInstruction" type="nhis:dosageInstruction" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="medicationDispense">
    <xs:sequence>
      <xs:element name="sequenceId" type="nhis:sequenceIdBase"/>
      <xs:element name="medicationCode" type="nhis:medicationCodeBase"/>
      <xs:element name="form" type="nhis:medicationFormBase"/>
      <xs:element name="verification" type="nhis:verification" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="nhifCode" type="nhis:nhifCodeBase" minOccurs="0"/>
      <xs:element name="quantityValue" type="nhis:quantityBase"/>
      <xs:element name="isQuantityByForm" type="nhis:isQuantityByFormBase"/>
      <xs:element name="whenPrepared" type="nhis:whenPreparedBase" minOccurs="0"/>
      <xs:element name="whenHandedOver" type="nhis:whenHandedOverBase"/>
      <xs:element name="paidByPatient" type="nhis:amount" minOccurs="0"/>
      <xs:element name="paidByNhif" type="nhis:amount" minOccurs="0"/>
      <xs:element name="substitution" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="wasSubstituted" type="nhis:wasSubstitutedBase"/>
            <xs:element name="substitutionType" type="nhis:substitutionTypeBase"/>
            <xs:element name="reason" type="nhis:reasonBase"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="dosageInstruction" type="nhis:dosageInstruction" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="observation">
    <xs:sequence>
      <xs:element name="code" type="nhis:observationCodeBase"/>
      <xs:element name="valueScale" type="nhis:valueScaleBase"/>
      <xs:element name="valueNomenclature" type="nhis:valueNomenclatureBase" minOccurs="0"/>
      <xs:choice>
        <xs:element name="valueQuantity" type="nhis:valueQuantityBase"/>
        <xs:element name="valueCode" type="nhis:valueCodeBase"/>
        <xs:element name="valueString" type="nhis:valueStringBase"/>
      </xs:choice>
      <xs:element name="valueUnit" type="nhis:valueUnitBase" minOccurs="0"/>
      <xs:element name="valueDateTime" type="nhis:valueDateTimeBase" minOccurs="0"/>
      <xs:element name="referenceRange" type="nhis:referenceRange" minOccurs="0"/>
      <xs:element name="interpretation" type="nhis:interpretationBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="method" type="nhis:procedureMethodBase" minOccurs="0"/>
      <xs:element name="category" type="nhis:procedureCategoryBase"/>
      <xs:element name="note" type="nhis:text8kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="patient">
    <xs:sequence>
      <xs:element name="identifierType" type="nhis:identifierTypeBase"/>
      <xs:element name="identifier" type="nhis:identifierBase"/>
      <xs:element name="nhifInsuranceNumber" type="nhis:nhifInsuranceNumberBase" minOccurs="0"/>
      <xs:element name="birthDate" type="nhis:birthDateBase"/>
      <xs:element name="gender" type="nhis:genderBase"/>
      <xs:element name="name" type="nhis:humanNameBase"/>
      <xs:element name="address" type="nhis:addressBase"/>
      <xs:element name="nationality" type="nhis:nationalityBase" minOccurs="0"/>
      <xs:element name="phone" type="nhis:phoneBase" minOccurs="0"/>
      <xs:element name="email" type="nhis:emailBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="patientExtended">
    <xs:complexContent>
      <xs:extension base="nhis:patient">
        <xs:sequence>
          <xs:element name="various" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="age" type="nhis:ageBase" minOccurs="0"/>
                <xs:element name="weight" type="nhis:weightBase" minOccurs="0"/>
                <xs:element name="isPregnant" type="nhis:isPregnantBase" minOccurs="0"/>
                <xs:element name="isBreastFeeding" type="nhis:isBreastFeedingBase" minOccurs="0"/>
                <xs:element name="maritalStatus" type="nhis:maritalStatusBase" minOccurs="0"/>
                <xs:element name="education" type="nhis:educationBase" minOccurs="0"/>
                <xs:element name="workplace" type="nhis:workplaceBase" minOccurs="0"/>
                <xs:element name="profession" type="nhis:professionBase" minOccurs="0"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="pharmacist">
    <xs:sequence>
      <xs:element name="pphi" type="nhis:pphiBase"/>
      <xs:element name="rphaNumber" type="nhis:rphaNumberBase"/>
      <xs:element name="pharmacyNumber" type="nhis:pharmacyNumberBase"/>
      <xs:element name="nhifContract" type="nhis:nhifContractBase" minOccurs="0"/>
      <xs:element name="phone" type="nhis:phoneBase" minOccurs="0"/>
      <xs:element name="email" type="nhis:emailBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="procedure">
    <xs:sequence>
      <xs:element name="code" type="nhis:mdaBase"/>
      <xs:element name="performedDateTime" type="nhis:performedDateTimeBase"/>
      <xs:element name="cannotPerform" type="nhis:cannotPerformBase"/>
      <xs:element name="cannotPerformReason" type="nhis:reasonBase" minOccurs="0"/>
      <xs:element name="device" type="nhis:deviceBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="observation" type="nhis:observation" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="conclusion" type="nhis:text8kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="referenceRange">
    <xs:sequence>
      <xs:element name="low" type="nhis:referenceLowBase" minOccurs="0"/>
      <xs:element name="high" type="nhis:referenceHighBase" minOccurs="0"/>
      <xs:element name="text" type="nhis:referenceTextBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="therapy">
    <xs:sequence>
      <xs:element name="nrnPrescription" type="nhis:nrnBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="medicationCode" type="nhis:medicationCodeBase" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="note" type="nhis:text4kBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="verification">
    <xs:sequence>
      <xs:element name="ppn" type="nhis:ppnBase" minOccurs="0"/>
      <xs:element name="gtin" type="nhis:gtinBase" minOccurs="0"/>
      <xs:element name="sn" type="nhis:snBase" minOccurs="0"/>
      <xs:element name="lot" type="nhis:lotBase" minOccurs="0"/>
      <xs:element name="exp" type="nhis:expBase" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>