FAQ

Wiki

Comment mettre à jour le wiki ?

Vous devez posséder un compte propre au présent Wiki. Pour obtenir un compte utilisateur, veuillez contacter shanoir-contact@lists.gforge.inria.fr.

DICOMDIR file

Comment regénérer le DICOMDIR ?

Vous pouvez installer dcm4che2 Toolkit et utiliser la commande dcmdir de la façon suivante :

dcmdir -c DICOMDIR images/

PACS

A quoi sert le PACS de sauvegarde ?

Envoyer un fichier sur le PACS de sauvegarde avec dcmsnd ?

Il faut faire attention à bien utiliser les bons keystore et trustore.

C:\download\dcm4che-2.0.18-bin\dcm4che-2.0.18\bin>dcmsnd -truststore "C:/workspace/Shanoir/resources/config/trust.jks" -truststorepw dcm4chee -keystore "C:/workspace/Shanoir/resources/config/node1.jks" -keystorepw dcm4chee -tls 3DES DCM4CHEE@chiasma:11112 c:\spectro.dcm

Récupérer un fichier situé sur un PACS avec dcmqr ?

Il faut faire attention à bien utiliser les bons keystore et trustore. Récupérer tous fichiers dont le Sop class UID est de type MR (1.2.840.10008.5.1.4.1.1.4) et dont l'attribut StudyDate est 20091117

dcmqr -cget -truststore "C:/workspace/Shanoir/resources/config/trust.jks" -truststorepw dcm4chee -keystore "C:/workspace/Shanoir/resources/config/node1.jks" -keystorepw dcm4chee -tls 3DES DCM4CHEE@chiasma:11112 -cstore MR -cstoredest c:\test -qStudyDate=20091117

Base de données

Base de données Shanoir

Comment générer le script de création des tables ?

MyQSL

Pour générer le script sql\CREATE.mysql distribué avec Shanoir, il faut exécuter l'action suivante sous un système Unix (sensible à la casse) :

mysqldump shanoirdb -pshanoir -ushanoir > CREATE.mysql

:!:ATTENTION : Windows et Unix n'ont pas la même sensibilité à la casse! Par exemple, si vous êtes sous Windows et que vous faites un mysqldump, les noms de vos tables apparaitront en minuscules dans le fichier CREATE.mysql. Après l'exécution de ce script sql sous un système Unix, les tables créées seront alors en minuscules. Du coup, lorsque Hibernate se lancer et tentera de faire le mapping entre le modèle Java et les tables, il échouera avec le un message d'erreur du type “can't find table ACQUISITION_EQUIPMENT”. Et pour cause, la table s'appelle “acquisition_equipment”. Il faut donc bien prendre garde à générer le script sous Unix/Linux.

PostgreSQL

Pour générer le script sql\CREATE.psql distribué avec Shanoir, il faut exécuter l'action suivante :

pg_dump -U shanoir -h localhost shanoirdb > CREATE.psql

Comment accéder au contenu des tables ?

Comment changer de base de données ?

3 types de bases de données sont utilisables : HSQL, PostgreSQL et MySQL.

Bases de données par défaut
  • Profil dev : HSQL : base de données en mémoire ou en fichier, pratique pour les tests et pour développer en local.
  • Profil prod : PostgreSQL
  • Profil stable : PostgreSQL

Pour pouvoir changer la base de données, il y a 2 fichiers à modifier, en fonction du profil :||

  • resources/META-INF/persistence-profile.xml : Exemple de configuration pour utiliser HSQL :
<!-- HSQL-->
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<!-- MySQL-->
<!--property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/-->
<!-- PostgreSQL -->
<!--property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
  • resources/Shanoir-profile.xml : Exemple de configuration pour utiliser HSQL :
<!-- HSQL-->
<local-tx-datasource>
	<jndi-name>@APPLICATION_NAME@Datasource</jndi-name>
	<connection-url>
		jdbc:hsqldb:mem:data/shanoirdb
	</connection-url>
	<driver-class>org.hsqldb.jdbcDriver</driver-class>
	<user-name>sa</user-name>
	<password></password>
</local-tx-datasource>
 
<!-- MySQL>

<local-tx-datasource>
	<jndi-name>@APPLICATION_NAME@Datasource</jndi-name>
	<connection-url>jdbc:mysql:///shanoirdb</connection-url>
	<driver-class>com.mysql.jdbc.Driver</driver-class>
	<user-name>shanoir</user-name>
	<password>shanoir</password>
</local-tx-datasource-->
 
<!-- PostgresSQL >

<local-tx-datasource>
	<jndi-name>@APPLICATION_NAME@Datasource</jndi-name>
	<connection-url>jdbc:postgresql://localhost:5432/shanoirdb</connection-url>
	<driver-class>org.postgresql.Driver</driver-class>
	<user-name>shanoir</user-name>
	<password>shanoir</password>
</local-tx-datasource-->

Il suffit de commenter/décommenter pour passer d'une base de données à l'autre.
Evidemment, pour pouvoir utiliser PostgreSQL ou MySQL, il faut avoir une base de données qui fonctionnent avec les paramètres spécifiés dans les 2 fichiers. Pour créer une base de données et ses utilisateurs, vous pouvez vous référer au guide d'installation

Comment étendre le schéma de la base de données relationnelle ?

