DicomDir.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /***************************************************************************
  2. * E-Com Technology Ltd.
  3. *
  4. * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta
  5. ***************************************************************************/
  6. #ifndef _DICOM_DICOM_DIR_
  7. #define _DICOM_DICOM_DIR_
  8. //////////////////////////////////////////////////////////////////////
  9. // class DicomDir
  10. class DICOM_API DicomDir : public DICOMFile
  11. {
  12. public:
  13. DicomDir ();
  14. BOOL ReadDicomDir (const char * FileName);
  15. BOOL WriteDicomDir (const char * FileName, const char * FileSetID, const char * FileSetDesc);
  16. BOOL CreateDicomDir (const char * Path, const char * FileSetID, const char * FileSetDesc);
  17. BOOL AddDicomFile (const char * FileName);
  18. void SetPath (const char * Path);
  19. public:
  20. BOOL m_bAddIcon;
  21. protected:
  22. BOOL AddPatient (DICOMVRSet * VRS, DICOMFile * DicomFile);
  23. BOOL AddStudy (DICOMVRSet * VRS, DICOMFile * DicomFile);
  24. BOOL AddSeries (DICOMVRSet * VRS, DICOMFile * DicomFile);
  25. BOOL AddImage (DICOMVRSet * VRS, DICOMFile * DicomFile);
  26. virtual BOOL BuildMetaHead (void) const;
  27. BOOL LoadOneSequence (UINT32 Offset, DICOMDataSet * DDS);
  28. BOOL LoadSQ (DICOMDataSet * DDS, DICOMDataSet * PDDS);
  29. protected:
  30. DString m_CurrentPath;
  31. public:
  32. class DICOM_API Iterator
  33. {
  34. public:
  35. Iterator (DicomDir & dir);
  36. Iterator (Iterator & Iter);
  37. ~Iterator ()
  38. {
  39. if (m_pIter)
  40. delete m_pIter;
  41. }
  42. void operator ++ ()
  43. {
  44. Next ();
  45. }
  46. void operator ++ (int)
  47. {
  48. Next ();
  49. }
  50. void Next (void)
  51. {
  52. (*m_pIter) ++;
  53. if (*m_pIter)
  54. m_VRS = m_pIter->Current ();
  55. }
  56. DICOMVRSet & operator () (void)
  57. {
  58. return *m_VRS;
  59. }
  60. DICOMVRSet & Current (void)
  61. {
  62. return *m_VRS;
  63. }
  64. operator bool ()
  65. {
  66. if (! m_pIter)
  67. return false;
  68. return (*m_pIter);
  69. }
  70. protected:
  71. Array <DICOMVRSet *>::Iterator * m_pIter;
  72. DICOMVRSet * m_VRS;
  73. };
  74. };
  75. //////////////////////////////////////////////////////////////////////
  76. #endif