Conversation
|
Merci ++ @M-Priour , C'est super clair. Merci++ |
Les 2 JDVs seront exactement les mêmes mis à part l'id logique (= id technique) et les modifications apportées entre les deux versions. Si l'oid n'a pas été changé entre les deux versions, ils auront donc le même oid.
Ca fonctionne pareil
Je n'ai pas très bien compris. C'est à dire donner une convention de nommage pour les id techniques ?
Je n'ai pas très bien compris, dans l'API il n'y a pas de nom de fichiers à priori |
|
Merci @nriss pour tes retours. Pour les fichiers historiques, je voulais parler des noms des ressources NOS des versions anterieures ( qui ne sont ni le name, ni l'ID Fhir) |
|
@nriss , |
input/pagecontent/versioning.md
Outdated
|
|
||
| ##### Approche retenue | ||
|
|
||
| Créer des ressources avec la **même URL** et des **identifiants (`id`) différents** pour chaque version. |
There was a problem hiding this comment.
Pourquoi est-il nécessaire de créer des identifiants différents vu que la structure JSON d'un valueSet permet de gérer avec un même id plusieurs versions (l'attribut "versionId" utilisé probablement par l'historique permet de les distinguer) ?
Est-il possible d'avoir accès aux issues ou autres sources techniques du projet utilisé par le SMT pour comprendre cette contrainte de devoir recréer une nouvelle ressource à chaque mise à jour?
There was a problem hiding this comment.
Je ne suis pas sûr de comprendre.
Dans un serveur FHIR, le logical id permet d'identifier ne manière unique une ressource.
On ne peut en avoir deux ressources accessible en même temps avec le même identifiant logique
There was a problem hiding this comment.
Le versionning est une forme d'historique permettant d'accéder à une version antérieur de la version courante.
Pour l'historique, il n'est pas nécessaire d'avoir un logical id par historique, or tu peux bien accéder au contenu des différents historiques.
De la même façon, il n'est pas nécessaire d'avoir un logical id par version et pouvoir accéder aux versions antérieures.
There was a problem hiding this comment.
J'ajoute un exemple concret pour lequel tu as le même logical id et bien 2 versions distinctes.
Je laisse volontairement dans l'extrait le champ versionId qui est également important:
https://smt.esante.gouv.fr/fhir/CodeSystem/TRE-R244-CategorieOrganisation/_history/9
{
"resourceType": "CodeSystem",
"id": "TRE-R244-CategorieOrganisation",
"meta": {
"versionId": "9",
...
}
"version": "20241025120000",
"name": "TRE_R244_CategorieOrganisation",https://smt.esante.gouv.fr/fhir/CodeSystem/TRE-R244-CategorieOrganisation
{
"resourceType": "CodeSystem",
"id": "TRE-R244-CategorieOrganisation",
"meta": {
"versionId": "26",
...
},
"version": "20251222120000",
"name": "TRE_R244_CategorieOrganisation",There was a problem hiding this comment.
Oui, accessible via history, mais un seul dans la version courante.
C'est ce qui est expliqué dans la documentation.
Le serveur de terminologie (FTS) gère automatiquement l’historique des versions :
Historique accessible : Le FTS conserve l’historique de toutes les versions via _history
There was a problem hiding this comment.
@sga-esante : est-ce que c'est plus clair ?
Sinon, je propose de faire un point
There was a problem hiding this comment.
Oui, il faut faire un point (et me donner en amont les éléments pour que je puisse y réfléchir avant):
Je pense qu'il ne faut pas coupler la gestion des versions du SMT avec le sujet particulier FINESS+.
Il me parait dangereux d'avoir plusieurs versions actives d'un valueSet ou d'un codeSystem car je pense que les versions des codeSystems ne sont pas faite pour cela (on tord ce concept de versionning des codeSystem).
Je pense que les codeSystem et valueSet ne sont pas fait pour avoir plusieurs versions actives simultanément.
Comme le sujet semble complètement couplé avec FINESS+, est ce que je peux avoir la liste des TRE/JDV consommés par le ROR et concernés par ce sujet pour que j'y réfléchisse avant ce point?
Ainsi que le scénario que vous souhaitez proposer au projet ROR ? Ex: comment souhaitez-vous modifier l'IG du ROR vers ces TRE? En ajoutant la version dans les urls des JDV/TRE mentionnées dans l'IG du ROR?
Vu avec Mael;
La version peut être utilisée dans plusieurs contextes, , en fonction du contexte la def d'une version peut changer, incrémenation systématique à chaque mise à jour (ex TRE du NOS), ou une version par pays (ex un logical-id snomed international, un logical id snomed fr pour un même codesystem) ou autre.
Plusieurs historiques peuvent (meta.versionId) peuvent partager une même version.
|
Sylvain, @sga-esante |
| Dans FHIR, chaque ValueSet possède deux attributs clés pour le versioning : | ||
| - **`url`** : identifiant canonique unique et stable (ne change jamais) | ||
| - **`version`** : numéro de version de la ressource | ||
|
|
||
| ```json | ||
| { | ||
| "resourceType": "ValueSet", | ||
| "url": "http://exemple.fr/fhir/ValueSet/mon-jeu-de-valeurs", | ||
| "id" : "mon-jeu-de-valeur", | ||
| "version": "1.0.0", | ||
| "name": "MonJeuDeValeurs", | ||
| "status": "active" | ||
| } |
There was a problem hiding this comment.
Description du champ versionId et ajout dans l'exemple
Modification la valeur du champ version car dans le cas général, la version est une date.
| Dans FHIR, chaque ValueSet possède deux attributs clés pour le versioning : | |
| - **`url`** : identifiant canonique unique et stable (ne change jamais) | |
| - **`version`** : numéro de version de la ressource | |
| ```json | |
| { | |
| "resourceType": "ValueSet", | |
| "url": "http://exemple.fr/fhir/ValueSet/mon-jeu-de-valeurs", | |
| "id" : "mon-jeu-de-valeur", | |
| "version": "1.0.0", | |
| "name": "MonJeuDeValeurs", | |
| "status": "active" | |
| } | |
| Dans FHIR, chaque ValueSet possède deux attributs clés pour le versioning : | |
| - **`url`** : identifiant canonique unique et stable (ne change jamais) | |
| - **`version`** : numéro de version de la ressource | |
| Un 3e attribut meta.versionId est auto-incrémenté à chaque mise à jour du ValueSet. Il est utilisé pour conserver l'historique de chaque modification. | |
| ```json | |
| { | |
| "resourceType": "ValueSet", | |
| "url": "http://exemple.fr/fhir/ValueSet/mon-jeu-de-valeurs", | |
| "id" : "mon-jeu-de-valeur", | |
| "meta": { | |
| "versionId": "9", | |
| ... | |
| } | |
| "version": "20240927120000", | |
| "name": "MonJeuDeValeurs", | |
| "status": "active" | |
| } |
|
|
||
| - **Historique accessible** : Le FTS conserve l'historique de toutes les versions via `_history` | ||
| - **Dernière version par défaut** : Sans précision, c'est toujours la version la plus récente qui est retournée | ||
| - **Cas standard** : Une seule version active à la fois, les anciennes sont archivées dans l'historique |
There was a problem hiding this comment.
| - **Cas standard** : Une seule version active à la fois, les anciennes sont archivées dans l'historique | |
| Le serveur de terminologie (FTS) conserve automatiquement l'historique de chaque changement du ValueSet. | |
| Dans le cas standard, chaque changement du ValueSet correspond à une nouvelle version du ValueSet. | |
| C'est à dire qu'à chaque incrément de "_meta.versionId_" correspond une nouvelle "_version_". | |
| La "_version_" renseignée est de type "date" (https://www.hl7.org/fhir/codesystem-version-algorithm.html) | |
| Mais dans certains cas, une même "_version_" pourra être commune à plusieurs changements du ValueSet, c'est à dire à plusieurs "_meta.versionId_". Ces cas sont décrit dans le paragraphe suivante "_Cas exceptionnels : plusieurs versions actives_". | |
| - **Historique accessible** : Le FTS conserve l'historique de toutes les versions via `_history` | |
| - **Dernière version par défaut** : Sans précision, c'est toujours la version la plus récente qui est retournée | |
| - **Cas standard** : Une seule version active à la fois, les anciennes sont archivées dans l'historique | |
| #### Exemples d'appels API | |
| **Récupérer la version active :** | |
| GET [base]/ValueSet?url=http://exemple.fr/fhir/ValueSet/statut-patient | |
| | Version | URL (canonique) | id (technique) | | ||
| |---------|-----------------|----------------| | ||
| | 1.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v1` | | ||
| | 2.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v2` | | ||
|
|
There was a problem hiding this comment.
| | Version | URL (canonique) | id (technique) | | |
| |---------|-----------------|----------------| | |
| | 1.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v1` | | |
| | 2.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v2` | | |
| | Version | URL (canonique) | id (technique) | | |
| |---------|-----------------|----------------| | |
| | 1.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v1` | | |
| | 2.0.0 | `http://exemple.fr/fhir/ValueSet/statut-patient` | `statut-patient-v2` | | |
| Ainsi il sera possible de faire évoluer la version 1.0.0 en parallèle de la version 2.0.0. | |
| Lorsque la version 1.0.0 sera mise à jour, l'attribut "_version_" conservera la valeur "1.0.0", seul l'attribut "_meta.versionId_" s'incrémentera (contrairement au cas nominal ou l'attribut "_version_" change à chaque incrément de "_meta.versionId_". | |
| Ex: | |
| Après avoir été mis à jour, le meta.versionId de mon ValueSet "mon-jeu-de-valeur" passe à la valeur 2, la version, par contre, reste à "1.0.0" | |
| ```json | |
| { | |
| "resourceType": "ValueSet", | |
| "url": "http://exemple.fr/fhir/ValueSet/mon-jeu-de-valeurs", | |
| "meta": { | |
| "versionId": "2", | |
| ... | |
| } | |
| } | |
| "version": "1.0.0", | |
| "name": "MonJeuDeValeurs", | |
| "status": "active" | |
| } | |
|
|
||
| **Récupérer la dernière version :** | ||
| ``` | ||
| GET [base]/ValueSet?url=http://exemple.fr/fhir/ValueSet/statut-patient |
There was a problem hiding this comment.
Cette requête est-elle encore possible lorsqu'on active les versions?
Comment le SMT peut-il déduire quelle est la dernière version?
La 1.0.0 ou la 2.0.0?
S'il se base sur la dernière mise à jour, il peut alors considérer que la dernière version est la 1.0.0 si celle-ci a été mise à jour plus récemment que la 2.0.0...
There was a problem hiding this comment.
Cette requête est-elle encore possible lorsqu'on active les versions?
Le SMT renverra deux ValueSet s'il y en a deux avec la même URL
Comment le SMT peut-il déduire quelle est la dernière version?
FHIR R5 a introduit un champs versionAlgorithm pour déterminer quelle est la plus récente
https://www.hl7.org/fhir/valueset.html
There was a problem hiding this comment.
D'accord, j'ai mis à jour mes propositions dans la PR pour décrire ce point.
Il faut tester que cela fonctionne bien sur le SMT actuel car ca semble assez avancé.
There was a problem hiding this comment.
| GET [base]/ValueSet?url=http://exemple.fr/fhir/ValueSet/statut-patient | |
| Le serveur de terminologie retournera la version la plus haute (cf https://www.hl7.org/fhir/valueset-version-algorithm.html) | |
| GET [base]/ValueSet?url=http://exemple.fr/fhir/ValueSet/statut-patient |
There was a problem hiding this comment.
Etant donné que c'est des attributs ajoutés en R5 et que le SMT est en R4, il faudra rajouter ces informations à l'aide d'extension standard si on va dans cette direction
There was a problem hiding this comment.
Est-ce que ca signifie que ca ne fonctionne pas sur le SMT tel qu'il est aujourd'hui en production?
Et que des devs supplémentaires sur le SMT seront nécessaires pour que cela fonctionne?
There was a problem hiding this comment.
Ca mérite d'être testé en pprod, je ne sais pas si ça fonctionnerait, si on peut utiliser des extensions, ...
|
Bonjour à tous @sga-esante , @nriss , @M-Priour Situation actuelle ( "Plan B" qui porte à confusion mais simple ) Situation souhaitée : En utilisant la gestion des versions Qu'en pensez vous ? Merci de votre attention |
|
Re-bonjour, resourceType ex : "CodeSystem" Si c'est le cas, nous sommes bien obligés de créer des "doublons" pour la refonte des TRE Finess qui sont renommées Merci +++ |
| Créer des ressources avec la **même URL** et des **identifiants (`logical id`) différents** pour chaque version. | ||
|
|
There was a problem hiding this comment.
| Créer des ressources avec la **même URL** et des **identifiants (`logical id`) différents** pour chaque version. | |
| Créer des ressources avec la **même URL** et des **identifiants (`logical id`) différents** pour chaque version. | |
| La "_version_" renseignée est alors de type "semver" (https://www.hl7.org/fhir/codesystem-version-algorithm.html) | |





Hello,
J'ai ajouté une page pour expliquer le versioning des ValueSet :
Est-ce que cela vous semble clair ?
Cdlt