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.1.1
Date de publication : 3 juillet 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 Bump 1.1.0 → 1.1.1
Cette release correspond à un bump PATCH. Tous les artefacts modifiés portent experimental = true. Les ruptures individuelles justifient le symbole 🟠 mais n'imposent qu'un bump PATCH conformément à la politique de versionnement §4.1.
Résumé des changements :
- §2 —
$booksurface source : renommage du profilSGRDVSourceBookNotificationParameters→SGRDVSourceBookRequestParameters. 🟠 - §3 — Audit : deux nouvelles extensions obligatoires (
correlationId,discussionId1..1 MS) surSGRDVAuditEvent;idetidentifier.type(#DiscussionId) rendus obligatoires surSGRDVAuditBundle. 🟠 - §4 —
$bookcommun : slicing ouvert et invariant ajoutés surSGRDVBaseBookSourceDevicepour l'identifiant de portail. 🟠 - §5 —
$find/$aggregate:parameter[appointmentType]rendu optionnel (1..1→0..1). 🟢 - §6 —
Location.address: correction de l'exemple et définition deaddress.text(correctif documentaire).
Tous les artefacts versionnés (config IG, OperationDefinition, CapabilityStatement) sont alignés sur la version 1.1.1.
2. $book surface source — Renommage du profil des paramètres d'entrée 🟠
2.1 Renommage 🟠
Le profil des paramètres d'entrée de l'opération $book côté surface source (api-source) portait à tort le terme « Notification », sans rapport avec la réservation de rendez-vous. Il est renommé pour aligner sur la sémantique réelle de l'opération et la convention de nommage des artefacts SGRDV.
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
| Nom du profil | SGRDVSourceBookNotificationParameters |
SGRDVSourceBookRequestParameters |
| Id canonique | sgrdv-source-book-notification-parameters |
sgrdv-source-book-request-parameters |
La structure du profil est identique — seul le nom et l'Id canonique changent.
⚠️ Action requise : Mettre à jour toute référence au profil SGRDVSourceBookNotificationParameters ou à son Id sgrdv-source-book-notification-parameters dans vos implémentations, validateurs et exemples.
2.2 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVSourceBookRequestParameters (ex-SGRDVSourceBookNotificationParameters) |
Profile (Parameters) api-source |
Renommage du profil et de son Id canonique |
3. Audit — Prise en charge du Discussion-Id 🟠
3.1 Nouvelles extensions obligatoires sur SGRDVAuditEvent 🟠
Deux extensions sont désormais obligatoires (1..1 MS) sur SGRDVAuditEvent :
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
extension[correlationId] (sgrdv-audit-correlation-id) |
absent | 1..1 MS (valueString) |
extension[discussionId] (sgrdv-audit-discussion-id) |
absent | 1..1 MS (valueString) |
3.2 Nouvelles contraintes sur SGRDVAuditBundle 🟠
Le Discussion-Id est désormais porté par Bundle.identifier.type = #DiscussionId pour regrouper les Bundles d'un même fil de discussion. Le Bundle.id devient obligatoire.
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
id |
non contraint | 1..1 MS |
identifier.type |
non contraint | 1..1 MS — code #DiscussionId |
identifier.type.coding.system |
non contraint | SGRDVIdentifierTypeCS (exactly) |
identifier.type.coding.code |
non contraint | #DiscussionId (exactly) |
3.3 Nouveau code #DiscussionId dans SGRDVIdentifierTypeCS 🟢
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
Code #DiscussionId |
absent | Ajouté |
⚠️ Action requise : Les implémentations qui produisent ou consomment des Bundles d'audit (SGRDVAuditBundle) doivent :
- Renseigner
extension[correlationId](valeur du headerX-Correlation-Id) sur chaqueAuditEvent. - Renseigner
extension[discussionId](valeur du headerX-Discussion-Id) sur chaqueAuditEvent. - Renseigner
Bundle.id(identifiant unique du Bundle). - Renseigner
Bundle.identifier.type.coding.code = #DiscussionIdetBundle.identifier.type.coding.systemcorrespondant.
3.4 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVAuditEvent |
Profile (AuditEvent) commun |
Extensions correlationId et discussionId ajoutées en 1..1 MS |
SGRDVAuditBundle |
Profile (Bundle) commun |
id 1..1 MS ; identifier.type fixé à #DiscussionId |
SGRDVAuditCorrelationIdExtension |
Extension commun |
Nouvelle extension (valueString) |
SGRDVAuditDiscussionIdExtension |
Extension commun |
Nouvelle extension (valueString) |
SGRDVIdentifierTypeCS |
CodeSystem commun |
Ajout du code #DiscussionId |
4. $book — Identifiant de portail sur SGRDVBaseBookSourceDevice 🟠
4.1 Nouveau slicing et invariant 🟠
Un slicing ouvert est ajouté sur identifier du Device source d'une demande $book, avec un invariant d'erreur garantissant la présence d'au moins un identifiant émis par le portail RVSQ Réo ou par Votre santé.
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
identifier |
non contraint | Slicing ouvert : slices reo (system = $ns-rvsqreo, 0..) et votresante (system = $ns-votresante, 0..) |
Invariant sgrdv-book-device-portail-identifier |
absent | Erreur si aucun identifiant $ns-rvsqreo ou $ns-votresante n'est présent |
⚠️ Action requise : Vérifier que le Device source inclus dans le payload $book porte un identifiant avec system = "http://sante.quebec/fhir/NamingSystem/RVSQREO" ou system = "http://sante.quebec/fhir/NamingSystem/VOTRESANTE".
4.2 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseBookSourceDevice |
Profile (Device) commun |
Slicing ouvert identifier (reo, votresante) ; invariant sgrdv-book-device-portail-identifier |
5. $find / $aggregate — appointmentType rendu optionnel 🟢
5.1 Changement de cardinalité 🟢
| Élément | Avant (1.1.0) | Après (1.1.1) |
|---|---|---|
parameter[appointmentType] |
1..1 |
0..1 |
Le type de rendez-vous n'est pas requis pour les plages REO et GAP. La validation métier (obligatoire si timeslotCategory = populationnel) est assurée côté service, hors contrainte FSH.
5.2 Impact partenaires 🟢
- Portails (surface
api-sgrdv) :appointment-typen'est plus requis dans le payload$find. Les implémentations qui l'omettaient pour des plages REO ou GAP sont désormais conformes au profil. - SGRDV (propagation vers
api-source) : même assouplissement côté surface source.
5.3 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseFindPayloadParameters |
Profile (Parameters) commun |
parameter[appointmentType] : 1..1 → 0..1 |
6. Location.address — Correctif documentaire
Correction de l'exemple d'instance et des métadonnées du champ address.text dans le profil SGRDVBaseFindResponseLocation. Aucun impact sur les payloads valides.
| Élément | Correction |
|---|---|
Exemple d'instance (address.line) |
Remplacé par address.text = "1234 rue Saint-Denis, App 4" |
address.text ^short / ^definition / ^comment / ^example |
Clarification : address.text porte les lignes d'adresse (numéro, rue, appartement) sans la ville, province ni code postal |
7. Recommandations de migration pour les partenaires
Si vous intégrez $book (surface api-source)
- Mettre à jour toute référence au profil
SGRDVSourceBookNotificationParameters(Idsgrdv-source-book-notification-parameters) versSGRDVSourceBookRequestParameters(Idsgrdv-source-book-request-parameters). - Vérifier que le
Devicesource du$bookporte un identifiantsystem = "$ns-rvsqreo"ousystem = "$ns-votresante".
Si vous produisez ou consommez des Bundles d'audit
- Renseigner
extension[correlationId](X-Correlation-Id) etextension[discussionId](X-Discussion-Id) sur chaqueAuditEvent. - Renseigner
Bundle.idetBundle.identifier.type.coding.code = #DiscussionIdsur chaqueSGRDVAuditBundle. - Revalider vos payloads d'audit contre la version
1.1.1.
Si vous intégrez $find ou $aggregate
- Le paramètre
appointment-typeest désormais optionnel — aucune action requise si vous le renseigniez déjà. Les implémentations qui l'omettaient pour des plages REO ou GAP sont maintenant conformes.
Toutes intégrations confondues
- Revalidez vos payloads contre la version
1.1.1du paquet IG. - Traitez les §2, §3 et §4 comme des ruptures sur contrats expérimentaux — des mises à jour sont requises avant la prochaine validation partenaire.
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 |