Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

suppression des xslt dans schematrons/profils #4

Open
laurentforet opened this issue Aug 4, 2022 · 11 comments
Open

suppression des xslt dans schematrons/profils #4

laurentforet opened this issue Aug 4, 2022 · 11 comments

Comments

@laurentforet
Copy link

laurentforet commented Aug 4, 2022

Bonjour @nmahraz ,

Je constate qu’avec le commit fb706dc 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 :

  • Devons-nous changer notre fusil d’épaule et ne plus nous baser sur ces feuilles de styles ?
  • Ou pouvons nous compter sur une éventuelle restauration de ces feuilles de styles dans le futur ?

Cordialement,

@nmahraz
Copy link
Collaborator

nmahraz commented Aug 4, 2022 via email

@laurentforet
Copy link
Author

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
Copy link

blephy commented Oct 18, 2022

+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
Copy link
Collaborator

nmahraz commented Oct 18, 2022

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
Copy link
Author

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
Copy link
Collaborator

nmahraz commented Oct 19, 2022

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
Copy link
Author

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
Copy link

blephy commented Oct 20, 2022

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
Copy link
Author

@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
Copy link
Collaborator

nmahraz commented Oct 21, 2022

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
Copy link
Author

@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 ?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants