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.0.5
Date de publication : 25 mai 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.0.4 → 1.0.5 🟠
Cette release applique un bump PATCH portant plusieurs modifications :
- §2 — Sur les deux surfaces (
api-sgrdvetapi-source), leBundlede réponse de l'opération$bookdoit désormais toujours contenir unOperationOutcome(succès comme refus). Auparavant, l'OperationOutcomen'était attendu qu'en cas de refus. 🟠 - §3 —
$findPractitioner : nouvelle extensionstatutGMFProfessionnel(GMF / Hors GMF). 🟢 - §4 —
$book:agent[professionnelREO].onBehalfOfélargi à trois profils Organization (Clinique / Institution / CIUSS) et nouveau sliceparameter[organisationREO]matérialisant l'organisation d'origine de la réorientation au niveau du payload. 🟢 - §5 —
$book: interdiction explicite de matérialisation de l'Appointmentviaparameter[bookedAppointment].resource. 🟢 (neutre en pratique — déjà couvert par l'invariant FHIRinv-1) - §6 —
$lock/$process-message: précision documentaire (SGRDV est l'autorité du verrou). - §7 —
list-clinics: reformulation terminologique (services couverts par la RAMQ plutôt que « cliniques publiques »). - §8 — Pipeline CI / build : mises à jour mineures Azure Pipelines (hors contrat partenaire).
Le bump PATCH est déclenché par §2 (rupture sur un contrat experimental = true). Les autres sections sont rétrocompatibles ou documentaires et ne justifieraient pas un bump à elles seules.
Tous les artefacts versionnés (config IG, OperationDefinition, CapabilityStatement) sont alignés sur la version 1.0.5. L'attribut experimental = true est conservé sur tous les artefacts.
Le bump est conforme à la politique de versionnement publiée en 1.0.2 : ruptures sur des artefacts experimental = true → bump PATCH.
2. Bundle de réponse de $book — OperationOutcome toujours présent 🟠
S'applique au profil partagé SGRDVBaseBookResponseBundle (et donc aux deux profils surface-spécifiques SGRDVBookResponseBundle et SGRDVSourceBookResponseBundle qui en héritent).
2.1 Changement de cardinalité 🟠
| Élément | Avant (1.0.4) | Après (1.0.5) |
|---|---|---|
entry[outcome] |
0..* |
1..* |
entry[resultParameters] |
0..1 |
inchangé — 0..1 |
L'OperationOutcome n'est donc plus conditionnel à un refus : il accompagne aussi les réponses de succès.
2.2 Sémantique attendue de l'OperationOutcome
| Cas | Contenu du Bundle |
OperationOutcome.issue.severity |
|---|---|---|
| Succès | Parameters (SGRDVBaseBookResultParameters) avec la disponibilité réservée en logical reference + OperationOutcome |
#information |
| Refus (verrou expiré, refus DMÉ, etc.) | OperationOutcome seul |
#error ou #warning |
L'Appointment réservée n'est jamais rematérialisée dans le Bundle de réponse — le portail dispose déjà de l'information matérialisée via $find. Cette règle reste inchangée par rapport à 1.0.4.
2.3 Impact partenaires
- Émetteurs (SGRDV vers portails sur
api-sgrdv; DMÉ/SIP-C vers SGRDV surapi-source) : doivent désormais émettre unOperationOutcomeinformational dans le Bundle de succès, en plus duParametersde résultat. Un Bundle de succès sansOperationOutcomen'est plus conforme. - Récepteurs : peuvent désormais s'attendre à recevoir un
OperationOutcomedans tous les cas et l'utiliser pour journaliser/afficher un message d'accusé de réception sur les réponses de succès.
2.4 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseBookResponseBundle |
Profile (Bundle) commun |
entry[outcome] 0..* → 1..* + Description |
SGRDVBookResponseBundle |
Profile (Bundle) api-sgrdv |
Description alignée (héritage inchangé) |
SGRDVSourceBookResponseBundle |
Profile (Bundle) api-source |
Description alignée (héritage inchangé) |
SGRDVAppointmentBookOperation |
OperationDefinition api-sgrdv |
Description de la sortie alignée |
SGRDVSourceAppointmentBookOperation |
OperationDefinition api-source |
Description de la sortie alignée |
2.5 Nouvelles instances d'exemple 🟢
| Instance | Surface | Rôle |
|---|---|---|
SGRDVBookExampleOutcomeSuccess |
api-sgrdv |
OperationOutcome informational embarqué dans SGRDVBookExampleResponseSuccess |
SGRDVSourceBookExampleOutcomeSuccess |
api-source |
OperationOutcome informational embarqué dans SGRDVSourceBookExampleResponseSuccess |
Les exemples de succès (SGRDVBookExampleResponseSuccess et SGRDVSourceBookExampleResponseSuccess) embarquent désormais à la fois le Parameters de résultat et le nouvel OperationOutcome informational, conformément à la nouvelle cardinalité.
3. $find Practitioner — extension statutGMFProfessionnel 🟢
S'applique au profil partagé SGRDVBaseFindPractitioner (et donc aux deux surfaces qui en héritent).
3.1 Nouvelle extension
| Élément | Type | Cardinalité | Description |
|---|---|---|---|
SGRDVBaseFindPractitioner.extension[statutGMFProfessionnel] |
SGRDVPractitionerStatutGMFExtension |
0..1 MS |
Indique si l'inscription du patient avec son médecin (Practitioner référencé depuis Patient.generalPractitioner via PractitionerRole) est en Groupe de médecine de famille (GMF) ou hors GMF |
3.2 Nouveaux artefacts terminologiques 🟢
| Artefact | Codes | Rôle |
|---|---|---|
SGRDVPractitionerStatutGMFExtension |
value[x] → code bindé required au VS |
Extension SGRDV portée sur Practitioner |
SGRDVStatutGMFProfessionnelCS |
#GMF, #HORS_GMF |
CodeSystem SGRDV du statut GMF du professionnel |
SGRDVStatutGMFProfessionnelVS |
façade SGRDV — agrège le CodeSystem | ValueSet de binding de l'extension |
3.3 Impact partenaires
- DMÉ/SIP-C (surface
api-source) : peuvent désormais qualifier l'inscription d'unPractitionerretourné dans la réponse$findpar son statut GMF lorsque l'information est disponible. L'extension reste optionnelle (0..1) — aucune action requise si l'information n'est pas portée par le système source. - Portails (surface
api-sgrdv) : peuvent exploiter ce qualificatif pour distinguer une inscription en GMF d'une inscription hors GMF dans l'expérience utilisateur (priorisation des plages, libellés, etc.).
4. $book — agent[professionnelREO].onBehalfOf élargi à trois profils Organization + matérialisation au niveau payload 🟢
S'applique aux profils partagés SGRDVBaseBookRequestProvenance (élargissement du typage onBehalfOf) et SGRDVBaseBookPayloadParameters (nouveau slice parameter[organisationREO]).
4.1 Contexte
Dans la version 1.0.4, Provenance.agent[professionnelREO].onBehalfOf était typé Reference(SGRDVBaseFindOrganization), c'est-à-dire une clinique identifiée par un CodeEtablissement RAMQ. La sémantique métier de la réorientation REO peut cependant nécessiter de référencer une institution hospitalière ou un CIUSS, identifiés par leur code MSSS — ce que le typage 1.0.4 ne permettait pas.
4.2 Changement de typage 🟢
| Élément | Avant (1.0.4) | Après (1.0.5) |
|---|---|---|
agent[professionnelREO].onBehalfOf |
Reference(SGRDVBaseFindOrganization) |
Reference(SGRDVBaseFindOrganization \| SGRDVBaseBookOrganizationInstitution \| SGRDVBaseBookOrganizationCIUSS) |
agent[professionnelREO].onBehalfOf.identifier.type.coding.code |
fixé à #CodeEtablissement (exactly) |
non fixé (le code dépend du profil cible) |
Tout payload 1.0.4 conforme reste valide en 1.0.5 (la clinique RAMQ demeure un type cible accepté).
4.3 Nouveaux profils Organization 🟢
| Profil | identifier.system |
identifier.type.code |
Organization.type fixé |
|---|---|---|---|
SGRDVBaseFindOrganization (Clinique — existant) |
RAMQ | CodeEtablissement |
non fixé (liaison VS) |
SGRDVBaseBookOrganizationInstitution (nouveau) |
MSSS | CodeInstitutionMSSS |
INSTITUTION |
SGRDVBaseBookOrganizationCIUSS (nouveau) |
MSSS | CodeCIUSSMSSS |
CIUSS |
4.4 Nouveaux codes terminologiques 🟢
| CodeSystem | Codes ajoutés |
|---|---|
SGRDVIdentifierTypeCS |
#CodeInstitutionMSSS, #CodeCIUSSMSSS |
SGRDVOrganizationTypeCS |
#INSTITUTION, #CIUSS |
4.5 Matérialisation de l'organisation au niveau du payload 🟢
Nouveau slice ajouté sur SGRDVBaseBookPayloadParameters :
| Élément | Cardinalité | Type |
|---|---|---|
parameter[organisationREO].resource |
0..1 |
SGRDVBaseFindOrganization \| SGRDVBaseBookOrganizationInstitution \| SGRDVBaseBookOrganizationCIUSS |
L'organisation d'origine de la réorientation est matérialisée comme ressource au niveau du Parameters payload (pattern aligné avec parameter[patient].resource et parameter[provenance].resource). Provenance.agent[professionnelREO].onBehalfOf la référence en logical reference ; l'appariement entre les deux se fait par Identifier.
4.6 Impact partenaires
- Portails (surface
api-sgrdv) : peuvent désormais fournir une organisation d'origine de réorientation au niveau du payload$book, identifiée par RAMQ (clinique), MSSS+CodeInstitutionMSSS(institution hospitalière) ou MSSS+CodeCIUSSMSSS(CIUSS). - Surface source (SGRDV → DMÉ) : propage le nouveau paramètre comme tout autre paramètre
$bookreçu du portail. Le typage élargi deonBehalfOftraverse la surface sans transformation supplémentaire.
4.7 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseBookOrganizationInstitution |
Profile (Organization) commun |
Nouveau |
SGRDVBaseBookOrganizationCIUSS |
Profile (Organization) commun |
Nouveau |
SGRDVBaseBookRequestProvenance |
Profile (Provenance) commun |
Typage de onBehalfOf élargi + Description |
SGRDVBaseBookPayloadParameters |
Profile (Parameters) commun |
Nouveau slice parameter[organisationREO] |
SGRDVIdentifierTypeCS |
CodeSystem commun |
Ajout #CodeInstitutionMSSS, #CodeCIUSSMSSS |
SGRDVOrganizationTypeCS |
CodeSystem commun |
Ajout #INSTITUTION, #CIUSS |
5. $book — interdiction explicite de matérialisation de l'Appointment via parameter.resource 🟢
S'applique au profil partagé SGRDVBaseBookResultParameters.
5.1 Contrainte ajoutée
| Élément | Avant (1.0.4) | Après (1.0.5) |
|---|---|---|
parameter[bookedAppointment].resource |
non contraint (0..1 par défaut FHIR) |
0..0 |
La disponibilité réservée transite uniquement en logical reference (valueReference.identifier) ; toute matérialisation via parameter[bookedAppointment].resource est désormais formellement interdite par le profil. L'invariant FHIR inv-1 (mutuelle exclusion value[x] / resource) le couvrait déjà implicitement — le profil rend la contrainte explicite et auditable côté validation.
5.2 Impact partenaires
Aucun en pratique : tout payload 1.0.4 conforme reste valide en 1.0.5. Le pattern logical reference seul était déjà la voie unique recommandée et explicitée dans la description du profil.
6. $lock / $process-message — précision : SGRDV est l'autorité du verrou (mise à jour documentaire)
En réponse au commentaire de conformité du $lock Source, la note suivante a été inscrite dans la description des artefacts concernés :
SGRDV agit comme autorité du verrou. Les ajouts, prolongations et retraits de verrous sont propagés aux DMÉ via
$process-message. Le DMÉ n'expose pas d'opération$locktransactionnelle.
6.1 Artefacts mis à jour
| Artefact | Type | Surface |
|---|---|---|
SGRDVAppointmentLockOperation |
OperationDefinition |
api-sgrdv |
SGRDVSourceProcessMessageOperation |
OperationDefinition |
api-source |
SGRDVSourceLockNotificationMessageHeader |
Profile (MessageHeader) |
api-source |
SGRDVSourceLockNotificationBundle |
Profile (Bundle) |
api-source |
ImplementationGuide-sgrdv.sante.quebec |
ImplementationGuide (description) |
global |
Aucune modification de cardinalité ni de typage — purement documentaire.
7. list-clinics — terminologie : précision sur la couverture RAMQ (mise à jour documentaire)
Les descriptions et commentaires liés à GET [base]/Organization (surface api-source) ont été reformulés pour clarifier le critère de filtrage côté DMÉ.
7.1 Reformulations
| Avant (1.0.4) | Après (1.0.5) |
|---|---|
| « cliniques publiques de 1ère ligne » | « cliniques de 1ère ligne offrant des services couverts par la RAMQ » |
| « cliniques privées » (exclues) | « cliniques dont les services ne sont pas couverts par la RAMQ » (exclues) |
7.2 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseListClinicsOrganization |
Profile (Organization) commun |
Description |
SGRDVSourceListClinicsResponseBundle |
Profile (Bundle) api-source |
Description + commentaire d'entête |
SGRDVSourceCapabilityStatement |
CapabilityStatement api-source |
rest.documentation, Organization.documentation, interaction.documentation |
SGRDVSourceListClinicsExampleOrganization{1,2,3} |
Instance (exemples) api-source |
Commentaires d'entête |
Aucune modification de cardinalité, de typage ni de règle de filtrage côté serveur — purement terminologique. Le critère métier est identique à 1.0.4 : seules les cliniques de 1ère ligne présentement desservies par le DMÉ et offrant des services couverts par la RAMQ sont retournées.
8. Pipeline CI / build — mises à jour mineures (hors contrat partenaire)
Mises à jour internes du pipeline Azure Pipelines, sans impact sur les artefacts FHIR ni sur les partenaires :
| Modification | Effet |
|---|---|
Pipeline réduit à SUSHI + synchronisation fhir project sync (Simplifier) |
Allègement du pipeline, ciblage SUSHI uniquement (l'IG Publisher n'est plus exécuté en CI) |
Tâche Azure Pipelines NodeTool@0 → UseNode@1 |
Migration vers la tâche officielle non dépréciée (équivalent fonctionnel) |
Aucune action requise côté 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 |
| Name | Version | Release date | ||
|---|---|---|---|---|
| ca.qc.sq.sgrdv | 1.0.5 | latest | ||
| ca.qc.sq.sgrdv | 1.0.4 | |||
| ca.qc.sq.sgrdv | 1.0.3 | |||
| ca.qc.sq.sgrdv | 1.0.2 | |||
| ca.qc.sq.sgrdv | 1.0.0 |