<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2627" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>1ere partie (sinon ca passait pas...)</FONT></DIV>
<DIV> </DIV></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Je crois qu'il y a eu confusion dans la 
compréhension de Document.</FONT></DIV>
<DIV><FONT face=Arial size=2>Pour moi, Document, c'est le contenu Dicom (donc 
une donnée qui equivaudrait</FONT></DIV>
<DIV><FONT face=Arial size=2>à un vtkImageData).</FONT></DIV>
<DIV><FONT face=Arial size=2>Pour Mathieu, il semble que c'etait plutot la 
partie Reader/Writer. </FONT></DIV>
<DIV><FONT face=Arial size=2>Ce qui je crois amene des confusions dans les 
reponses aux questions.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Je crois qu'il faut commencer à donner des noms 
correct. Voici ce que je propose </FONT></DIV>
<DIV><FONT face=Arial size=2>(je ne prefixe pas de gdcm pour ne pas alourdir les 
choses) :</FONT></DIV>
<DIV><FONT face=Arial size=2>DocEntry : comme le DocEntry actuel (contient 
gr|elem + VR + value)</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                 
dérivé en ValEntry, BinEntry, SeqEntry</FONT></DIV>
<DIV><FONT face=Arial size=2>SQItem : comme le SQItem actuel, données contenant 
une liste de DocEntry.</FONT></DIV>
<DIV><FONT face=Arial size=2>Document : données contenant une liste de 
DocEntry.</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                  
gère une image Dicom. Contient des méthodes facilitant l'accès aux</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                  
informations de l'image : taille, spacing, origin, orientation, 
etc.</FONT></DIV>
<DIV><FONT face=Arial size=2>DicomDir : données contenant une arborescence 
</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                 
DicomDirPatient / DicomDirStudy / DicomDirSerie / DicomDirImage</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                 
(qui sont aussi des données dérivant de SQItem)</FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>Image : donnée image Dicom décompressée + Document 
?</FONT></DIV>
<DIV> </DIV></FONT></DIV>
<DIV><FONT face=Arial size=2>Reader : traitement qui permet de lire un fichier 
au format Dicom</FONT></DIV>
<DIV><FONT face=Arial size=2>DocReader : traitement qui permet de lire un 
fichier Dicom contenant un Document</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                       retourne 
un Document</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      
derive de Reader</FONT></DIV>
<DIV><FONT face=Arial size=2>DicomDirReader : traitement qui permet de lire un 
fichier Dicom contenant un DicomDir</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      retourne 
un DicomDir</FONT></DIV>
<DIV>
<DIV><FONT face=Arial 
size=2>                      derive 
de Reader</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>
<DIV><FONT face=Arial size=2>Writer : traitement qui permet d'ecrire un fichier 
au format Dicom</FONT></DIV><FONT face=Arial size=2>DocWriter : traitement qui 
permet d'ecrire un fichier au format Dicom à partir d'un Document</FONT></DIV>
<DIV><FONT face=Arial size=2>DicomV3Writer : traitement qui permet d'ecrire 
un fichier au format DicomV3</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      prend 
un Document en entrée     </FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      
derive de DocWriter </FONT></DIV>
<DIV><FONT face=Arial size=2>LibidoWriter : traitement qui permet d'ecrire 
un fichier au format Libido</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      prend 
un Document en entrée     <BR></FONT>
<DIV>
<DIV><FONT face=Arial 
size=2>                      
derive de DocWriter </FONT></DIV><FONT face=Arial size=2>AcrNemaWriter 
: traitement qui permet d'ecrire un fichier au format ACR-NEMA</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      prend 
un Document en entrée     <BR></FONT>
<DIV><FONT face=Arial 
size=2>                      
derive de DocWriter </FONT></DIV>
<DIV><FONT face=Arial size=2>DicomDirWriter : traitement qui permet d'ecrire un 
fichier au format Dicom à partir d'un DicomDir</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      prend 
un DicomDir en entrée     <BR>
<DIV><FONT face=Arial 
size=2>                      
derive de Writer </FONT></DIV></FONT></DIV>
<DIV><FONT face=Arial size=2>DocValidator : traitement qui verifie la structure 
d'un Document</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      
prend un Document en entrée</FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial 
size=2>                      
retourne du texte</FONT></DIV>DicomDirValidator : traitement qui verifie la 
structure d'un DicomDir</FONT></DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial 
size=2>                      
prend un DicomDir en entrée</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                      
retourne du texte</FONT></DIV>
<DIV>SerieOrder : traitement ordonnant une serie de Document</DIV>
<DIV>                     
prend une liste de Document en entrée</DIV>
<DIV>                     
retourne l'ordre de ces documents (sous quelle forme ?)</FONT></DIV>
<DIV><FONT face=Arial size=2>Decompress : traitement decompressant l'image d'un 
Document</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                     
prend un Document en entrée</FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial 
size=2>                     
retourne une Image</FONT></DIV>
<DIV>Document2DicomDirImage : tranforme un Document en DicomDirImage</DIV>
<DIV>                     
prend un Document en entrée</DIV></FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV>                     
retourne un DicomDirImage</DIV>
<DIV>
<DIV>DicomDirImage2Document : tranforme un DicomDirImage en Document</DIV>
<DIV>                     
prend un DicomDirImage en entrée</DIV>
<DIV><FONT face=Arial size=2>
<DIV>                     
retourne un Document</DIV></FONT></DIV></DIV></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>
<DIV><FONT face=Arial size=2>On voit donc apparaitre une dérivation 
comme suit (incomplète bien sur) : </FONT></DIV>
<DIV><FONT face="Courier New" size=2>Data</FONT></DIV>
<DIV><FONT face="Courier New" size=2> - Document </FONT></DIV>
<DIV><FONT face="Courier New" size=2> - DicomDir</FONT></DIV>
<DIV><FONT face="Courier New" size=2> - Image</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Process</FONT></DIV>
<DIV><FONT face="Courier New" size=2> - Reader</FONT></DIV>
<DIV><FONT face="Courier New" size=2>    - 
DicomDirReader</FONT></DIV>
<DIV><FONT face="Courier New" size=2>    - 
DocReader</FONT></DIV>
<DIV><FONT face="Courier New" size=2> - Writer</FONT></DIV>
<DIV><FONT face="Courier New" size=2>
<DIV><FONT face=Arial size=2>
<DIV><FONT face="Courier New" size=2>    - 
DicomDirWriter</FONT></DIV>
<DIV><FONT face="Courier New" size=2>    - 
DocWriter</FONT></DIV>
<DIV><FONT face="Courier New">
<DIV><FONT face="Courier New">       - 
DicomV3Writer</FONT></DIV>
<DIV><FONT face="Courier New">       - 
LibidoWriter</FONT></DIV>       - 
DicomV3Writer</FONT></DIV></FONT></DIV> - Validator</FONT></DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face="Courier New" size=2>    - 
DicomDirValidator</FONT></DIV>
<DIV><FONT face="Courier New" size=2>    - 
DocValidator</FONT></DIV></FONT></DIV></DIV>
<DIV><FONT face="Courier New" size=2> - SerieOrder</FONT></DIV>
<DIV><FONT face="Courier New" size=2>
<DIV><FONT face="Courier New" size=2> - Decompress</FONT></DIV>
<DIV> - Document2DicomDirImage</DIV>
<DIV><FONT face=Arial>
<DIV><FONT face="Courier New" size=2> - 
DicomDirImage2Document</FONT></DIV></FONT></DIV></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Si j'ai bien tout compris, Mathieu, on aura une 
séparation données traitements (comme dans VTK).</FONT></DIV>
<DIV><FONT face=Arial size=2>Ceci n'est bien sur qu'une ebauche, s'appuyant sur 
ce qui fonctionne deja et les morceaux à changer.</FONT></DIV>
<DIV><FONT face=Arial size=2>L'arborescence n'est pas complète, et il y a peut 
etre des choses fausses ou a revoir.</FONT></DIV>
<DIV><FONT face=Arial size=2>Mais une question se pose avec cela... on fait 
comme dans VTK avec un pipeline mis a jour automatiquement </FONT></DIV>
<DIV><FONT face=Arial size=2>ou pas ? Comment on gere les sorties, comme en VTK 
avec la meme sortie a chaque fois ou avec une </FONT></DIV>
<DIV><FONT face=Arial size=2>nouvelle sortie ? Et quand le traitement est 
détruit, qui détruit la sortie ?</FONT></DIV>
<DIV><FONT face=Arial size=2>Désolé de ne parler que de VTK, je ne connais pas 
encore ITK (mais c'est pour bientot)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Ce qui me plait pas dans ce que je viens de 
présenter (et vi, on peut faire des choses pas belles des </FONT></DIV>
<DIV><FONT face=Arial size=2>le début...) c'est la différence entre Document et 
DicomDirImage... ce qui nous oblige apres a avoir</FONT></DIV>
<DIV><FONT face=Arial size=2>des passerelles entre les 2. Mais d'un autre coté, 
c'est justifiable sur le fait que les deux n'ont pas </FONT></DIV>
<DIV><FONT face=Arial size=2>tout en commun... mais la question va etre : 
pourquoi ne pas dire qu'un DicomDirImage est un Document ?</FONT></DIV>
<DIV><FONT face=Arial size=2>et bien tout simplement car dans le DicomDirImage 
(actuel), on n'a que les champs correspondant au </FONT></DIV>
<DIV><FONT face=Arial size=2>niveau image du DicomDir, le DicomDirSerie 
contenant les info de la serie, idem avec Study et Patient.</FONT></DIV>
<DIV><FONT face=Arial size=2>Or, le Document doit contenir toutes les infos de 
chaque niveau du DicomDir (Patient + Study + Serie + Image).</FONT></DIV>
<DIV><FONT face=Arial size=2>Avoir ces convertisseurs obligerait aussi a pouvoir 
remonter de l'Image jusqu'au Patient, ce qui n'est pas le cas</FONT></DIV>
<DIV><FONT face=Arial size=2>actuellement (mais rien empeche de le faire ;-) 
)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></DIV></DIV></DIV>
<DIV><FONT face=Arial size=2>----- Original Message ----- </FONT>
<DIV><FONT face=Arial size=2>From: "Mathieu Malaterre" <</FONT><A 
href="mailto:mathieu.malaterre@kitware.com"><FONT face=Arial 
size=2>mathieu.malaterre@kitware.com</FONT></A><FONT face=Arial 
size=2>></FONT></DIV>
<DIV><FONT face=Arial size=2>To: "Benoit Regrain" <</FONT><A 
href="mailto:benoit.regrain@creatis.insa-lyon.fr"><FONT face=Arial 
size=2>benoit.regrain@creatis.insa-lyon.fr</FONT></A><FONT face=Arial 
size=2>></FONT></DIV>
<DIV><FONT face=Arial size=2>Cc: "Mailing list gdcm" <</FONT><A 
href="mailto:dcmlib@creatis.insa-lyon.fr"><FONT face=Arial 
size=2>dcmlib@creatis.insa-lyon.fr</FONT></A><FONT face=Arial 
size=2>></FONT></DIV>
<DIV><FONT face=Arial size=2>Sent: Wednesday, April 27, 2005 5:45 
PM</FONT></DIV>
<DIV><FONT face=Arial size=2>Subject: Re: [Dcmlib] gdcm 
proposal</FONT></DIV></DIV>
<DIV><FONT face=Arial><BR><FONT size=2></FONT></FONT></DIV>
<DIV><FONT face=Arial size=2>> <BR>>> Par contre je n'ai pas compris : 
tu veux que ton gdcm.Writer modifie<BR>>> définitivement le gdcm.Document 
passé en entrée ? ou que la modification<BR>>> soit juste temporaire (le 
temps de l'écriture du fichier) ?<BR>> <BR>> Mon probleme est plus vaste, 
je voudrais un mechnisme qui interdise de <BR>> modifier l'input d'un filtre. 
Je concois parfaitement maintenant que <BR>> j'ai souligner le probleme on 
aille le deplacer ailleurs ou le cacher....<BR>> <BR>> Sinon pour 
l'ecriture effectivement le 12 qui devient un 16 ca devrait <BR>> etre 
temporaire. Par exemple un gdcm.Validator ne pourrait pas reporter <BR>> que 
BitsStorage=12 est une faute, pourtant dans le cas present -et pour <BR>> 
lontemps- nous sommes incapable de gerer ca. Donc au moment de <BR>> 
l'ecriture gdcm.Writer fais la suite d'actions:<BR>> <BR>> (version 
gourmande):<BR>> - recopie du gdcm.Document dans un gdcm.Document 
interne<BR>> - ensuite gdcm.Writer regarde gdcm.Image et doit determiner les 
valeurs <BR>> a changer: BitStord 12 devient 16, dans le Cas clunie, les 
spacing=0 <BR>> deviennent 1 ...<BR>> - ensuite on ecrase les anciennes 
UID (user request ?) par les valeurs <BR>> generer<BR>> -> derniere 
etape on ecris le fichier.</FONT></DIV>
<DIV><FONT face=Arial size=2>Autre solution, utiliser ma méthode d'archivage des 
Entry de facon temporaire,</FONT></DIV>
<DIV><FONT face=Arial size=2>modifier la source, puis tout remettre en place. 
Mais est-ce une bonne solution ?</FONT></DIV>
<DIV><FONT face=Arial size=2>Pour ce qui est de la copie, cela ne risque-t-il 
pas de ralentir les choses ?</FONT></DIV>
<DIV><FONT face=Arial size=2>Ou sinon, il faudrait pouvoir faire comme dans 
VTK... des DeepCopy et</FONT></DIV>
<DIV><FONT face=Arial size=2>des ShallowCopy. Dans ce cas, il faudrait 
proprement gerer l'appartenance d'un Entry</FONT></DIV>
<DIV><FONT face=Arial size=2>par un Document... donc ajouter du reference 
counting... </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2> </DIV>
<DIV>Benoit</FONT></DIV></BODY></HTML>