1 #include "clitkDicomWave2Text.h"
2 #include "clitkDicomWave2Text_ggo.h"
7 #include "gdcmBinEntry.h"
8 #include "gdcmValEntry.h"
9 #include "gdcmSeqEntry.h"
10 #include "gdcmSQItem.h"
11 #include "gdcmSerieHelper.h"
16 //==========================================================================================================================
18 int main(int argc, char * argv[]) {
20 //-----------------------------------------------------------------------------
22 GGO(clitkDicomWave2Text, args_info);
23 //-----------------------------------------------------------------------------
25 //-----------------------------------------------------------------------
26 // opening dicom input file
27 gdcm::File * mDCMFile = new gdcm::File();
28 mDCMFile->SetFileName(args_info.InputFile_arg);
29 mDCMFile->AddForceLoadElement(0x01e1,0x1018); //Load wave data no matter its size
31 if (!mDCMFile->OpenFile ()) {
32 std::cerr << "Sorry, the file does not exist or does not appear to be a DICOM file. Abort." << std::endl;
36 std::cout << "File: "<< args_info.InputFile_arg << " loaded !"<< std::endl;
39 //-----------------------------------------------------------------------
41 gdcm::DocEntrySet* item = mDCMFile;
44 gdcm::BinEntry* entry = item->GetBinEntry(0x01e1,0x1018);
46 T* buffer = reinterpret_cast<T*>(entry->GetBinArea());
47 int length=item->GetEntryLength(0x01e1,0x1018)/sizeof(T);
48 std::ofstream text_file(args_info.OutputFile_arg, std::ios::out | std::ios::trunc);
52 text_file << "COMPLETE_WAVE" << '\t' << "MASK" << '\t' << "AQUISITION_PROFIL" << '\t' << "END-INHALE" << '\t' << "END-EXHALE" << '\t' << "AQUISITION_WAVE" << '\t' << "WAVE_STATISTICS" << '\t' << "MASK" << std::endl;
53 for (int i=0;i<length-76;i+=2)
63 stat="Sampling rate (Hz)";
70 if (buffer[i+75] == 0)
71 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
72 if (buffer[i+75] == 16384)
73 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
74 if (buffer[i+75] == 256)
75 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
76 if (buffer[i+75] == -32768)
77 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
78 if (buffer[i+75] == -16384)
79 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
80 if (buffer[i+75] == -32512)
81 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
85 if (buffer[i+75] == 0)
86 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
87 if (buffer[i+75] == 16384)
88 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
89 if (buffer[i+75] == 256)
90 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
91 if (buffer[i+75] == -32768)
92 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
93 if (buffer[i+75] == -16384)
94 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
95 if (buffer[i+75] == -32512)
96 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
102 std::cerr << "Error openning "<< args_info.OutputFile_arg << std::endl;