Modèle de licence (open-core)
1. L’invariant : identifiant vs contenu
Section intitulée « 1. L’invariant : identifiant vs contenu »🟢🔵 La règle qui structure tout Messier :
On peut redistribuer des identifiants (codes) issus de sources libres ; on ne redistribue jamais le contenu sous licence.
flowchart LR
subgraph CC0["🟢 CC0 — redistribuable"]
A["Mondo (concepts + xrefs)"]
B["NCIt (codes)"]
C["SCTID via xref Mondo<br/>(l'identifiant seul)"]
end
subgraph LIC["🔴 Licencié — BYO, jamais redistribué"]
D["Libellés & index SNOMED"]
E["Cartes dérivées UMLS (MRCONSO)"]
end
FR{{"Frontière de redistribution"}}
CC0 --> FR
LIC -. ne franchit pas .-> FR
classDef cc0 fill:#e7f5ec,stroke:#2E7D5B
classDef lic fill:#fdecea,stroke:#b3261e
class A,B,C cc0
class D,E lic
Exemple concret : un SCTID (255082000) est un identifiant → redistribuable ; le libellé « Adenocarcinoma of colon (disorder) » est du contenu SNOMED → jamais persisté ni livré.
2. Bring-your-own-terminology (BYO)
Section intitulée « 2. Bring-your-own-terminology (BYO) »🔵 Le déployeur, titulaire de ses propres licences, fournit ses dumps (SNOMED RF2, UMLS Metathesaurus). Côté Messier ils sont :
- montés en volumes RO (jamais bakés dans une image) ;
- gitignorés (jamais commités) ;
- reliés par symlinks vers le stockage local.
La séparation est physique : ce qui est licencié n’existe que sur le volume du déployeur.
3. Libellés SNOMED : lus à la volée
Section intitulée « 3. Libellés SNOMED : lus à la volée »🔵 Mécanique clé (cf. Pont terminologique & émission (Mondo→SNOMED)) : les snapshots
d’émission stockent des identifiants seuls. Pour l’affichage, api/snomed_labels.py
hydrate les libellés depuis un index licencié au moment de la lecture, gated par la
présence de SNOMED, avec la mention légale (clause 8.3). En base, rien de licencié.
4. Mentions légales (SNOMED Affiliate, UMLS, NCIt)
Section intitulée « 4. Mentions légales (SNOMED Affiliate, UMLS, NCIt) »🟢🔵
| Clause / licence | Obligation |
|---|---|
| SNOMED 8.3 | mention légale affichée avec tout libellé SNOMED |
| SNOMED 2.4 | éditions officielles (pas de traduction maison) |
| SNOMED 6.2 | fenêtre de mise à jour 180 j (fraîcheur, cf. dashboard) |
| UMLS MLA | usage interne, carte dérivée non redistribuée |
| NCIt | CC0 — libre |
5. Pseudonymisation à l’export
Section intitulée « 5. Pseudonymisation à l’export »🟢 Le validateur est transformé en curator_<sha256(user_id)[:8]> déterministe, appliqué
à la sortie (pas de colonne pseudonyme en base). 0 PII dans les livrables → conformité
nLPD même si le fichier quitte l’institution. → Imports & exports (interop).
6. Open-core : MC public vs contenu privé
Section intitulée « 6. Open-core : MC public vs contenu privé »🔵 La lib MC (moteur compositionnel + recettes de build kb_builders) est publiable ; le
contenu produit (index, cartes, KB) reste hors-repo. Ce qui est open = la recette,
jamais le contenu. Décision D22 (MC DECISIONS.md). →
ADR-005.