<?xml version="1.0" encoding="UTF-8"?>

<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="BookAppointment"/>
  <text>
    <status value="generated"/><div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: OperationDefinition BookAppointment</b></p><a name="BookAppointment"> </a><a name="hcBookAppointment"> </a><p>URL: [base]/Appointment/$book</p><p>Output parameters Profile:<a href="https://profiles.ihe.net/ITI/Scheduling/1.0.0/StructureDefinition-ihe-sched-avail-bundle.html">IHE ITI Scheduling Bundle Profile</a></p><h3>Parameters</h3><table class="grid"><tr><td><b>Use</b></td><td><b>Name</b></td><td><b>Scope</b></td><td><b>Cardinality</b></td><td><b>Type</b></td><td><b>Binding</b></td><td><b>Documentation</b></td></tr><tr><td>IN</td><td>appointment</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/appointment.html">Appointment</a> (<a href="https://profiles.ihe.net/ITI/Scheduling/1.0.0/StructureDefinition-ihe-sched-appt.html" title="https://profiles.ihe.net/ITI/Scheduling/StructureDefinition/ihe-sched-appt">IHE ITI Appointment Profile</a>)</td><td/><td><div><p>The Appointment to be created, modified, or cancelled.</p>
<ul>
<li>CREATE:
<ul>
<li>Appointment.id is absent or refers to a non-existing appointment</li>
<li>Appointment.status is 'pending'</li>
</ul>
</li>
<li>MODIFY:
<ul>
<li>Appointment.id identifies an existing appointment</li>
<li>Appointment.status is 'booked' and details (time, participants, etc.) are updated</li>
</ul>
</li>
<li>CANCEL:
<ul>
<li>Appointment.id identifies an existing appointment</li>
<li>Appointment.status is 'cancelled'</li>
</ul>
</li>
</ul>
</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/bundle.html">Bundle</a></td><td/><td><div><p>On success, returns a Bundle that SHALL conform to ihe-sched-avail-bundle, containing the resulting Appointment:</p>
<ul>
<li>status 'booked' for created or modified appointments</li>
<li>status 'cancelled' for cancelled appointments</li>
</ul>
<p>On error, an OperationOutcome is returned instead of this parameter.</p>
</div></td></tr></table></div>
  </text>
  <url value="http://canonical.fhir.link/servicewell/wof-connect/OperationDefinition/BookAppointment"/>
  <version value="0.1.3"/>
  <name value="BookAppointment"/>
  <title value="Book / Modify / Cancel Appointment"/>
  <status value="active"/>
  <kind value="operation"/>
  <date value="2026-04-02T09:23:40+00:00"/>
  <publisher value="Service Well AB"/>
  <contact>
    <name value="Service Well AB"/>
    <telecom>
      <system value="url"/>
      <value value="https://servicewell.se"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="info@servicewell.se"/>
    </telecom>
  </contact>
  <description value="Creates, modifies, or cancels an Appointment based on the supplied Appointment resource.&#xA;&#xA;This operation corresponds to the IHE ITI Scheduling $book operation and:&#xA;- CREATES a new Appointment when a new, schedulable Appointment is supplied&#xA;- MODIFIES an existing Appointment when an updated Appointment is supplied&#xA;- CANCELS an existing Appointment when a cancellation Appointment is supplied&#xA;&#xA;On success, the operation returns the finalized Appointment in an IHE Scheduled Availability Bundle."/>
  <affectsState value="true"/>
  <code value="book"/>
  <base value="https://profiles.ihe.net/ITI/Scheduling/OperationDefinition/appointment-book"/>
  <resource value="Appointment"/>
  <system value="false"/>
  <type value="true"/>
  <instance value="false"/>
  <outputProfile value="https://profiles.ihe.net/ITI/Scheduling/StructureDefinition/ihe-sched-avail-bundle"/>
  <parameter>
    <name value="appointment"/>
    <use value="in"/>
    <min value="1"/>
    <max value="1"/>
    <documentation value="The Appointment to be created, modified, or cancelled.&#xA;&#xA;- CREATE:&#xA;  - Appointment.id is absent or refers to a non-existing appointment&#xA;  - Appointment.status is 'pending'&#xA;- MODIFY:&#xA;  - Appointment.id identifies an existing appointment&#xA;  - Appointment.status is 'booked' and details (time, participants, etc.) are updated&#xA;- CANCEL:&#xA;  - Appointment.id identifies an existing appointment&#xA;  - Appointment.status is 'cancelled'"/>
    <type value="Appointment"/>
    <targetProfile value="https://profiles.ihe.net/ITI/Scheduling/StructureDefinition/ihe-sched-appt"/>
  </parameter>
  <parameter>
    <name value="return"/>
    <use value="out"/>
    <min value="1"/>
    <max value="1"/>
    <documentation value="On success, returns a Bundle that SHALL conform to ihe-sched-avail-bundle, containing the resulting Appointment:&#xA;- status 'booked' for created or modified appointments&#xA;- status 'cancelled' for cancelled appointments&#xA;&#xA;On error, an OperationOutcome is returned instead of this parameter."/>
    <type value="Bundle"/>
  </parameter>
</OperationDefinition>