Cancel an appointment

Citizen cancels

An appointment is cancelled by updating the Appointment resource. The appointment and patient participant statuses are changed.

  • Appointment status => cancelled
  • Patient actor status => declined
PUT [base]/Appointment/605790
Content-Type: application/fhir+json
{
  "resourceType": "Appointment",
  "id": "605790",
  "status": "cancelled",
  ...
  "participant": [
    {
      "actor": {
        "identifier": {
          "value": "010101-123N",
          "system": "urn:oid:1.2.246.21"
        },
        "display": "Pentti Potilas"
      },
      "status": "declined",
      "type": [
        {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
              "code": "SBJ",
              "display": "subject"
            }
          ]
        }
      ]      
    },
    ...
  ]
}

Response

If the appointment is created successfully, the server responds with a 200 OK.

The full resource can also be returned. See more: http://www.hl7.org/fhir/http.html#ops

Implementation example

Example client call when using HAPI FHIR

    public void cancelAppointment(FinnishAppointmentAppointment appointment) {
        appointment.setStatus(Appointment.AppointmentStatus.CANCELLED);
        appointment.getParticipant()
                .stream()
                .filter(p -> p.getActor().getType().equals(ResourceTypes.PATIENT.toCode()))
                .findFirst()
                .ifPresent(p -> p.setStatus(Appointment.ParticipationStatus.DECLINED));

        String baseUrl = "http://example.com/fhir";
        FhirContext fhirContext = FhirContext.forR4();
        IGenericClient client = fhirContext.newRestfulGenericClient(baseUrl);

        client.update()
                .resource(appointment)
                .execute();
    }

Error handling

The update should be rejected with a 400 Bad Request if the resource id in the URL and JSON body do not match.

See more: http://www.hl7.org/fhir/http.html#rejecting-updates