]> Creatis software - gdcm.git/blob - Example/BuildUpDicomDir.cxx
Add a copy of :
[gdcm.git] / Example / BuildUpDicomDir.cxx
1 #include <iostream>
2 #include "gdcm.h"
3 #include "gdcmDocEntry.h"
4 #include "gdcmDicomDir.h"
5 #include "gdcmDicomDirPatient.h"
6 #include "gdcmDirList.h"
7 #include "gdcmDebug.h"
8
9 #include <fstream>
10 #ifdef GDCM_NO_ANSI_STRING_STREAM
11 #  include <strstream>
12 #  define  ostringstream ostrstream
13 # else
14 #  include <sstream>
15 #endif
16
17 #define  ostringstream ostrstream
18
19 #include <sys/types.h>
20 #include <errno.h>
21
22 // for Directory pb
23 #ifdef _MSC_VER 
24    #include <windows.h> 
25    #include <direct.h>
26 #else
27    #include <dirent.h>   
28    #include <unistd.h>
29 #endif
30
31 #include <vector>
32 #include <algorithm>
33
34 // ===============================================================
35 /**
36   * \ingroup Test
37   * \brief   Builds up ex-nihilo a DICOMDIR file 
38   *          adding Patient, Study, Serie, Image descriptions
39   *          to an empty gdcmDicomDir occurence
40   *          and writes a file named NewDICOMDIR. 
41   */
42   
43 int main(int argc, char* argv[])
44 {
45    if (argc) {
46       std::cerr << "Usage: " << argv[0] << " dummy ";
47    }
48
49    gdcmDicomDir *dcmdir;
50    std::string dirName;  
51
52    printf( "BuildUpDicomDir: entering  BuildUpDicomDir\n");
53
54    dcmdir=new gdcmDicomDir();
55    printf( "BuildUpDicomDir: exiting new DicomDir\n");
56
57    gdcmDicomDirPatient *p1=dcmdir->NewPatient();
58    p1->SetEntryByNumber("patientONE",0x0010, 0x0010);
59
60      
61    gdcmDicomDirPatient *p2=dcmdir->NewPatient();
62    p2->SetEntryByNumber("patientTWO",0x0010, 0x0010);     
63    gdcmDicomDirStudy *s21=p2->NewStudy();  
64        s21->SetEntryByNumber("StudyDescrTwo.One",0x0008, 0x1030);        
65    gdcmDicomDirSerie *s211=s21->NewSerie();   
66    gdcmDicomDirImage *s2111=s211->NewImage();
67    (void)s2111; //not used
68
69    gdcmDicomDirStudy *s11=p1->NewStudy();  
70        s11->SetEntryByNumber("StudyDescrOne.One",0x0008, 0x1030);
71        // Name of the physician reading study
72        // Header Entry to be created
73        s11->SetEntryByNumber("Dr Mabuse",0x0008, 0x1060);
74
75    gdcmDicomDirPatient *p3=dcmdir->NewPatient();
76    p3->SetEntryByNumber("patientTHREE",0x0010, 0x0010);
77
78    printf( "\n------- BuildUpDicomDir: Test Print of Patient ONE -----\n");
79    p1->Print();
80    printf( "\n------- BuildUpDicomDir: Test Print of Patient THREE -----\n");
81    p3->Print();
82    printf( "\n------- BuildUpDicomDir: Test Print of Patient TWO -------\n");
83    p2->Print();
84    printf( "\n------- BuildUpDicomDir: Test Full Print-------------------\n");  
85    dcmdir->SetPrintLevel(-1);
86    dcmdir->Print();
87
88    dcmdir->Write("NewDICOMDIR");
89    std::cout<<std::flush;
90
91    delete dcmdir;
92
93    return 0;
94 }