FQL is a query language that allows you to retrieve, filter and project data from any data source containing FHIR Resources. It brings the power of three existing languages together: SQL, JSON and FhirPath. It allows you to create tables and is useful for gaining insight and perform quality control.
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 obligatoireappointment-statuspermettant 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-sgrdvetapi-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êtrestart/end.booked— nouveau mode : liste de rendez-vous réservés associés au patient.endetappointmentTypesont 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. Utilisezproposedpour conserver le comportement précédent (recherche de disponibilités). - Si vous utilisez le mode
booked:endetappointmentTypesont optionnels. Exploitezextension[cancellable]sur l'Appointmentretourné 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_FOUNDetMSG_AUCUN_RVdans votre gestion desOperationOutcome.
Si vous intégrez $cancel (api-sgrdv)
- Implémentez
POST [base]/Appointment/$cancelavec le profilSGRDVCancelRequestParameters:appointment(logical refIdDispoDME) en 1..1,provenanceen 1..1,cancellationReasonoptionnel. - 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 lesAppointmentretournés par$find(modebooked) avant d'offrir l'option d'annulation.
Si vous intégrez $cancel (api-source — DMÉ/SIP-C)
- Exposez
POST [base]/Appointment/$cancelconforme au profilSGRDVSourceCancelNotificationParameters. - Retournez
SGRDVSourceCancelResponseParametersaveccancellationCompleted = trueen cas de succès, oucancellationCompleted = false+ au moins unOperationOutcomeen cas de refus. - Gérez les règles métier de délai minimum avant annulation et retournez
MSG_DELAI_INSUFFISANTsi 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 sansappointment-statusne sont plus conformes. - Intégrez les nouveaux codes d'erreur SGRDV dans votre mapping de messages utilisateur.
Canonical claims
| http://sante.quebec/fhir/ | Claimed |
| http://sante.quebec/fhir/StructureDefinition/ | Claimed |
| http://sante.quebec/fhir/ImplementationGuide/ | Claimed |
| http://sante.quebec/fhir/OperationDefinition/ | Claimed |
| http://sante.quebec/fhir/CodeSystem/ | Claimed |
| http://sante.quebec/fhir/ValueSet/ | Claimed |
| http://sante.quebec/fhir/CapabilityStatement/ | Claimed |
| http://sante.quebec/ | Claimed |
| http://sante.quebec/fhir/NamingSystem/ | Claimed |