Afin d'ajouter une entité au modèle de la base de données, plusieurs choses doivent être effectuées. Supposons que l'on souhaite créer l'entité NewEntity :

  • Créer la classe NewEntity dans le package org.shanoir.core.model
  • Créer la classe org.shanoir.core.action.impl.NewEntityHome et l'interface associée org.shanoir.core.action.interface.INewEntityHome
  • Créer la classe org.shanoir.core.action.lists.NewEntityList
  • Si vous souhaitez que l'utilisateur puisse modifier, créer, supprimer des instances de NewEntity, créer les fichiers suivants :
    • view/manageData/manageNewEntity.xhtml
    • view/manageData/manageNewEntity.page.xml
    • view/manageData/editNewEntity.xhtml
    • view/manageData/editNewEntity.page.xml
    • view/manageData/viewDetailNewEntity.xhtml
    • view/manageData/viewDetailNewEntity.page.xml
  • Penser à générer à nouveau le schéma SQL avec SchemaSpyGUI. Attention, Graphviz doit être installé.
  • Mettre à jour le wiki en écrasant le fichier database.png à l'emplacement suivant : ”:documentation:database.png”

Audit et versioning

Comment fonctionne l'audit et le versioning de la base de données ?

L'utilisation d'Hibernate Envers permet d'avoir facilement d'enregistrer toutes les modifications appliquées à la base de données.
Ajouter l'annotation @Audited à une entité ENTITE du modèle (classe annotée avec @Entity) va créer une nouvelle table dans la base de données ENTITE _AUD. A chaque modification dans la table ENTITE, une nouvelle entrée est créée dans la table ENTITE_AUD avec un numéro de révision, à la façon de SVN.

Diagramme d'activité de la synchronisation entre la base de données relationnelle et les fichiers XML sur le NAS

Divers

Comment ajouter une librairie ?

Plusieurs étapes sont nécessaires pour ajouter une libraire “librairie.jar” :

  1. copier le fichier “librairie.jar” dans le dossier lib de Shanoir puis faire un refresh dans Eclipse.
  2. Ajouter cette librairie dans le classpath du projet (clic-droit sur le projet > proprerties > Java Build Path > Libraries)
  3. Ajouter la libraire dans le fichier build.xml : dans la target “ear”, ajouter
    <include name="lib/librairie.jar" />

Install several instances of Shanoir on the same server machine

You might want to install several instances of Shanoir on a unique server. This may cause troubles with the JBoss configuratation.

To install more than one instance of Shanoir on a same server, follow these instructions.

Démarrer dcm4chee sur chiasma en cas de coupure d'électricité ou de redémarrage

La machine chiasma (131.254.13.250) héberge un serveur PACS pour les tests en environnement de développement. En cas de redémarrage, il faut le relancer . Pour cela, il est nécessaire d'avoir les droits d'un super utilisateur. Lancer les commandes :

sudo /etc/init.d/mysqld start
/udd/aferial/dcm4chee-mysql-2.14.2/bin/run.sh &

Régler le problème d'une séquence qui crée plusieurs datasets au lieu d'un seul

Ce cas se présente notamment pour les données de perfusion, de diffusion et d'IRMf. La solution (temporaire) qui a été trouvée consiste à lister ces séquences dans un fichier de configuration.
Pour ajouter une nouvelle séquence :
Se connecter à la machine shanoir en tant que 'neurinfo'. Pour le mot de passe, demander à Alexandre.
Dans le fichier :

/opt/jboss-4.2.3.GA/server/default/deploy/Shanoir.ear/Shanoir.war/WEB-INF/classes/Shanoir.properties

Chercher la ligne commençant par : “doNotSeparateDatasetsInSeries=“

A la fin de cette ligne ajoutez ce qui convient : par exemple, si vous souhaitez ajouter une exception pour toutes les séquences dont le champs SeriesDescription contient BOLD, il faut ajouter au bout de la liste : “SeriesDescription==*BOLD*”

Si vous apportez une modification, il faut obligatoirement prévenir les développeurs de Shanoir afin qu'ils pérennisent le changement (reporter les changements dans les fichiers Shanoir-dev.properties, Shanoir-prod.properties, Shanoir-stable.properties et Shanoir-test.properties).

Liste des séquences actuellement considérées comme 4D (liste à maintenir à jour si vous la modifiez dans le fichier Shanoir.properties):

  • ProtocolName==*ASL*
  • SeriesDescription==*VIBE*DYN*
  • SeriesDescription==*MoCoSeries*
  • SeriesDescription==*DIFF*
  • SeriesDescription==*Diff*
  • SeriesDescription==*diff*
  • SeriesDescription==*DTI*
  • SeriesDescription==*DWI*
  • SeriesDescription==*PERF*
  • SeriesDescription==*Perf*
  • SeriesDescription==*perf*
  • SeriesDescription==*BOLD*
  • SeriesDescription==*Bold*
  • SeriesDescription==*bold*
  • SeriesDescription==*intermediate t-Map*

De même, l'outil de conversion en Nifti utilisé majoritairement dans Shanoir est dcm2nii. Celui-ci fonctionne généralement bien mais il arrive qu'il pose des problèmes pour certaines séquences, notamment les séquences de diffusion. Dans certains cas, Shanoir utilise donc l'outil clidcm (développé par Nicolas Wiest-Daessle). Pour préciser les séquences qui doivent être converties avec clidcm, il faut ajouter une nouvelle entrée à la fin de la ligne qui comment dans le même fichier par “convertWithClidcm=”.

Là aussi, prévenez les développeurs de Shanoir si vous modifiez la liste.

Pour le moment, les séquences suivantes sont converties avec clidcm (liste à maintenir à jour si vous la modifiez dans le fichier Shanoir.properties):

  • SeriesDescription==*PERF*
  • SeriesDescription==*Perf*
  • SeriesDescription==*perf*
  • SeriesDescription==*DTI*
  • SeriesDescription==*DWI*
  • SeriesDescription==*DIFF*
  • SeriesDescription==*Diff*
  • SeriesDescription==*diff*
  • SeriesDescription==*DTI*
  • SeriesDescription==*DWI*

Personal Tools