ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

AppointmentResponse — Réponse à un RDV

Un acteur — patient, praticien, salle — répond à une proposition de rendez-vous. Acceptation, refus, contre-proposition : AppointmentResponse trace chaque RSVP.

Objet de la ressource

AppointmentResponse représente la réponse d'un participant à un Appointment proposé. Quand le système crée un rendez-vous avec plusieurs participants (médecin, patient, salle, dispositif), chacun peut répondre individuellement — une AppointmentResponse par acteur. Le statut global de l'Appointment dépend des réponses agrégées : booked seulement si tous les requis ont accepted.

Champs clés

ChampTypeCardinalitéRôle
identifierIdentifier[]0..*Identifiants externes.
appointmentReference(Appointment)1..1Obligatoire. RDV cible.
proposedNewTimeboolean0..1true = contre-proposition d'un autre créneau.
startinstant0..1Début proposé/accepté.
endinstant0..1Fin proposée/acceptée.
participantTypeCodeableConcept[]0..*Rôle du participant.
actorReference(Patient | Group | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location)0..1Participant répondant.
participantStatuscode1..1Obligatoire. accepted, declined, tentative, needs-action.
commentstring0..1Commentaire libre.
recurringboolean0..1S'applique à toute la série.
occurrenceDatedate0..1Occurrence ciblée (si récurrent).
recurrenceIdpositiveInt0..1ID d'occurrence dans la série.

Cycle de vie

Un Appointment est créé en proposed ou pending : le serveur génère une AppointmentResponse needs-action par participant requis. Chaque réponse modifie le statut du participant correspondant dans l'Appointment.participant[]. Quand tous les participants requis ont accepted, l'Appointment passe à booked.

Exemple JSON

Un patient confirme son RDV du 20 mai 2026 :

json appointmentresponse-patient.json
{
  "resourceType": "AppointmentResponse",
  "id": "ar-001",
  "identifier": [{ "system": "urn:oid:1.2.34", "value": "AR-2026-05-15-001" }],
  "appointment": { "reference": "Appointment/apt-2026-05-20-001" },
  "proposedNewTime": false,
  "start": "2026-05-20T10:00:00+02:00",
  "end": "2026-05-20T10:30:00+02:00",
  "participantType": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
      "code": "ATND",
      "display": "attender"
    }]
  }],
  "actor": { "reference": "Patient/doe-john" },
  "participantStatus": "accepted",
  "comment": "Confirmé, j'arriverai 10 minutes en avance",
  "recurring": false,
  "occurrenceDate": "2026-05-20"
}

Pièges courants

  • Pas de synchronisation Appointment.participant.status — créer une AppointmentResponse sans mettre à jour le statut côté Appointment laisse l'EHR confus.
  • Contre-proposition sans start/endproposedNewTime=true doit s'accompagner d'un nouveau créneau, sinon il n'y a pas de proposition exploitable.
  • Réponse pour un acteur non listé — l'actor doit faire partie de l'Appointment.participant[].
  • Récurrence ambiguërecurring=true sans occurrenceDate applique à toutes les occurrences : souvent involontaire.
  • Confondre avec Appointment.participant.status — la réponse formelle est une ressource ; le statut est dénormalisé pour la lecture rapide.

Ressources liées