Changelog SGRDV — release 1.2.0
Date de publication : 17 juin 2026
Légende : 🔴 = rupture sur contrat de production (experimental = false) · 🟠 = rupture sur contrat en validation (experimental = true) · 🟢 = ajout rétrocompatible
1. Versionnement et statut
1.1 Publication de la version 1.2.0 🟠
Cette release applique un bump MINEUR portant deux changements :
- §2 —
$find : nouveau paramètre obligatoire appointment-status permettant de distinguer une recherche de disponibilités (proposed) d'une consultation de rendez-vous existants (booked). Rupture sur les clients qui ne fournissent pas ce paramètre. 🟠
- §3 —
$cancel : nouvel endpoint d'annulation de rendez-vous sur les deux surfaces (api-sgrdv et api-source). Ajout rétrocompatible. 🟢
Le bump MINEUR est déclenché par §3 (nouvel endpoint) conformément à la politique de versionnement SGRDV. La rupture §2 est sur des artefacts experimental = true.
Tous les artefacts versionnés sont alignés sur la version 1.2.0 via la configuration du paquet IG.
2. $find — Mode liste de rendez-vous : appointment-status obligatoire 🟠
S'applique au profil partagé SGRDVBaseFindPayloadParameters (et donc aux deux profils surface-spécifiques SGRDVFindRequestParameters et SGRDVSourceFindRequestParameters qui en héritent).
2.1 Nouveau paramètre obligatoire appointment-status 🟠
| Élément |
Avant |
Après |
parameter[appointmentStatus] |
absent |
1..1 — nouveau paramètre obligatoire |
parameter[appointmentStatus].value[x] |
n/a |
code bindé required à SGRDVFindAppointmentStatusVS |
| Valeurs acceptées |
n/a |
proposed (disponibilités) · booked (RV réservés) |
Le paramètre appointment-status pilote le mode de la recherche :
proposed — comportement inchangé : recherche de créneaux disponibles dans une fenêtre start/end.
booked — nouveau mode : liste de rendez-vous réservés associés au patient. end et appointmentType sont optionnels dans ce mode (règles métier documentaires, non contraintes par invariant FHIR).
2.2 Paramètres rendus optionnels 🟢
| Élément |
Avant |
Après |
Règle métier associée |
parameter[end] |
1..1 |
0..1 |
Obligatoire si appointment-status = proposed |
parameter[appointmentType] |
1..1 |
0..1 |
Obligatoire si appointment-status = proposed |
Ces assouplissements sont rétrocompatibles : les payloads précédents fournissant end et appointmentType restent conformes en 1.2.0.
2.3 SGRDVBaseFindPatient — admisGap rendu optionnel 🟢
| Élément |
Avant |
Après |
extension[admisGap] |
1..1 MS |
0..1 MS |
L'extension admisGap n'est pas pertinente dans le mode booked. Le portail peut l'omettre lorsque appointment-status = booked.
2.4 Nouveau ValueSet SGRDVFindAppointmentStatusVS 🟢
| Artefact |
Type |
Codes |
SGRDVFindAppointmentStatusVS |
ValueSet commun |
proposed · booked (sous-ensemble de AppointmentStatus FHIR R4) |
Binding required sur parameter[appointmentStatus].valueCode.
2.5 Nouvelle extension SGRDVAppointmentCancellableExtension sur Appointment 🟢
| Élément |
Type |
Cardinalité |
Description |
SGRDVBaseFindResponseAppointment.extension[cancellable] |
SGRDVAppointmentCancellableExtension |
0..1 MS |
Indique si le RV peut être annulé depuis un portail. Retourné par le DMÉ dans les réponses $find mode booked. Une absence est interprétée comme true (valeur par défaut implicite). |
2.6 Nouveaux codes d'erreur 🟢
| Code |
Libellé |
Contexte |
MSG_PATIENT_NOT_FOUND |
Patient non trouvé par le DMÉ |
Mode booked : le patient n'existe pas dans le DMÉ |
MSG_AUCUN_RV |
Aucun rendez-vous réservé associé au patient pour la période couverte |
Mode booked : aucun RV ne correspond aux critères |
2.7 Nouvelles instances d'exemple — mode booked 🟢
| Instance |
Surface |
Rôle |
SGRDVFindExampleBookedRequest |
api-sgrdv |
Requête $find avec appointment-status = booked |
SGRDVFindExampleBookedResponseSuccess |
api-sgrdv |
Bundle de réponse succès (mode booked) avec Appointment + Provenance |
SGRDVFindExampleBookedResponseAppointment |
api-sgrdv |
Appointment avec extension cancellable |
SGRDVFindExampleBookedResponseProvenance |
api-sgrdv |
Provenance associée au RV retourné |
SGRDVFindExampleBookedResponseOutcome |
api-sgrdv |
OperationOutcome informational |
SGRDVSourceFindExampleBookedRequest |
api-source |
Requête $find mode booked côté source |
SGRDVSourceFindExampleBookedResponseSuccess |
api-source |
Bundle de réponse succès mode booked côté source |
2.8 Artefacts mis à jour
| Artefact |
Type |
Modification |
SGRDVBaseFindPayloadParameters |
Profile (Parameters) commun |
Nouveau slice appointmentStatus 1..1 · end 1..1 → 0..1 · appointmentType 1..1 → 0..1 |
SGRDVBaseFindPatient |
Profile (Patient) commun |
extension[admisGap] 1..1 → 0..1 |
SGRDVBaseFindResponseAppointment |
Profile (Appointment) commun |
Nouvelle extension cancellable 0..1 MS |
SGRDVFindRequestParameters |
Profile (Parameters) api-sgrdv |
Héritage aligné (tightening inchangé) |
SGRDVSourceFindRequestParameters |
Profile (Parameters) api-source |
Héritage aligné (tightening inchangé) |
SGRDVFindResponseBundle |
Profile (Bundle) api-sgrdv |
Agrégat mis à jour |
SGRDVSourceFindResponseBundle |
Profile (Bundle) api-source |
Agrégat mis à jour |
SGRDVFindAppointmentStatusVS |
ValueSet commun |
Nouveau |
SGRDVAppointmentCancellableExtension |
Extension commune |
Nouveau |
SGRDVOperationOutcomeCS |
CodeSystem commun |
Ajout MSG_PATIENT_NOT_FOUND · MSG_AUCUN_RV |
3. $cancel — Nouvel endpoint d'annulation de rendez-vous 🟢
Nouvel endpoint POST [base]/Appointment/$cancel disponible sur les deux surfaces.
3.1 Comportement fonctionnel
Le portail transmet la disponibilité à annuler en logical reference (IdDispoDME), une raison d'annulation optionnelle (texte libre) et la Provenance multi-agents (identique à $book). SGRDV identifie le DMÉ responsable et relaie la demande via la surface source. La réponse indique si l'annulation a été effectuée (cancellationCompleted = true) ou refusée (cancellationCompleted = false) avec des OperationOutcome explicatifs.
3.2 Profils de requête / réponse
| Artefact |
Type |
Surface |
Description |
SGRDVBaseCancelPayloadParameters |
Profile (Parameters) commun |
Les deux |
Paramètres d'entrée neutres : appointment (logical ref, 0..1), cancellationReason (string, 0..1), provenance (0..1) |
SGRDVBaseCancelResponseParameters |
Profile (Parameters) commun |
Les deux |
Paramètres de sortie neutres : cancellationCompleted (boolean, 1..1), outcome (SGRDVBaseOperationOutcome, 0..*) |
SGRDVCancelRequestParameters |
Profile (Parameters) api-sgrdv |
api-sgrdv |
Tightening : appointment 1..1 · provenance 1..1 |
SGRDVCancelResponseParameters |
Profile (Parameters) api-sgrdv |
api-sgrdv |
Tightening MustSupport |
SGRDVSourceCancelNotificationParameters |
Profile (Parameters) api-source |
api-source |
Tightening : appointment 1..1 · provenance 1..1 |
SGRDVSourceCancelResponseParameters |
Profile (Parameters) api-source |
api-source |
Tightening MustSupport |
3.3 Opérations
| Artefact |
Surface |
URL |
SGRDVAppointmentCancelOperation |
api-sgrdv |
POST [base]/Appointment/$cancel |
SGRDVSourceAppointmentCancelOperation |
api-source |
POST [base]/Appointment/$cancel |
3.4 Nouveaux codes d'erreur 🟢
| Code |
Libellé |
Contexte |
MSG_RV_INEXISTANT |
Le rendez-vous demandé est inexistant |
Le DMÉ ne trouve pas la disponibilité référencée |
MSG_RV_NOTBOOKED |
Le rendez-vous n'a pas le statut BOOKED |
Seuls les RV au statut booked sont annulables |
MSG_DELAI_INSUFFISANT |
Le délai avant le rendez-vous est insuffisant pour permettre l'annulation |
Le DMÉ applique un délai minimum avant annulation |
3.5 Nouvelles instances d'exemple 🟢
| Instance |
Surface |
Rôle |
SGRDVCancelExampleRequest |
api-sgrdv |
Requête $cancel (portail → SGRDV) |
SGRDVCancelExampleRequestProvenance |
api-sgrdv |
Provenance multi-agents de la requête |
SGRDVCancelExampleContainedDevicePortail |
api-sgrdv |
Device portail embarqué dans la Provenance |
SGRDVCancelExampleResponseSuccess |
api-sgrdv |
Réponse succès (cancellationCompleted = true) |
SGRDVCancelExampleResponseRefused |
api-sgrdv |
Réponse refus avec OperationOutcome |
SGRDVCancelExampleOutcomeRefused |
api-sgrdv |
OperationOutcome de refus |
SGRDVSourceCancelExampleRequest |
api-source |
Notification $cancel (SGRDV → DMÉ) |
SGRDVSourceCancelExampleRequestProvenance |
api-source |
Provenance multi-agents côté source |
SGRDVSourceCancelExampleContainedDeviceSGRDV |
api-source |
Device SGRDV embarqué dans la Provenance |
SGRDVSourceCancelExampleResponseSuccess |
api-source |
Réponse succès DMÉ |
SGRDVSourceCancelExampleResponseRefused |
api-source |
Réponse refus DMÉ avec OperationOutcome |
SGRDVSourceCancelExampleOutcomeRefused |
api-source |
OperationOutcome de refus DMÉ |
4. Recommandations de migration pour les partenaires
Si vous intégrez $find (api-sgrdv ou api-source)
- Ajoutez
appointment-status à toutes vos requêtes $find — ce paramètre est désormais obligatoire. Utilisez proposed pour conserver le comportement précédent (recherche de disponibilités).
- Si vous utilisez le mode
booked : end et appointmentType sont optionnels. Exploitez extension[cancellable] sur l'Appointment retourné pour déterminer si le RV peut être annulé avant d'offrir l'option d'annulation.
- Traitez les nouveaux codes d'erreur
MSG_PATIENT_NOT_FOUND et MSG_AUCUN_RV dans votre gestion des OperationOutcome.
Si vous intégrez $cancel (api-sgrdv)
- Implémentez
POST [base]/Appointment/$cancel avec le profil SGRDVCancelRequestParameters : appointment (logical ref IdDispoDME) en 1..1, provenance en 1..1, cancellationReason optionnel.
- Gérez les trois codes de refus :
MSG_RV_INEXISTANT, MSG_RV_NOTBOOKED, MSG_DELAI_INSUFFISANT — présentez un message explicite à l'utilisateur dans chaque cas.
- Vérifiez la présence de
extension[cancellable] sur les Appointment retournés par $find (mode booked) avant d'offrir l'option d'annulation.
Si vous intégrez $cancel (api-source — DMÉ/SIP-C)
- Exposez
POST [base]/Appointment/$cancel conforme au profil SGRDVSourceCancelNotificationParameters.
- Retournez
SGRDVSourceCancelResponseParameters avec cancellationCompleted = true en cas de succès, ou cancellationCompleted = false + au moins un OperationOutcome en cas de refus.
- Gérez les règles métier de délai minimum avant annulation et retournez
MSG_DELAI_INSUFFISANT si applicable.
Toutes intégrations confondues
- Mettez à jour vos références au paquet SUSHI (
version: 1.2.0).
- Revalidez vos jeux de tests
$find : les requêtes sans appointment-status ne sont plus conformes.
- Intégrez les nouveaux codes d'erreur SGRDV dans votre mapping de messages utilisateur.