3 #include "gdcmDocEntry.h"
4 #include "gdcmDicomDir.h"
5 #include "gdcmDicomDirPatient.h"
6 #include "gdcmDirList.h"
10 #ifdef GDCM_NO_ANSI_STRING_STREAM
12 # define ostringstream ostrstream
17 #define ostringstream ostrstream
19 #include <sys/types.h>
23 #if defined(_MSC_VER) || defined(__BORLANDC__)
35 // ===============================================================
38 * \brief Builds up ex-nihilo a DICOMDIR file
39 * adding Patient, Study, Serie, Image descriptions
40 * to an empty gdcmDicomDir occurence
41 * and writes a file named NewDICOMDIR.
44 int main(int argc, char* argv[])
46 std::string dirName = "NewDICOMDIR";
50 std::cerr << "Usage: " << argv[0] << " [dicomdirname] ";
54 gdcm::DicomDir *dcmdir;
55 dcmdir = new gdcm::DicomDir();
57 printf( "\n------- BuildUpDicomDir: Test Print Meta only -----\n");
58 ((gdcm::Document *)dcmdir)->Print();
60 gdcm::DicomDirPatient *p1=dcmdir->NewPatient();
61 p1->SetEntryByNumber("patientONE",0x0010, 0x0010);
64 gdcm::DicomDirPatient *p2=dcmdir->NewPatient();
65 p2->SetEntryByNumber("patientTWO",0x0010, 0x0010);
66 gdcm::DicomDirStudy *s21=p2->NewStudy();
67 s21->SetEntryByNumber("StudyDescrTwo.One",0x0008, 0x1030);
68 gdcm::DicomDirSerie *s211=s21->NewSerie();
69 gdcm::DicomDirImage *s2111=s211->NewImage();
70 (void)s2111; //not used
72 gdcm::DicomDirStudy *s11=p1->NewStudy();
73 s11->SetEntryByNumber("StudyDescrOne.One",0x0008, 0x1030);
74 // Name of the physician reading study
75 // Header Entry to be created
76 s11->SetEntryByNumber("Dr Mabuse",0x0008, 0x1060);
78 gdcm::DicomDirPatient *p3 = dcmdir->NewPatient();
79 p3->SetEntryByNumber("patientTHREE",0x0010, 0x0010);
81 std::cout << "\n------- BuildUpDicomDir: Test Print of Patient ONE -----\n";
83 std::cout << "\n------- BuildUpDicomDir: Test Print of Patient THREE -----\n";
85 std::cout << "\n------- BuildUpDicomDir: Test Print of Patient TWO -------\n";
87 std::cout << "\n------- BuildUpDicomDir: Test Full Print-------------------\n";
88 dcmdir->SetPrintLevel(-1);
91 dcmdir->WriteDicomDir( dirName );
92 std::cout << std::endl;