SVG5/common.h
2025-10-12 13:55:56 +09:00

702 lines
18 KiB
C++

#ifndef COMMON_H
#define COMMON_H
#include <QImage>
#include <QString>
#include <map>
#include <vector>
using namespace std;
typedef vector<QString> RowData;
#define SendListFilename RowData
#include <QImage>
#include <QString>
#include <QDate>
#include <QDateTime>
#include <QDebug>
#define SAFE_DELETE(x) { if(x!=NULL) { delete x; x = NULL; }}
#define SAFE_ARRAY_DELETE(x) { if(x!=NULL) { delete[] x; x = NULL; }}
#define MOVIE_FILE_EXTENSION ".mp4"
enum SMENU
{
SMENU_WORKLIST = 0x01,
SMENU_HISTORY = 0x02,
SMENU_SETTING = 0x04,
SMENU_CAPTURE = 0x10,
SMENU_VIEWER = 0x20
};
enum SWIDGET
{
SWIDGET_WORKLIST = 0,
SWIDGET_HISTORY,
SWIDGET_SETTING,
SWIDGET_CAPTURE,
SWIDGET_VIEWER
};
#ifndef __SDCM_DISPLAY_INDEX
#define __SDCM_DISPLAY_INDEX
typedef enum _SDCM_DISPLAY_INDEX
{
SDI_PATIENT_ID = 0,
SDI_PATIENT_NAME,
SDI_PATIENT_SEX,
SDI_PATIENT_WEIGHT,
SDI_PATIENT_BIRTH_DATE,
SDI_PATIENT_AGE,
SDI_PATIENT_LOCATION,
SDI_STUDY_INSTANCE_UID,
SDI_STUDY_DESCRIPTION,
SDI_STUDY_DATE,
SDI_STUDY_TIME,
SDI_STUDY_CREATE_DATE,
SDI_STUDY_REFERRING_PHYSICIAN_NAME,
SDI_SERIES_INSTANCE_UID,
SDI_SERIES_OPERATOR,
SDI_SERIES_MODALITY,
SDI_SERIES_BODYPART,
SDI_SERIES_DESCRIPTION,
SDI_IMAGE_INSTANCE_UID,
SDI_IMAGE_CREATE_DATE,
SDI_IMAGE_CREATE_TIME,
SDI_SCHEDULED_DATE,
SDI_SCHEDULED_TIME,
SDI_SCHEDULED_PROCEDURE_STEP_ID,
SDI_SCHEDULED_PROCEDURE_ID,
SDI_REQUESTED_PROCEDURE_COMMENTS,
SDI_INDEX,
SDI_SAVE_IMAGE_COUNT,
SDI_SEND_IMAGE_COUNT,
SDI_SAVE_MOVIE_COUNT,
SDI_SAVE_TOTAL_COUNT,
SDI_ACCESSION_NUMBER,
SDI_SCHEDULED_PERFORMING_PHYSICIAN_NAME,
SDI_SCHEDULED_CODE_VALUE,
SDI_TOTAL, // No use!!, this is end tag!!
}SDCM_DISPLAY_INDEX;
#endif
#ifndef __SDCM_HISTORY_DISPLAY_INDEX
#define __SDCM_HISTORY_DISPLAY_INDEX
typedef enum _SDCM_HISTORY_DISPLAY_INDEX
{
HDI_INDEX = 0,
HDI_PATIENT_INDEX,
HDI_PATIENT_ID,
HDI_PATIENT_NAME,
HDI_PATIENT_AGE,
HDI_PATIENT_SEX,
HDI_PATIENT_BIRTH_DATE,
HDI_PATIENT_WEIGHT,
HDI_STUDY_CREATE_DATE_TIME,
HDI_STUDY_DATE,
HDI_STUDY_TIME,
HDI_SCHEDULED_CODE_VALUE,
HDI_PATIENT_LOCATION,
HDI_ACCESSION_NUMBER,
HDI_STUDY_REFERRING_PHYSICIAN_NAME,
HDI_STUDY_INSTANCE_UID,
HDI_SERIES_INSTANCE_UID,
HDI_STUDY_DESCRIPTION,
HDI_SERIES_DESCRIPTION,
HDI_SERIES_OPERATOR,
HDI_SAVE_IMAGE_COUNT,
HDI_SEND_IMAGE_COUNT,
HDI_SERIES_MODALITY,
HDI_SERIES_DATE,
HDI_SERIES_TIME,
HDI_SERIES_NUMBER,
HDI_SAVE_MOVIE_COUNT,
HDI_TOTAL, // No use!!, this is end tag!!
}SDCM_HISTORY_DISPLAY_INDEX;
#endif
enum SDISPLAY_TYPE
{
SDISPLAY_1920X1080 = 0,
SDISPLAY_1280X1024
};
struct SearchDate
{
QDate m_DateStart;
QDate m_DateEnd;
};
enum DISPLAY_TYPE
{
DISPLAY_NONE = 0,
DISPLAY_IMAGE = 1,
DISPLAY_VIDEO = 2
};
struct TableHeader
{
bool m_bSelect;
int m_nIndexDefault;
int m_nIndex;
int m_nWidth;
QString m_strText;
};
struct RGB_Data
{
uint8_t r;
uint8_t g;
uint8_t b;
};
struct RGBA_Data
{
uint8_t r;
uint8_t g;
uint8_t b;
uint8_t a;
};
struct NetworkShareInfo
{
QString m_strIP;
QString m_strShareFolder;
QString m_strID;
QString m_strPassword;
QString m_strVersion;
bool m_bEnable;
bool m_bAutoSend;
};
struct ImageSelect
{
ImageSelect()
{
m_bSelect = false;
m_bSend = false;
m_bDelete = false;
m_pImageData = NULL;
//m_pImage = NULL;
m_strFile = "";
m_nType = DISPLAY_NONE;
m_strDate = "";
m_strTime = "";
m_strStudyInstanceUID = "";
m_strSeriesInstanceUID = "";
m_strImageInstanceUID = "";
m_strPatientAge = "";
m_nIndexStudy = 0;
m_nIndexSeries = 0;
m_nIndexImage = 0;
m_nIndexPatient = 0;
m_nSeriesNumber = 0;
m_nImageNumber = 0;
#ifdef _4K
m_nImageWidth = 3840;
m_nImageHeight = 2160;
#else
m_nImageWidth = 1920;
m_nImageHeight = 1080;
#endif
}
void CreateImage(int nImageWidth, int nImageHeight, int nImageFormat)
{
m_nImageWidth = nImageWidth;
m_nImageHeight = nImageHeight;
m_nImageFormat = nImageFormat;
m_pImageData = new uint8_t[m_nImageWidth*m_nImageHeight*3];
}
int GetWidth()
{
return m_nImageWidth;
}
int GetHeight()
{
return m_nImageHeight;
}
int GetFormat()
{
return m_nImageFormat;
}
void DeleteImageData()
{
SAFE_ARRAY_DELETE(m_pImageData);
m_bDelete = true;
}
~ImageSelect()
{
SAFE_ARRAY_DELETE(m_pImageData);
//SAFE_DELETE(m_pImage);
m_bSelect = false;
m_bSend = false;
m_bDelete = false;
m_strFile = "";
m_nType = DISPLAY_NONE;
m_strDate = "";
m_strTime = "";
m_strStudyInstanceUID = "";
m_strSeriesInstanceUID = "";
m_strImageInstanceUID = "";
m_strPatientAge = "";
m_nIndexStudy = 0;
m_nIndexSeries = 0;
m_nIndexImage = 0;
m_nIndexPatient = 0;
m_nSeriesNumber = 0;
m_nImageNumber = 0;
}
bool m_bSelect;
bool m_bSend;
bool m_bDelete;
//QImage* m_pImage;
uint8_t* m_pImageData;
QString m_strFile;
DISPLAY_TYPE m_nType;
QString m_strDate;
QString m_strTime;
QString m_strStudyInstanceUID;
QString m_strSeriesInstanceUID;
QString m_strImageInstanceUID;
QString m_strPatientAge;
int m_nIndexStudy;
int m_nIndexSeries;
int m_nIndexImage;
int m_nIndexPatient;
int m_nSeriesNumber;
int m_nImageNumber;
int m_nImageWidth;
int m_nImageHeight;
int m_nImageFormat;
};
struct DisplayImage
{
DisplayImage()
{
m_pImage = NULL;
m_strFilename = "";
m_bCheck = false;
m_nType = DISPLAY_IMAGE;
}
DisplayImage(QString strFilename, QImage* pImage, DISPLAY_TYPE nType, bool bCheck)
{
m_strFilename = strFilename;
m_pImage = pImage;
m_nType = nType;
m_bCheck = bCheck;
}
QImage* m_pImage;
QString m_strFilename;
bool m_bCheck;
DISPLAY_TYPE m_nType;
};
struct CAPTURE_IMAGE
{
CAPTURE_IMAGE()
{
m_pImage = NULL;
m_pImageSmall = NULL;
m_strImageFilename = "";
m_strVideoFilename = "";
m_pImageCaptureRaw = NULL;
m_pImageCaptureColor = NULL;
m_nType = DISPLAY_NONE;
m_nIndex = -1;
m_bCheck = false;
m_bSaveFile = false;
m_bDelete = false;
m_bSend = false;
m_pImageData = NULL;
m_nImageWidth = 0;
m_nImageHeight = 0;
m_nImageFormat = 0;
m_nAcquisitionNumber = 0;
m_bBackup = false;
}
~CAPTURE_IMAGE()
{
SAFE_DELETE(m_pImage);
SAFE_DELETE(m_pImageSmall);
SAFE_ARRAY_DELETE(m_pImageCaptureRaw);
SAFE_ARRAY_DELETE(m_pImageCaptureColor);
m_strImageFilename = "";
m_nType = DISPLAY_NONE;
m_nIndex = -1;
m_bCheck = false;
m_bDelete = false;
m_bSend = false;
}
void CreateImage(int nImageWidth, int nImageHeight, int nImageFormat)
{
m_nImageWidth = nImageWidth;
m_nImageHeight = nImageHeight;
m_nImageFormat = nImageFormat;
m_pImageData = new uint8_t[m_nImageWidth*m_nImageHeight*3];
}
int GetWidth()
{
return m_nImageWidth;
}
int GetHeight()
{
return m_nImageHeight;
}
int GetFormat()
{
return m_nImageFormat;
}
void DeleteImageData()
{
SAFE_ARRAY_DELETE(m_pImageData);
m_bDelete = true;
}
bool IsBackup()
{
return m_bBackup;
}
QImage* m_pImage;
QImage* m_pImageSmall;
QString m_strImageFilename;
QString m_strVideoFilename;
QDateTime m_DateTime;
bool m_bSaveFile;
uint8_t* m_pImageCaptureRaw;
RGB_Data* m_pImageCaptureColor;
bool m_bCheck;
bool m_bDelete;
DISPLAY_TYPE m_nType;
int m_nIndex;
int m_nAcquisitionNumber;
bool m_bSend;
bool m_bBackup;
uint8_t* m_pImageData;
int m_nImageWidth;
int m_nImageHeight;
int m_nImageFormat;
};
struct SEARCH_ITEM
{
SEARCH_ITEM()
{
Clear();
}
void Clear()
{
m_strStudyDate.clear();
m_strPatientName.clear();
m_strPatientID.clear();
}
QString m_strStudyDate;
QString m_strPatientName;
QString m_strPatientID;
};
struct LOCAL_DATA
{
};
struct NETWORK_DIRECTORY
{
QString m_strNetworkDirectory;
QString m_strID;
QString m_strPassword;
};
struct HISTORY_STUDY
{
QString* pStrStudyIndex;
QString* pStrPatientIndex;
QString* pStrPatientID;
QString* pStrPatientName;
QString* pStrPatientAge;
QString* pStrPatientSex;
QString* pStrPatientBirthDate;
QString* pStrPatientWeight;
QString* pStrCreateDateTime;
QString* pStrStudyDate;
QString* pStrStudyTime;
QString* pStrStudyCodeValue;
QString* pStrPatientLocation;
QString* pStrAccessionNumber;
QString* pStrReferringPhysiciansName;
QString* pStrStudyInstanceUID;
QString* pStrSeriesInstanceUID;
QString* pStrStudyDescription;
QString* pStrSeriesDescription;
QString* pStrOperatorsName;
QString* pStrImageCount;
QString* pStrImageSend;
QString* pStrModality;
QString* pStrSeriesDate;
QString* pStrSeriesTime;
QString* pStrSeriesNumber;
QString* pStrMovieCount;
vector<QString*> m_List;
map<int, int> m_ListTableHistoryViewMap;
vector<int> m_ListEnableHeader;
HISTORY_STUDY()
{
if(m_ListTableHistoryViewMap.empty()==true)
{
InitMap();
}
QString* pStrData = NULL;
pStrData = new QString; m_List.push_back(pStrData); pStrStudyIndex = pStrData; //0
pStrData = new QString; m_List.push_back(pStrData); pStrPatientIndex = pStrData; //1
pStrData = new QString; m_List.push_back(pStrData); pStrPatientID = pStrData;//2
pStrData = new QString; m_List.push_back(pStrData); pStrPatientName = pStrData;//3
pStrData = new QString; m_List.push_back(pStrData); pStrPatientAge = pStrData;//4
pStrData = new QString; m_List.push_back(pStrData); pStrPatientSex = pStrData;//5
pStrData = new QString; m_List.push_back(pStrData); pStrPatientBirthDate = pStrData;//6
pStrData = new QString; m_List.push_back(pStrData); pStrPatientWeight = pStrData;//7
pStrData = new QString; m_List.push_back(pStrData); pStrCreateDateTime = pStrData;//8
pStrData = new QString; m_List.push_back(pStrData); pStrStudyDate = pStrData;//9
pStrData = new QString; m_List.push_back(pStrData); pStrStudyTime = pStrData;//10
pStrData = new QString; m_List.push_back(pStrData); pStrStudyCodeValue = pStrData;//11
pStrData = new QString; m_List.push_back(pStrData); pStrPatientLocation = pStrData;//12
pStrData = new QString; m_List.push_back(pStrData); pStrAccessionNumber = pStrData;//13
pStrData = new QString; m_List.push_back(pStrData); pStrReferringPhysiciansName = pStrData;//14
pStrData = new QString; m_List.push_back(pStrData); pStrStudyInstanceUID = pStrData;//15
pStrData = new QString; m_List.push_back(pStrData); pStrSeriesInstanceUID = pStrData;//16
pStrData = new QString; m_List.push_back(pStrData); pStrStudyDescription = pStrData;//17
pStrData = new QString; m_List.push_back(pStrData); pStrSeriesDescription = pStrData;//18
pStrData = new QString; m_List.push_back(pStrData); pStrOperatorsName = pStrData;//19
pStrData = new QString; m_List.push_back(pStrData); pStrImageCount = pStrData;//20
pStrData = new QString; m_List.push_back(pStrData); pStrImageSend = pStrData;//21
pStrData = new QString; m_List.push_back(pStrData); pStrModality = pStrData;//22
pStrData = new QString; m_List.push_back(pStrData); pStrSeriesDate = pStrData;//23
pStrData = new QString; m_List.push_back(pStrData); pStrSeriesTime = pStrData;//24
pStrData = new QString; m_List.push_back(pStrData); pStrSeriesNumber = pStrData;//25
pStrData = new QString; m_List.push_back(pStrData); pStrMovieCount = pStrData;//26
}
~HISTORY_STUDY()
{
Clear();
}
void InitMap()
{
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_INDEX, HDI_INDEX));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_ID, HDI_PATIENT_ID));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_NAME, HDI_PATIENT_NAME));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_AGE, HDI_PATIENT_AGE));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_SEX, HDI_PATIENT_SEX));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_BIRTH_DATE, HDI_PATIENT_BIRTH_DATE));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_WEIGHT, HDI_PATIENT_WEIGHT));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_CREATE_DATE, HDI_STUDY_CREATE_DATE_TIME));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_DATE, HDI_STUDY_DATE));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_TIME, HDI_STUDY_TIME));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SCHEDULED_CODE_VALUE, HDI_SCHEDULED_CODE_VALUE));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_LOCATION, HDI_PATIENT_LOCATION));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_ACCESSION_NUMBER, HDI_ACCESSION_NUMBER));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_REFERRING_PHYSICIAN_NAME, HDI_STUDY_REFERRING_PHYSICIAN_NAME));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_INSTANCE_UID, HDI_STUDY_INSTANCE_UID));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_INSTANCE_UID, HDI_SERIES_INSTANCE_UID));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_STUDY_DESCRIPTION, HDI_STUDY_DESCRIPTION));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_DESCRIPTION, HDI_SERIES_DESCRIPTION));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_OPERATOR, HDI_SERIES_OPERATOR));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SAVE_IMAGE_COUNT, HDI_SAVE_IMAGE_COUNT));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SEND_IMAGE_COUNT, HDI_SEND_IMAGE_COUNT));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_MODALITY, HDI_SERIES_MODALITY));
m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SAVE_MOVIE_COUNT, HDI_SAVE_MOVIE_COUNT));
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_DATE, HDI_SERIES_DATE)); //Not Display
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SERIES_TIME, HDI_SERIES_TIME)); //Not Display
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SCHEDULED_PERFORMING_PHYSICIAN_NAME, nIndex)); nIndex++;
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_SCHEDULED_CODE_VALUE, nIndex)); nIndex++;
//skip
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_LOCATION, -1));
//m_ListTableHistoryViewMap.insert(map<int, int>::value_type(SDI_PATIENT_LOCATION, -1));
map<int, int>::iterator it;
for(it=m_ListTableHistoryViewMap.begin() ; it!=m_ListTableHistoryViewMap.end() ; ++it)
{
int nIDEnable = (*it).first;
m_ListEnableHeader.push_back(nIDEnable);
}
}
int GetHDIWithSDI(int nDisplayIndex)
{
int nIndex = -1;
map<int, int>::iterator it = m_ListTableHistoryViewMap.find(nDisplayIndex);
nIndex = it->second;
return nIndex;
}
QString GetData(int nDisplayIndex)
{
if(nDisplayIndex==SDI_SCHEDULED_CODE_VALUE)
{
}
int i=0;
bool bEnable = false;
for(i=0 ; i<m_ListEnableHeader.size() ; i++)
{
int nIDEnable = m_ListEnableHeader[i];
if(nIDEnable==nDisplayIndex)
{
bEnable = true;
}
}
if(bEnable==false)
{
return "";
}
map<int, int>::iterator it = m_ListTableHistoryViewMap.find(nDisplayIndex);
int nIndex = it->second;
if(nIndex>=0)
{
return *m_List[nIndex];
}
return "";
}
void Clear()
{
int i=0;
for(i=0 ; i<m_List.size() ; i++)
{
QString* pStrData = m_List[i];
SAFE_DELETE(pStrData);
}
m_List.clear();
m_ListTableHistoryViewMap.clear();
}
};
#ifndef _WORD
#define _WORD
typedef unsigned short WORD;
#endif
#ifndef _DWORD
#define _DWORD
typedef unsigned int DWORD;
#endif
#ifndef _BOOL
#define _BOOL
typedef bool BOOL;
#endif
#ifndef _TRUE
#define _TRUE
#define TRUE true
#endif
#ifndef _FALSE
#define _FLASE
#define FALSE false
#endif
struct __attribute__((packed)) BITMAPFILEHADER
{
__attribute__((aligned(2))) WORD bfType;
__attribute__((aligned(2))) DWORD bfSize;
__attribute__((aligned(2))) WORD bfReserved1;
__attribute__((aligned(2))) WORD bfReserved2;
__attribute__((aligned(2))) DWORD bfOffBits;
};
struct __attribute__((packed)) BITMAPINFOHEADER
{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
};
typedef enum _TYPE_SEARCH_DURATION
{
SEARCH_TODAY = 0,
SEARCH_3DAY,
SEARCH_WEEK,
SEARCH_2WEEK,
SEARCH_3WEEK,
SEARCH_1MONTH,
SEARCH_2MONTH,
SEARCH_USER_DEFINED,
}TYPE_SEARCH_DURATION;
#endif // COMMON_H