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.0
Date de publication : 30 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 Bump 1.0.6 → 1.1.0 🟠
Cette release correspond à la livraison de l'incrément 2 du guide d'implémentation SGRDV. Le bump MINOR est appliqué par décision éditoriale pour signaler l'amplitude des changements structurels cumulés sur plusieurs opérations : retrait d'un paramètre opérationnel ($book), resserrement d'un binding ($find), nouvelles cardinalités obligatoires ($lock / $extend-lock) et relâchement de cardinalité ($list-clinics).
Conformément à la politique de versionnement, tous les artefacts affectés portent experimental = true — les ruptures individuelles auraient justifié un bump PATCH. Le bump MINOR est une décision délibérée signalant un incrément de livraison majeur.
Résumé des changements :
- §2 —
$lock/$extend-lock:valueDuration.systemetvalueDuration.coderendus obligatoires (1..1 MS). 🟠 - §3 —
$find: bindingencounterClassdurci deextensibleàrequired. 🟠 - §4 —
$book: retrait de la sliceparameter[organisationREO]du payload. 🟠 - §5 —
$list-clinics: cardinalitéentry[organization]relâchée de1..*à0..*. 🟢 - §6 —
OperationOutcome: MUST SUPPORT ajouté surissue.diagnostics; instances corrigées pour utiliserSGRDVBaseOperationOutcome. 🟢 - §7 — Correctifs FSH : slicing simplifié sur
identifier[ni]($find) etproperty[tuilePortail]($book).
Tous les artefacts versionnés (config IG, OperationDefinition, CapabilityStatement) sont alignés sur la version 1.1.0.
2. $lock / $extend-lock — Paramètre lock-requestedDuration 🟠
S'applique aux profils partagés SGRDVBaseLockPayloadParameters (opération $lock) et SGRDVBaseLockReferenceParameters (opérations $extend-lock et $release-lock).
2.1 Nouvelles cardinalités et flags MUST SUPPORT 🟠
| Élément | Avant (1.0.6) | Après (1.1.0) |
|---|---|---|
parameter[lockRequestedDuration].valueDuration.value |
1..1 |
1..1 MS |
parameter[lockRequestedDuration].valueDuration.system |
implicite (valeur fixée) | 1..1 MS (http://unitsofmeasure.org) |
parameter[lockRequestedDuration].valueDuration.code |
implicite (valeur fixée) | 1..1 MS (#s) |
Les sous-éléments system et code de la durée demandée sont désormais explicitement obligatoires et must-support. Les valeurs fixées restent inchangées (UCUM secondes).
2.2 Impact partenaires 🟠
- Portails (surface
api-sgrdv) : doivent renseigner explicitementvalueDuration.systemetvalueDuration.codedans toute demande$locket$extend-lock. Un payload omettant ces sous-éléments n'est plus conforme au profil. - SGRDV (propagation
$process-messageversapi-source) : le payload propagé doit inclure les trois sous-éléments de la durée.
⚠️ Action requise : Vérifier que les implémentations transmettent valueDuration.system = "http://unitsofmeasure.org" et valueDuration.code = #s en plus de valueDuration.value dans toutes les demandes de verrou.
2.3 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseLockPayloadParameters |
Profile (Parameters) commun |
valueDuration.system et valueDuration.code → 1..1 MS ; valueDuration.value → MS ajouté |
SGRDVBaseLockReferenceParameters |
Profile (Parameters) commun |
Même modification |
3. $find — Binding encounterClass durci 🟠
S'applique au profil partagé SGRDVBaseFindPayloadParameters (et donc aux deux surfaces qui en héritent).
3.1 Changement de binding 🟠
| Élément | Avant (1.0.6) | Après (1.1.0) |
|---|---|---|
parameter[encounterClass].valueCoding |
from SGRDVEncounterClassVS (extensible) |
from SGRDVEncounterClassVS (required) |
Avec un binding extensible, un système pouvait transmettre des codes hors ValueSet si aucun code applicable n'existait. Avec required, seuls les codes de SGRDVEncounterClassVS sont acceptés.
3.2 Impact partenaires 🟠
- Portails (surface
api-sgrdv) : doivent utiliser exclusivement des codes appartenant àSGRDVEncounterClassVSpour le paramètreencounter-class. Tout code hors ValueSet est désormais invalide.
⚠️ Action requise : Vérifier la liste des codes encounterClass utilisés et confirmer leur appartenance à SGRDVEncounterClassVS.
3.3 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseFindPayloadParameters |
Profile (Parameters) commun |
parameter[encounterClass].valueCoding binding extensible → required |
4. $book — Retrait de la slice organisationREO du payload 🟠
S'applique au profil partagé SGRDVBaseBookPayloadParameters (et donc aux deux profils surface-spécifiques qui en héritent).
4.1 Contexte
La version 1.0.5 avait introduit le slice parameter[organisationREO] permettant de matérialiser l'organisation d'origine de la réorientation REO directement dans le payload $book. Cette approche est abandonnée : l'organisation REO est désormais uniquement portée en référence logique via Provenance.agent[professionnelREO].onBehalfOf — elle n'est jamais matérialisée dans le payload.
4.2 Changement de structure 🟠
| Élément | Avant (1.0.6) | Après (1.1.0) |
|---|---|---|
parameter[organisationREO] |
slice 0..1 |
Retiré |
parameter[organisationREO].resource |
1..1 (SGRDVBaseFindOrganization \| SGRDVBaseBookOrganizationInstitution \| SGRDVBaseBookOrganizationCIUSS) |
n/a |
agent[professionnelREO].onBehalfOf |
logical reference ; organisation optionnellement matérialisée via parameter[organisationREO] |
logical reference uniquement — organisation jamais matérialisée dans le payload |
4.3 Impact partenaires 🟠
- Portails (surface
api-sgrdv) : ne doivent plus inclureparameter[organisationREO]dans le payload$book. L'organisation d'origine de la réorientation est identifiée uniquement par l'IdentifierdansProvenance.agent[professionnelREO].onBehalfOf. - SGRDV (propagation vers
api-source) : le payload propagé ne contiendra plusparameter[organisationREO].
⚠️ Action requise : Retirer toute logique de construction ou de traitement de parameter[organisationREO] dans les implémentations $book. L'organisation REO est identifiée uniquement via Provenance.agent[professionnelREO].onBehalfOf.identifier.
4.4 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseBookPayloadParameters |
Profile (Parameters) commun |
Retrait du slice parameter[organisationREO] |
SGRDVBaseBookOrganizationInstitution |
Profile (Organization) commun |
Description mise à jour : suppression de la mention de matérialisation via le payload |
SGRDVBaseBookOrganizationCIUSS |
Profile (Organization) commun |
Description mise à jour : idem |
SGRDVBaseBookRequestProvenance |
Profile (Provenance) commun |
Description et commentaires mis à jour : clarification logical reference uniquement |
5. $list-clinics — Cardinalité entry[organization] relâchée 🟢
S'applique au profil SGRDVSourceListClinicsResponseBundle (surface api-source).
5.1 Changement de cardinalité 🟢
| Élément | Avant (1.0.6) | Après (1.1.0) |
|---|---|---|
entry[organization] |
1..* |
0..* |
Un Bundle de réponse $list-clinics peut désormais ne contenir aucune entrée Organization. Ce cas correspond à une réponse valide lorsqu'aucune clinique ne correspond aux critères de filtrage du DMÉ.
5.2 Impact partenaires 🟢
- SGRDV (récepteur, surface
api-source) : doit désormais gérer le cas d'un Bundle de réponse sans entréeOrganization— une liste vide est une réponse valide. - DMÉ / SIP-C (émetteur, surface
api-source) : peut retourner un Bundle vide sans violer le profil.
5.3 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVSourceListClinicsResponseBundle |
Profile (Bundle) api-source |
entry[organization] 1..* → 0..* |
SGRDVSourceCapabilityStatement |
CapabilityStatement api-source |
Version alignée sur 1.1.0 |
6. OperationOutcome — MUST SUPPORT sur issue.diagnostics 🟢
S'applique au profil partagé SGRDVBaseOperationOutcome (utilisé par toutes les opérations sur les deux surfaces).
6.1 Nouvel élément MUST SUPPORT 🟢
| Élément | Avant (1.0.6) | Après (1.1.0) |
|---|---|---|
issue.diagnostics |
non contraint | MS |
issue.diagnostics est destiné aux messages techniques (identifiants internes, contexte de débogage) à distinguer de issue.details.text qui porte le message lisible par un humain.
6.2 Correction des instances d'exemple
Trois instances d'exemple étaient typées InstanceOf: OperationOutcome (ressource FHIR de base) au lieu de InstanceOf: SGRDVBaseOperationOutcome (profil SGRDV). Cette erreur est corrigée.
| Instance | Surface | Correction |
|---|---|---|
SGRDVLockExampleOutcomeFailure |
api-sgrdv |
InstanceOf: OperationOutcome → InstanceOf: SGRDVBaseOperationOutcome |
SGRDVExtendLockExampleOutcomeFailure |
api-sgrdv |
InstanceOf: OperationOutcome → InstanceOf: SGRDVBaseOperationOutcome |
SGRDVSourceBookExampleOutcomeSuccess |
api-source |
InstanceOf: OperationOutcome → InstanceOf: SGRDVBaseOperationOutcome |
6.3 Impact partenaires 🟢
Aucune rupture. Les émetteurs sont encouragés à renseigner issue.diagnostics pour améliorer la traçabilité technique des erreurs dans les logs de débogage.
6.4 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseOperationOutcome |
Profile (OperationOutcome) commun |
issue.diagnostics → MS |
SGRDVLockExampleOutcomeFailure |
Instance api-sgrdv |
Profil corrigé vers SGRDVBaseOperationOutcome |
SGRDVExtendLockExampleOutcomeFailure |
Instance api-sgrdv |
Profil corrigé vers SGRDVBaseOperationOutcome |
SGRDVSourceBookExampleOutcomeSuccess |
Instance api-source |
Profil corrigé vers SGRDVBaseOperationOutcome |
7. Correctifs FSH — Slicing simplifié (refactoring interne)
Correction de définitions FSH incorrectes sur deux profils. Le slicing via type.coding introduisait un comportement de validation non désiré ; la notation shorthand FSH = system#code est sémantiquement équivalente et correcte. Aucun impact sur les payloads valides.
7.1 SGRDVBaseFindPatient — Slice identifier[ni]
| Avant (1.0.6) | Après (1.1.0) |
|---|---|
identifier[ni].type.coding 1..1 MS + .system = $v2-0203 + .code = #NI |
identifier[ni].type = $v2-0203#NI |
7.2 SGRDVBaseBookSourceDevice — Slice property[tuilePortail]
| Avant (1.0.6) | Après (1.1.0) |
|---|---|
property[tuilePortail].type.coding 1..1 + .system = $sgrdv-device-property-type + .code = #tuilePortail |
property[tuilePortail].type = $sgrdv-device-property-type#tuilePortail |
7.3 Artefacts mis à jour
| Artefact | Type | Modification |
|---|---|---|
SGRDVBaseFindPatient |
Profile (Patient) commun |
Slicing identifier[ni].type simplifié en shorthand FSH |
SGRDVBaseBookSourceDevice |
Profile (Device) commun |
Slicing property[tuilePortail].type simplifié en shorthand FSH |
8. Recommandations de migration pour les partenaires
Si vous intégrez $lock ou $extend-lock (les deux surfaces)
- Vérifiez que les payloads transmettent
valueDuration.system = "http://unitsofmeasure.org"etvalueDuration.code = #sexplicitement en plus devalueDuration.value. - Revalidez vos exemples et jeux de tests
$lock/$extend-lockavec le profil1.1.0.
Si vous intégrez $find (les deux surfaces)
- Vérifiez que tous les codes
encounterClassutilisés sont présents dansSGRDVEncounterClassVS. - Retirez toute logique d'envoi de codes hors ValueSet pour ce paramètre.
Si vous intégrez $book (les deux surfaces)
- Retirez toute logique de construction ou de traitement de
parameter[organisationREO]. - L'organisation REO reste identifiable uniquement via
Provenance.agent[professionnelREO].onBehalfOf.identifier. - Revalidez vos scénarios de réorientation REO avec un payload
1.1.0.
Si vous intégrez $list-clinics (surface api-source)
- Assurez-vous que votre implémentation gère un Bundle de réponse sans entrée
Organization(liste vide = réponse valide).
Toutes intégrations confondues
- Revalidez vos payloads contre la version
1.1.0du 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 |