// DicomVidDoc.h : interface of the CDicomVidDoc class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_DICOMVIDDOC_H__21F98FA3_B590_4A13_B717_AE19B563F920__INCLUDED_) #define AFX_DICOMVIDDOC_H__21F98FA3_B590_4A13_B717_AE19B563F920__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 typedef struct _CODETEXT { L_INT nCode; L_CHAR *pszText; } CODETEXT, *pCODETEXT; static CODETEXT m_Error[] = { { DICOM_SUCCESS, "Success" }, { DICOM_ERROR_LOCKED, "Support locked" }, { DICOM_ERROR_MEMORY, "Memory not available" }, { DICOM_ERROR_OPEN, "Open file error" }, { DICOM_ERROR_READ, "Read file error" }, { DICOM_ERROR_WRITE, "Write file error" }, { DICOM_ERROR_SEEK, "Seek file error" }, { DICOM_ERROR_END, "End-of-file" }, { DICOM_ERROR_FORMAT, "Wrong file format" }, { DICOM_ERROR_PARAMETER, "Wrong parameter passed" }, { DICOM_ERROR_IMAGE, "Wrong image" }, { DICOM_ERROR_COMPRESSION, "Wrong compression type for image" }, { DICOM_ERROR_PHOTOMETRIC, "Wrong photometric type for image" }, { DICOM_ERROR_CONVERSION, "The image cannot be converted" }, { DICOM_ERROR_RANGE, "Wrong range" }, { DICOM_ERROR_BITSPERPIXEL, "Wrong BitsPerPixel for image" }, { DICOM_ERROR_QFACTOR, "Wrong QFactor for image compression" }, { DICOM_ERROR_PDU_TYPE, "Wrong PDU's type" }, { DICOM_ERROR_PDU_LENGTH, "Wrong length for this PDU" }, { DICOM_ERROR_PDU_ID, "Wronk PDU's ID" }, { DICOM_ERROR_NET_FAILURE, "General failure" }, { DICOM_ERROR_NET_ACCESS, "Broadcast address" }, { DICOM_ERROR_NET_ADDRESS_IN_USE, "Address already in use" }, { DICOM_ERROR_NET_ADDRESS_NOT_AVAILABLE, "Address not available" }, { DICOM_ERROR_NET_ADDRESS_NOT_SUPPORTED, "Address family not supported" }, { DICOM_ERROR_NET_CONNECTION_ABORTED, "Connection aborted" }, { DICOM_ERROR_NET_CONNECTION_REFUSED, "Connection rejected" }, { DICOM_ERROR_NET_CONNECTION_RESET, "Connection reset by the remote side" }, { DICOM_ERROR_NET_DESTINATION_REQUIRED, "Destination address required" }, { DICOM_ERROR_NET_ARGUMENT_INCORRECT, "Argument incorrect" }, { DICOM_ERROR_NET_IN_PROGRESS, "Operation in progress" }, { DICOM_ERROR_NET_BLOCKING_CANCELED, "Blocking call canceled" }, { DICOM_ERROR_NET_INVALID, "Invalid connection" }, { DICOM_ERROR_NET_IS_CONNECTED, "Already connected" }, { DICOM_ERROR_NET_NO_MORE_FILE, "No more descriptors available" }, { DICOM_ERROR_NET_MESSAGE_SIZE, "The datagram is larger than the maximum supported" }, { DICOM_ERROR_NET_DOWN, "Network subsystem failed" }, { DICOM_ERROR_NET_RESET, "The connection must be reset" }, { DICOM_ERROR_NET_UN_REACH, "The network can't be reached from this host at this time" }, { DICOM_ERROR_NET_NO_BUFFERS, "No buffer space is available" }, { DICOM_ERROR_NET_NOT_CONNECTED, "Not connected" }, { DICOM_ERROR_NET_NOT_SOCKET, "Wrong descriptor" }, { DICOM_ERROR_NET_OPERATION_NOT_SUPPORTED, "Connection-oriented service not supported" }, { DICOM_ERROR_NET_PROTOCOL_NOT_SUPPORTED, "Protocol not supported" }, { DICOM_ERROR_NET_PROTOCOL_TYPE, "Wrong protocol type" }, { DICOM_ERROR_NET_SHUTDOWN, "Network shut down" }, { DICOM_ERROR_NET_SOCKET_NOT_SUPPORTED, "Type not supported in this address family" }, { DICOM_ERROR_NET_TIME_OUT, "Time out" }, { DICOM_ERROR_NET_WOULD_BLOCK, "Nonblocking connection and the requested operation would block" }, { DICOM_ERROR_NET_HOST_NOT_FOUND, "Host not found" }, { DICOM_ERROR_NET_NO_DATA, "No data record of requested type" }, { DICOM_ERROR_NET_NO_RECOVERY, "Nonrecoverable errors" }, { DICOM_ERROR_NET_NOT_INITIALISED, "System not initialized" }, { DICOM_ERROR_NET_SYSTEM_NOT_READY, "Not ready for network communication" }, { DICOM_ERROR_NET_TRY_AGAIN, "Host not found, or server faild" }, { DICOM_ERROR_NET_VERSION_NOT_SUPPORTED, "Version requested not supported" }, }; typedef struct _DICOMSCCLASS { L_UINT32 nTag; char *pszValue; } DICOMSCCLASS; static DICOMSCCLASS m_DefaultElementValues[] = { { TAG_FILE_META_INFORMATION_VERSION, "01\\00" }, { TAG_MEDIA_STORAGE_SOP_CLASS_UID, UID_SC_IMAGE_STORAGE }, { TAG_IMPLEMENTATION_CLASS_UID, "1.2.840.114257.0.1" }, { TAG_IMPLEMENTATION_VERSION_NAME, "LEAD DICOM Writer Filter Version 1.0" }, { TAG_SOURCE_APPLICATION_ENTITY_TITLE, "LEAD Technologies, Inc." }, // Patient { TAG_PATIENT_NAME, "Anonymous" }, { TAG_PATIENT_ID, "123-45-6789" }, { TAG_PATIENT_BIRTH_DATE, "11/10/1965" }, { TAG_PATIENT_SEX, "M" }, // General Study { TAG_STUDY_DATE, "09/08/2000" }, { TAG_STUDY_TIME, "12:00:01.0" }, { TAG_REFERRING_PHYSICIAN_NAME, "Physician" }, { TAG_STUDY_ID, "1216" }, { TAG_ACCESSION_NUMBER, "1" }, // General Series { TAG_MODALITY, "OT" }, { TAG_SERIES_NUMBER, "1" }, // General Image { TAG_INSTANCE_NUMBER, "1" }, // { TAG_IMAGES_IN_ACQUISITION, "30"}, // SC Equipment { TAG_CONVERSION_TYPE, "DV" }, { TAG_SECONDARY_CAPTURE_DEVICE_MANUFACTURER, "LEAD Technologies, Inc." }, { TAG_SECONDARY_CAPTURE_DEVICE_MANUFACTURER_MODEL_NAME, "" }, { TAG_SECONDARY_CAPTURE_DEVICE_SOFTWARE_VERSION, "" }, { TAG_VIDEO_IMAGE_FORMAT_ACQUIRED, "NTSC" }, // SC Image { TAG_DATE_OF_SECONDARY_CAPTURE, "09/08/2000" }, { TAG_TIME_OF_SECONDARY_CAPTURE, "12:00:01.0" }, // SOP Common { TAG_SOP_CLASS_UID, UID_SC_IMAGE_STORAGE }, { TAG_SPECIFIC_CHARACTER_SET, "ISO_IR 100" } }; #define UIDLEN 64 class CDicomVidDoc : public CDocument { protected: // create from serialization only CDicomVidDoc(); DECLARE_DYNCREATE(CDicomVidDoc) // Attributes public: LDicomDS & GetActiveDS(){ return m_DS;} L_BOOL IsDataSetInitialized(){return m_bDataSetInitialized;} pDICOMIOD GetIOD(){return m_pDICOMIOD;} // Operations public: L_VOID Reset(L_VOID); L_VOID ConvertError(L_INT nError, CString &strError); L_VOID DisplayError(L_INT nError); L_BOOL CreateDICOMFileFromTemplate(L_UINT32 uClass); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CDicomVidDoc) public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); virtual BOOL CanCloseFrame(CFrameWnd* pFrame); //}}AFX_VIRTUAL // Implementation public: virtual ~CDicomVidDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: LDicomDS m_DS; L_BOOL m_bDataSetInitialized; pDICOMIOD m_pDICOMIOD; TCHAR m_InstanceGUID[UIDLEN]; int m_nInstanceNumber; const TCHAR * const CreateGUID(); L_VOID SetDSDefaultValues(LDicomDS *pDicomDataSet,L_BOOL bInsertMissingElements); L_VOID CleanDataSet(L_UINT32 uClass,LDicomDS *pDicomDataSet); L_VOID DeleteEmptyElementsType3(L_UINT32 uClass,LDicomDS *pDicomDataSet); L_INT IsEmptySequence(pDICOMELEMENT pElementSequence,LDicomDS *pDicomDataSet); L_VOID DeleteEmptyModulesOptional(L_UINT32 uClass,LDicomDS *pDicomDataSet); L_INT IsEmptyModule(L_UINT32 uModule,LDicomDS *pDicomDataSet); L_INT IsEmptyModule(pDICOMMODULE pModule,LDicomDS *pDicomDataSet); L_VOID CleanDSAndSetDefaultValues(L_UINT32 uClass,LDicomDS *pDicomDataSet,L_BOOL bInsertMissingElements); L_VOID SetInstanceUIDs(LDicomDS *pDicomDataSet); L_VOID SetInstanceNumbers(LDicomDS *pDicomDataSet, L_INT nInstanceNumber); L_VOID SetStudyDateAndTime(LDicomDS *pDicomDataSet); L_BOOL CanUpdateElementValue(LDicomDS *pDicomDataSet,pDICOMELEMENT pElement); L_VOID InsertMetaHeader(LDicomDS *pDS); int CheckDirtyFlag(); L_BOOL IsCapturing(); L_UINT16 ChangeDSToAcceptCompressed(); L_BOOL CanInsertCompressedImage(); // Generated message map functions protected: //{{AFX_MSG(CDicomVidDoc) afx_msg void OnFileOpen(); afx_msg void OnFileSaveAs(); afx_msg void OnFilePrint(); afx_msg void OnFileNewdicomfile(); afx_msg void OnFileClosedicomfile(); afx_msg void OnUpdateFileClosedicomfile(CCmdUI* pCmdUI); afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI); afx_msg void OnUpdateFileNewdicomfile(CCmdUI* pCmdUI); afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_DICOMVIDDOC_H__21F98FA3_B590_4A13_B717_AE19B563F920__INCLUDED_)