ansforge / TestContenuCDA-2-41

Version avant migration des terminologies et JDV (avant décembre 2022). testContenuCDA permet de vérifier la conformité d’un document CDA R2 au volet correspondant.
8 stars 1 forks source link

suppression des xslt dans schematrons/profils #4

Open laurentforet opened 2 years ago

laurentforet commented 2 years ago

Bonjour @nmahraz ,

Je constate qu’avec le commit https://github.com/ansforge/TestContenuCDA/commit/fb706dcc4fbc07d63a93a45e68854f21efcf92eb vous supprimez les feuilles de styles xslt permettant la validation des schematron par processeur xsl. C’est apparemment du code généré et qu’elles ne soient pas dans les sources n’est pas génant.

Par contre dans votre release 2.41, (https://github.com/ansforge/TestContenuCDA/releases/tag/v2.41) ces feuilles de style ne sont plus présentes également dans le livrable. Or, nous nous appuyons dessus pour gérer la validation des documents CDA dans notre composant DevBox-Santé DMP EAI :

fr.devboxsante.dmp.cda.tools.DMPCValidatorException: Erreur technique lors de la validation du document CDA.
    at fr.devboxsante.dmp.cda.tools.DMPCCdaValidator._validateWithSchematron(DMPCCdaValidator.java:143) ~[classes/:na]
Caused by: java.io.FileNotFoundException: ...\testContenuCDA-2.41\schematrons\profils\CI-SIS_StructurationMinimale.xsl (Le fichier spécifié est introuvable)

Pour supporter les versions à partir de la 2.41 :

Cordialement,

nmahraz commented 2 years ago

Bonjour,

Effectivement, on les a supprimés car ils sont générés automatiquement et qu'il fallait à chaque modification d'un schematron appelé dans plusieurs volets, tous les regénérer.

Vous pouvez donc soit changer votre fusil d'épaule pour ne plus vous baser dessus, comme vous pouvez les générer en faisant une compilation du volet via l'outil GUI qui est sous : testContenuCDA_DeTravail\schematrons\moteur\TCC-GUI

Cordialement,

@.***

Nidal MAHRAZ Expert Direction Expertise, Innovation & International (DEII) Pôle Données & interopérabilité 9, rue Georges Pitard - 75015 PARIS esante.gouv.frhttps://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fesante.gouv.fr%2F&data=04%7C01%7CNidal.MAHRAZ%40esante.gouv.fr%7Cae6a73858bad427ba20608d8dcbb3424%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637502043890830202%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=wEzjmbsFNM%2BHeH6fNo3u4ZiIebLXEgAzIZn3L2gIqB4%3D&reserved=0

De : laurentforet @.> Envoyé : jeudi 4 août 2022 14:27 À : ansforge/TestContenuCDA @.> Cc : Nidal MAHRAZ @.>; Mention @.> Objet : [ansforge/TestContenuCDA] suppression des xslt dans schematrons/profils (Issue #4)

Bonjour @nmahrazhttps://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnmahraz&data=05%7C01%7Cnidal.mahraz%40esante.gouv.fr%7Cbe32b19f2ddb4d76df6508da761497d5%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637952128069999856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=fSzXX2hMfyslgj%2FQAij%2Bf6wZprl7DYGi9vVewmKrH6M%3D&reserved=0 ,

Je constate qu'avec le commit fb706dchttps://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fansforge%2FTestContenuCDA%2Fcommit%2Ffb706dcc4fbc07d63a93a45e68854f21efcf92eb&data=05%7C01%7Cnidal.mahraz%40esante.gouv.fr%7Cbe32b19f2ddb4d76df6508da761497d5%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637952128069999856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=BdcjtzhTBVrGdZrk1X%2BqBASeNv%2FtfL%2BL3mrkDaizec4%3D&reserved=0 vous supprimez les feuilles de styles xslt permettant la validation des schematron par processeur xsl. C'est apparemment du code généré et qu'elles ne soient pas dans les sources n'est pas génant.

Par contre dans votre release 2.41, (https://github.com/ansforge/TestContenuCDA/releases/tag/v2.41https://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fansforge%2FTestContenuCDA%2Freleases%2Ftag%2Fv2.41&data=05%7C01%7Cnidal.mahraz%40esante.gouv.fr%7Cbe32b19f2ddb4d76df6508da761497d5%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637952128069999856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Gv19e%2BDUDg7pFLtOq5K9eXW%2B0TqaY%2BdhH%2Fc6%2BcEBpIs%3D&reserved=0) ces feuilles de style ne sont plus présentes également dans le livrable. Or, nous nous appuyons dessus pour gérer la validation des documents CDA dans notre composant DevBox-Santé DMP EAI :

fr.devboxsante.dmp.cda.tools.DMPCValidatorException: Erreur technique lors de la validation du document CDA.

    at fr.devboxsante.dmp.cda.tools.DMPCCdaValidator._validateWithSchematron(DMPCCdaValidator.java:143) ~[classes/:na]

Caused by: java.io.FileNotFoundException: ...\testContenuCDA-2.41\schematrons\profils\CI-SIS_StructurationMinimale.xsl (Le fichier spécifié est introuvable)

Pour supporter les versions à partir de la 2.41 :

Cordialement,

- Reply to this email directly, view it on GitHubhttps://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fansforge%2FTestContenuCDA%2Fissues%2F4&data=05%7C01%7Cnidal.mahraz%40esante.gouv.fr%7Cbe32b19f2ddb4d76df6508da761497d5%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637952128069999856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=kAfY2RACTCGhNRiTHy1ggjKcrHoqGnPLNSOvfD4aepU%3D&reserved=0, or unsubscribehttps://fra01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAYB6455LFGVHIBSUCVHNFPTVXOZIHANCNFSM55SK244A&data=05%7C01%7Cnidal.mahraz%40esante.gouv.fr%7Cbe32b19f2ddb4d76df6508da761497d5%7C508449d3d632429b97cef8ad22b3a7e7%7C0%7C0%7C637952128069999856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=tQ801d9i5oNQgV6A1VVCzIni02PeU9wNmNNfe%2BGcTCw%3D&reserved=0. You are receiving this because you were mentioned.Message ID: @.**@.>>

laurentforet commented 2 years ago

C’est noté, comme nous pouvons proposer la récupération dynamique de ces contenus sur les différents sites déployés, une génération via une gui risque d’être compliquer. On va essayer de contourner cette génération manuelle .

Une autre solution serait que vous les générez lors de vos livraisons :) .

Cordialement.

blephy commented 2 years ago

+1 pour une génération automatique dans la CI, ou à minima une doc technique pour les générer automatiquement ? J'imagine que c'est possible de bypass l'UI avec un script java ?

nmahraz commented 2 years ago

Bonjour, Il est possible de générer les xslt en appelant le fichier batch compilVerif (le GUI ne fait qu'appeler ce dernier) qui se trouve sous : testContenuCDA_DeTravail\schematrons\moteur. Sur la ligne de commande par exemple, on se positionne sur le répertoire testContenuCDA\schematrons\moteur puis on lance le batch compilVerif avec en premier paramètre, le document CDA (sans extension) et en deuxième paramètre le fichier schematron (sans extension).

Exemple : C:\Users\nmahraz\OneDrive - ANS\Bureau\ANS\testContenuCDA\testContenuCDA_DeTravail\schematrons\moteur>compilVerif BIO-CR-BIO_2021.01_Microbiologie_V1 CI-SIS_BIO-CR-BIO_2021.01

laurentforet commented 2 years ago

Je comprends bien qu’il est possible de valider un cda via script un schematron. Mais cela ne s’applique pas à notre cas d’utilisation. En effet, nous avons besoin en tant que connecteur EAI pour le DMP de valider avant envoi tout CDA sur différents SCHEMATRONS. Nous ne pouvons nous permettre de lancer un batch exécutant une dizaine de commande java (avec chacune sa JVM) pour le vérifier. Nous pouvons par contre nous permettre d’appliquer une ou plusieurs feuilles de style avant chaque appel et en récupérer le résultat.

À l’heure actuelle, nous configurons nos clients déjà déployées de la manière suivante :

devbox-sante.dmp.cda.validator.resourceName: https://github.com/ansforge/TestContenuCDA/releases/download/v2.40/testContenuCDA-2.40.zip

Le fait de ne plus avoir ces feuilles de styles dans le livrable, nous bloque sur cette version 2.40 pour nos clients déjà déployés.

Pour contourner le problème, il faudrait que nous retravaillons votre livrable et que nous le redéployons quelque part pour chacune de vos versions. Apparemment nous ne sommes pas les seuls. Ne serait-il pas plus simple que vous intégriez ces feuilles de styles dans vos releases ?

Par avance merci, bien cordialement,

nmahraz commented 2 years ago

Bonjour,

Il n'est pas simple pour nous de les garder à jour, étant donné que des mises à jour sont régulièrement faites sur les schematrons, il faudra à chaque mise à jour regénérer tous les fichiers xslt du testContenuCDA car toute entrée/section peut être utilisée sur plusieurs des volets que nous utilisons.

Nous ne pouvons pas toujours les maintenir à jour et n'avons pas les ressources suffisantes pour aller les générer à chaque modification sur des schematrons.

Cordialement,

laurentforet commented 2 years ago

Je comprends que vous ne devez pas les mettre à jour tout le temps et ça me paraît complètement normal. Nous ne voulons pas les avoir à jour à chaque commit juste sur chaque version taggée.

Je ne suis pas expert des actions github (https://github.com/features/actions) mais ça doit être possible d’automatiser.

blephy commented 2 years ago

Hello

#!/usr/bin/env bash

declare -r cda_git_folder="schematrontmp"
declare -r schematrons_assets="schematron-assets"
declare -r cda_git_url="https://github.com/ansforge/TestContenuCDA.git"

echo "Cloning TestContenuCDA"
echo "..."

rm -rf $cda_git_folder
mkdir $cda_git_folder
git clone $cda_git_url $cda_git_folder

cd "$cda_git_folder/schematrons/moteur"

schematrons=(
    "../profils/IHE.sch"
    "../profils/terminologies/schematron/terminologie.sch"
    "../profils/CI-SIS_ModelesDeContenusCDA.sch"
    "../profils/IHE_XDS-SD.sch"
    "../profils/CI-SIS_StructurationMinimale.sch"
    "../profils/CI-SIS_Modeles_ANS.sch"
    $(ls ../*.sch)
)

for schema in "${schematrons[@]}"
do
    rm -rf colle.sch concret.sch

    echo "--------"
    echo "Compilation du fichier $schema"
    echo "--------"
    echo "1) Pre-compilation du schematron : collage des include"
    java -cp saxon9he.jar net.sf.saxon.Transform -s:$schema -xsl:iso_dsdl_include.xsl -o:colle.sch

    echo "2) Pre-compilation du schematron : expansion des abstract"
    java -cp saxon9he.jar net.sf.saxon.Transform -s:colle.sch -xsl:iso_abstract_expand.xsl -o:concret.sch

    schPathToXsl="${schema%".sch"}.xsl"

    echo "3) Compilation en xslt2 : production de $schPathToXsl"
    java -cp saxon9he.jar net.sf.saxon.Transform -s:concret.sch -xsl:iso_svrl_for_xslt2.xsl -o:$schPathToXsl

    echo ""
done

echo "Copying schematron assets"
echo "..."

cd ../../..
rm -rf $schematrons_assets

mkdir -p $schematrons_assets/schematrons
cp -R $cda_git_folder/schematrons $schematrons_assets

mkdir -p $schematrons_assets/infrastructure
cp -R $cda_git_folder/infrastructure $schematrons_assets

mkdir -p $schematrons_assets/jeuxDeValeurs
cp -R $cda_git_folder/jeuxDeValeurs $schematrons_assets

echo "Cleaning schematron assets"
echo "..."

find $schematrons_assets -name "*.sch" -type f -delete
find $schematrons_assets -name "*.docx" -type f -delete
find $schematrons_assets -name "*.exe" -type f -delete
find $schematrons_assets -name "*.bat" -type f -delete
find $schematrons_assets -name "*.java" -type f -delete
find $schematrons_assets -name "*.class" -type f -delete
find $schematrons_assets -name "*.docbook" -type f -delete
find $schematrons_assets -name "*.fo" -type f -delete
find $schematrons_assets -name "*.txt" -type f -delete
find $schematrons_assets/schematrons/moteur -name "*.xsl" -type f -delete

rm -rf $schematrons_assets/schematrons/abstract
rm -rf $schematrons_assets/schematrons/include
rm -rf $schematrons_assets/schematrons/profils/terminologies/programme
rm -rf $schematrons_assets/schematrons/rapports
rm -rf $schematrons_assets/schematrons/moteur/TCC-GUI
rm -rf $schematrons_assets/schematrons/moteur/tmp
rm -rf $schematrons_assets/schematrons/moteur/xsdvalidator-1.2.jar

rm -rf $cda_git_folder

@nmahraz Si vous pouviez me confirmer que nous ne supprimons pas de fichier essentiel pour faire tourner le XSD validator et le XSL validateur. Ca fonctionne très bien comme ça, mais j'aimerais votre avis.

@laurentforet Vous pouvez utiliser peter-evans/create-pull-request (action-github) avec un cron-job et uniquement proposer une PR si il y a un git diff non null

laurentforet commented 2 years ago

@blephy super ! Ça marche nickel pour moi, il me reste juste un test sur les bio d’exemples qui ne passent plus mais ça doit être de mon côté.

image

Concernant l’action sur une pull-request,si je comprends bien, ne peut pas s’appliquer pour nous car nous n’utilisons pas github et ça ne résoudrait le problème que pour les phases de build de nos applications.

@nmahraz l’execution du script fourni par @blephy sur une github action tag serait topissime.

nmahraz commented 2 years ago

Bonjour, @laurentforet malheureusement on n'a plus de versions taggées, il n'y a plus que le testContenuCDA version courante sur GitHub.

@blephy En lisant votre script, j'ai l'impression que c'est bon, il n'y a pas de suppression de fichiers essentiels. Si vous me dites que c'est bon de votre côté, c'est tant mieux alors

laurentforet commented 2 years ago

@nmahraz vous êtes sur que vous ne voulez pas établir des livrable avec des versions validées et stables sur laquelle on peut s’appuyer et y faire référence ?

Dans le cas positif, pouvez vous à minima intégrer et maintenir le script de @blephy dans vos sources ?