<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="pcm-healthcareservice-instance" />
  <url value="http://pcm.fhir.health.gov.il/StructureDefinition/pcm-healthcareservice-instance" />
  <version value="0.1.6" />
  <name value="PCMHealthcareServiceInstance" />
  <title value="PCM HealthcareService Instance" />
  <status value="active" />
  <description value="Association between a specific Service Provider organization and a specific catalog HealthcareService. Referenced from Consent. Most content is inherited from the catalog entry. Created by organizations; inherited elements are read-only." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="HealthcareService" />
  <baseDefinition value="http://fhir.health.gov.il/StructureDefinition/il-core-healthcare-service" />
  <derivation value="constraint" />
  <differential>
    <element id="HealthcareService.meta.profile">
      <path value="HealthcareService.meta.profile" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="PCM server SHOULD populate meta.profile to declare conformance. This profile requires that the instance profile URL is present." />
      <min value="1" />
    </element>
    <element id="HealthcareService.meta.profile:pcmCatalogProfile">
      <path value="HealthcareService.meta.profile" />
      <sliceName value="pcmCatalogProfile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="http://pcm.fhir.health.gov.il/StructureDefinition/pcm-healthcareservice-instance" />
    </element>
    <element id="HealthcareService.meta.tag">
      <path value="HealthcareService.meta.tag" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="Optional classification tag for workflow/search (_tag)." />
      <min value="1" />
    </element>
    <element id="HealthcareService.meta.tag:pcmCatalogTag">
      <path value="HealthcareService.meta.tag" />
      <sliceName value="pcmCatalogTag" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="HealthcareService.meta.tag:pcmCatalogTag.system">
      <path value="HealthcareService.meta.tag.system" />
      <min value="1" />
      <fixedUri value="http://pcm.fhir.health.gov.il/cs/pcm-meta-tag" />
    </element>
    <element id="HealthcareService.meta.tag:pcmCatalogTag.code">
      <path value="HealthcareService.meta.tag.code" />
      <min value="1" />
      <fixedCode value="instance" />
    </element>
    <element id="HealthcareService.extension">
      <path value="HealthcareService.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="5" />
    </element>
    <element id="HealthcareService.extension:basedOn">
      <path value="HealthcareService.extension" />
      <sliceName value="basedOn" />
      <comment value="Points to the catalog entry from which all non-metadata content is inherited." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-based-on-canonical-healthcareservice" />
      </type>
    </element>
    <element id="HealthcareService.extension:approvalWindow">
      <path value="HealthcareService.extension" />
      <sliceName value="approvalWindow" />
      <comment value="Managed by PCM to indicate the approval period." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-approval-window" />
      </type>
    </element>
    <element id="HealthcareService.extension:accessMode">
      <path value="HealthcareService.extension" />
      <sliceName value="accessMode" />
      <comment value="PCM copies this into Consent.category (access mode) on Consent creation." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-access-mode" />
      </type>
    </element>
    <element id="HealthcareService.extension:accessDuration">
      <path value="HealthcareService.extension" />
      <sliceName value="accessDuration" />
      <comment value="PCM uses this to derive Consent.provision.period on Consent creation." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-access-duration" />
      </type>
    </element>
    <element id="HealthcareService.extension:allowPatientBucketChange">
      <path value="HealthcareService.extension" />
      <sliceName value="allowPatientBucketChange" />
      <comment value="Whether patient can customize buckets when consenting." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-allow-patient-basket-change" />
      </type>
    </element>
    <element id="HealthcareService.extension:informationBucket">
      <path value="HealthcareService.extension" />
      <sliceName value="informationBucket" />
      <comment value="Definition of buckets included in this service." />
      <min value="1" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-information-bucket" />
      </type>
    </element>
    <element id="HealthcareService.extension:exampleQuery">
      <path value="HealthcareService.extension" />
      <sliceName value="exampleQuery" />
      <comment value="Example FHIR queries for implementers." />
      <min value="1" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="http://pcm.fhir.health.gov.il/StructureDefinition/ext-example-query" />
      </type>
    </element>
    <element id="HealthcareService.active">
      <path value="HealthcareService.active" />
      <comment value="Instance is activated after required approvals or after waiting period. Service Provider may deactivate immediately." />
      <min value="1" />
    </element>
    <element id="HealthcareService.providedBy">
      <path value="HealthcareService.providedBy" />
      <comment value="Always filled by the server based on access token/certificate." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://pcm.fhir.health.gov.il/StructureDefinition/pcm-organization-service-provider" />
      </type>
    </element>
    <element id="HealthcareService.providedBy.identifier">
      <path value="HealthcareService.providedBy.identifier" />
      <max value="0" />
    </element>
    <element id="HealthcareService.category">
      <path value="HealthcareService.category" />
      <comment value="At least one category is required. Binding is extensible to allow PCM-specific additions later; currently includes HL7 service-category." />
      <min value="1" />
      <binding>
        <strength value="extensible" />
        <valueSet value="http://pcm.fhir.health.gov.il/ValueSet/pcm-healthcareservice-category" />
      </binding>
    </element>
    <element id="HealthcareService.type">
      <path value="HealthcareService.type" />
      <comment value="Hardcoded: The service type is information access (INFA)." />
      <min value="1" />
      <max value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode" />
          <code value="INFA" />
          <display value="information access" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="HealthcareService.specialty">
      <path value="HealthcareService.specialty" />
      <max value="0" />
    </element>
    <element id="HealthcareService.location">
      <path value="HealthcareService.location" />
      <max value="0" />
    </element>
    <element id="HealthcareService.name">
      <path value="HealthcareService.name" />
      <min value="1" />
    </element>
    <element id="HealthcareService.comment">
      <path value="HealthcareService.comment" />
      <max value="0" />
    </element>
    <element id="HealthcareService.extraDetails">
      <path value="HealthcareService.extraDetails" />
      <comment value="Detailed description of the service for implementers and users." />
      <min value="1" />
    </element>
    <element id="HealthcareService.photo">
      <path value="HealthcareService.photo" />
      <max value="0" />
    </element>
    <element id="HealthcareService.telecom">
      <path value="HealthcareService.telecom" />
      <max value="0" />
    </element>
    <element id="HealthcareService.coverageArea">
      <path value="HealthcareService.coverageArea" />
      <max value="0" />
    </element>
    <element id="HealthcareService.serviceProvisionCode">
      <path value="HealthcareService.serviceProvisionCode" />
      <max value="0" />
    </element>
    <element id="HealthcareService.eligibility">
      <path value="HealthcareService.eligibility" />
      <max value="0" />
    </element>
    <element id="HealthcareService.program">
      <path value="HealthcareService.program" />
      <max value="0" />
    </element>
    <element id="HealthcareService.characteristic">
      <path value="HealthcareService.characteristic" />
      <max value="0" />
    </element>
    <element id="HealthcareService.communication">
      <path value="HealthcareService.communication" />
      <max value="0" />
    </element>
    <element id="HealthcareService.referralMethod">
      <path value="HealthcareService.referralMethod" />
      <max value="0" />
    </element>
    <element id="HealthcareService.appointmentRequired">
      <path value="HealthcareService.appointmentRequired" />
      <max value="0" />
    </element>
    <element id="HealthcareService.availableTime">
      <path value="HealthcareService.availableTime" />
      <max value="0" />
    </element>
    <element id="HealthcareService.notAvailable">
      <path value="HealthcareService.notAvailable" />
      <max value="0" />
    </element>
    <element id="HealthcareService.availabilityExceptions">
      <path value="HealthcareService.availabilityExceptions" />
      <max value="0" />
    </element>
    <element id="HealthcareService.endpoint">
      <path value="HealthcareService.endpoint" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>