Library — Encapsule la logique partagée
Une mesure de qualité, un score de risque, un règles cliniques d'aide à la décision : Library contient leur logique CQL ou modèle, prête à être référencée par Measure, PlanDefinition et ActivityDefinition.
Objet de la ressource
Library est l'unité réutilisable de la chaîne FHIR Clinical Reasoning. Elle encapsule :
- Du code CQL (Clinical Quality Language) — typiquement la logique d'évaluation d'une Measure.
- Un modèle de données consommé par d'autres ressources (StructureDefinition packagées).
- Des ensembles de règles pour CDS Hooks.
- Un template IG de l'IG Publisher (cas plus rare).
Le code source CQL est inclus en base64 dans content[], accompagné de
la version compilée ELM (XML ou JSON).
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
url | uri | 0..1 | URL canonique. |
version | string | 0..1 | Version. |
name | string | 0..1 | Nom machine. |
status | code | 1..1 | État de publication. |
type | CodeableConcept | 1..1 | Obligatoire. logic-library | model-definition | asset-collection | module-definition. |
subject[x] | CodeableConcept | Reference | 0..1 | Type de sujet (Patient typiquement). |
relatedArtifact | RelatedArtifact[] | 0..* | Dépendances (depends-on, documentation, justification…). |
parameter | ParameterDefinition[] | 0..* | Paramètres in/out. |
dataRequirement | DataRequirement[] | 0..* | Ressources FHIR requises pour l'exécution. |
content | Attachment[] | 0..* | Code source & compilé. |
content.contentType | code | 1..1 | text/cql, application/elm+xml, application/elm+json. |
content.data | base64Binary | 0..1 | Contenu inline. |
Exemple JSON
Library de logique CQL pour le suivi du diabète T2, dépendant de FHIRHelpers et SNOMED :
{
"resourceType": "Library",
"id": "diabetes-management",
"url": "http://example.org/Library/diabetes-management",
"version": "1.0.0",
"name": "DiabetesManagementLogic",
"title": "Diabetes Management CQL Library",
"status": "active",
"experimental": false,
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/library-type",
"code": "logic-library"
}]
},
"date": "2026-05-14",
"publisher": "Example Org",
"description": "Logique CQL pour le suivi diabète type 2 (HbA1c, score de Framingham, alertes).",
"subjectCodeableConcept": {
"coding": [{
"system": "http://hl7.org/fhir/resource-types",
"code": "Patient"
}]
},
"relatedArtifact": [{
"type": "depends-on",
"resource": "http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.013"
}, {
"type": "depends-on",
"resource": "http://hl7.org/fhir/uv/cql/CodeSystem/snomed-ct"
}],
"parameter": [{
"name": "Patient",
"use": "in",
"min": 1,
"max": "1",
"type": "Patient"
}, {
"name": "HbA1cAlert",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
}],
"dataRequirement": [{
"type": "Observation",
"profile": ["http://hl7.org/fhir/StructureDefinition/Observation"],
"codeFilter": [{
"path": "code",
"valueSet": "http://hl7.org/fhir/ValueSet/observation-laboratory"
}]
}],
"content": [{
"contentType": "text/cql",
"data": "bGlicmFyeSBEaWFiZXRlc01hbmFnZW1lbnQgdmVyc2lvbiAnMS4wLjAnCnVzaW5nIEZISVIgdmVyc2lvbiAnNS4wLjAnCi8vIFNpbXBsaWZpZWQuLi4="
}]
} Pièges courants
- CQL seul sans ELM compilé — la plupart des moteurs d'exécution attendent ELM. Toujours fournir les deux.
dataRequirementmanquant — sans le pre-fetch, l'évaluation CQL doit lancer N queries impromptues, dégradant la performance.- Version CQL non précisée — CQL 1.5 vs 1.4 vs 2.0 : compatibilité d'évaluation différente.
- Dépendances cycliques — deux Library qui se dépendent mutuellement via
relatedArtifact[type=depends-on]bloquent le résolveur. - Library de plus de 100 ko inline — préférer une URL externe et mettre en cache plutôt que de gonfler le payload FHIR.
Ressources liées
- Measure — référence Library pour l'évaluation de mesure de qualité.
- PlanDefinition, ActivityDefinition — autres consommateurs de Library.
- MeasureReport — sortie de l'évaluation d'une Measure.
- ImplementationGuide — package des Library.