//--------------------------------------------------------------------------------------- // // Copyright (c) 2005,珠海友通科技有限公司——通用型DROC // All rights reserved. // // 文件名称:CommonData.h // 文件标识:见配置管理计划书 // 摘 要:系统之间需要传递的数据主要有病人信息、访问信息、检查信息、图像信息、 // 图像数据、硬件数据、站点数据,这里对这些数据结构进行一一定义。同时还有公 // 共的消息定义,以方便模块之间传递消息 // // 当前版本:0.1 // 作 者:吕国政 // 完成日期:2005年1月10日 // // 取代版本: // 原 作 者: // 完成日期: // //--------------------------------------------------------------------------------------- #pragma once //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PATIENT // 结构说明:用于保存病人信息,病人信息来源于worklist或者技师手工输入。 // //--------------------------------------------------------------------------------------- typedef struct tagPatientInfo { CString strPatientID; // 病人标示码 CString strPatientName; // 病人姓名 CString strOtherPatientID; // 病人其他标示码 CString strOtherPatientName; // 病人其他姓名 CString strAge; // 年龄 CString strOccupation; // 职业 CString strSex; // 性别 CString strMedicalAlert; // 药物警告 CString strContrastAllergies; // 造影剂过敏 CString strSmokingStatus; // 吸烟状态 CString strPatientComments; // 评论 CString strPatientHistory; // 病史 CString strPregnancyStatus; // 怀孕状态 CString strSpecialNeeds; // 特殊需要 CString strPatientState; // 病人状态 CString strPatientStatus; // 如果病人有任意一个未完成的检查,则病人的状态为:未完成。 CString strDob; // 生日 YYYYMMDD COleDateTime dtDob; // 生日 YYYYMMDD COleDateTime dtLastMenstrualDate; // 最近一次月经时间 //code begin 20150611 for IMIX CString strPatientSize; //病人体型 CString strAccessionNumber; // CString strStudyID; //StudyID //code end 20150611 for IMIX CString strReserve1; CString strReserve2; CString strReserve3; CString strStudyDescription; // study 描述 20150724 tagPatientInfo& operator =(const tagPatientInfo &patient) { //CString::CopyChars(strPatientID, patient.strPatientID, patient.strPatientID.GetLength()); strPatientID.Format("%s", patient.strPatientID); strPatientName.Format("%s", patient.strPatientName); strOtherPatientID.Format("%s", patient.strOtherPatientID); strOtherPatientName.Format("%s", patient.strOtherPatientName); strAge.Format("%s", patient.strAge); strSex.Format("%s", patient.strSex); strOccupation.Format("%s", patient.strOccupation); strMedicalAlert.Format("%s", patient.strMedicalAlert); strContrastAllergies.Format("%s", patient.strContrastAllergies); strSmokingStatus.Format("%s", patient.strSmokingStatus); strPatientComments.Format("%s", patient.strPatientComments); strPatientHistory.Format("%s", patient.strPatientHistory); strPregnancyStatus.Format("%s", patient.strPregnancyStatus); strSpecialNeeds.Format("%s", patient.strSpecialNeeds); strPatientState.Format("%s", patient.strPatientState); strPatientStatus.Format("%s", patient.strPatientStatus); strReserve1.Format("%s", patient.strReserve1); strReserve2.Format("%s", patient.strReserve2); strReserve3.Format("%s", patient.strReserve3); strDob.Format("%s", patient.strDob); dtDob = patient.dtDob; dtLastMenstrualDate = patient.dtLastMenstrualDate; strStudyDescription.Format("%s",patient.strStudyDescription); //code 20150724 //code begin 20150611 for IMIX strPatientSize.Format("%s", patient.strPatientSize); strAccessionNumber.Format("%s", patient.strAccessionNumber); strStudyID.Format("%s", patient.strStudyID); //code end 20150611 for IMIX return *this; } }ECOM_PATIENT; typedef struct tagPatientInfoEx { int nPatientIDProperty; // 病人标示码属性 0:可不添, 1:必填, -1:内容不正确 int nPatientNameProperty; // 病人姓名属性 0:可不添, 1:必填 int nOtherPatientIDProperty; // 病人其他标示码属性 0:可不添, 1:必填 int nOtherPatientNameProperty; // 病人其他姓名属性 0:可不添, 1:必填 int nAgeProperty; // 年龄属性 0:可不添, 1:必填 int nOccupationProperty; // 职业属性 0:可不添, 1:必填 int nSexProperty; // 性别属性 0:可不添, 1:必填 int nMedicalAlertProperty; // 药物警告属性 0:可不添, 1:必填 int nContrastAllergiesProperty; // 造影剂过敏属性 0:可不添, 1:必填 int nSmokingStatusProperty; // 吸烟状态属性 0:可不添, 1:必填 int nPatientCommentsProperty; // 评论属性 0:可不添, 1:必填 int nPatientHistoryProperty; // 病史属性 0:可不添, 1:必填 int nPregnancyStatusProperty; // 怀孕状态属性 0:可不添, 1:必填 int nSpecialNeedsProperty; // 特殊需要属性 0:可不添, 1:必填 int nPatientStateProperty; // 病人状态属性 0:可不添, 1:必填 int nPatientStatusProperty; // 如果病人有任意一个未完成的检查,则病人的状态为:未完成。属性 0:可不添, 1:必填 int dtDobProperty; // 生日属性 0:可不添, 1:必填 int dtLastMenstrualDateProperty; // 最近一次月经时间属性 0:可不添, 1:必填 ECOM_PATIENT Patient; }ECOM_PATIENTEX; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_VISIT // 结构说明:用于保存访问信息,访问信息来源于worklist或者技师手工输入。 // //--------------------------------------------------------------------------------------- typedef struct tagVisitInfo { CString strAdmissionID; // 分配ID CString strVisitStatus; // CString strVisitComments; // CString strRefPhysician; // 下医嘱医师 COleDateTime dtAdmittingTime; // 注册时间 COleDateTime dtVisitDate; // 检查任务到modality的时间 CString strReserve1; CString strReserve2; CString strReserve3; tagVisitInfo& operator =(const tagVisitInfo &visit) { //CString::CopyChars(strPatientID, patient.strPatientID, patient.strPatientID.GetLength()); strAdmissionID.Format("%s", visit.strAdmissionID); strVisitStatus.Format("%s", visit.strVisitStatus); strVisitComments.Format("%s", visit.strVisitComments); strRefPhysician.Format("%s", visit.strRefPhysician); dtAdmittingTime = visit.dtAdmittingTime; dtVisitDate = visit.dtVisitDate; strReserve1.Format("%s", visit.strReserve1); strReserve2.Format("%s", visit.strReserve2); strReserve3.Format("%s", visit.strReserve3); return *this; } }ECOM_VISIT; typedef struct tagVisitInfoEx { int nAdmissionIDProperty; // 分配ID属性 0:可不添, 1:必填, -1:内容不正确 int nVisitStatusProperty; // 属性 0:可不添, 1:必填 int nVisitCommentsProperty; // 属性 0:可不添, 1:必填 int nRefPhysicianProperty; // 下医嘱医师属性 0:可不添, 1:必填 int nAdmittingTimeProperty; // 注册时间属性 0:可不添, 1:必填 int nVisitDateProperty; // 检查任务到modality的时间属性 0:可不添, 1:必填 ECOM_VISIT Visit; }ECOM_VISITEX; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_STUDY // 结构说明:用于保存检查信息,检查信息来源于worklist或者技师手工输入。 // //--------------------------------------------------------------------------------------- typedef struct tagStudyInfo { CString strStudyID; // Study内部标示 CString strPatientID; // 病人标示码 CString strAdmissionID; // 分配ID CString strAccessionNum; // 访问标示码 CString strStudyInstanceUID; // CString strScheduledAETitle; // CString strRegSource; // CString strStudyStatus; // CString strStudyPriority; // CString strStudyComments; // CString strRequestingPhysician; // CString strRequestedProcedureDescription; // CString strRequestedContrasAgent; // CString strScheduledProcedureStepID; // CString strScheduledProcedureStepDescription; // CString strRequestedProcedureID; // CString strPreMedication; // CString strProcedureCode; // CString strProcedureCodeValue; // CString strProcedureCodeMeaning; // CString strMPPSInstanceUID; // CString strMPPSStatus; CString strModality; CString strOperatorName; // 技师名字 COleDateTime dtScheduledStartDateTime; // COleDateTime dtStudyStartDateTime; // COleDateTime dtStudyCompletionDateTime; // CString strReserve1; CString strReserve2; CString strReserve3; tagStudyInfo& operator =(const tagStudyInfo &study) { strStudyID.Format("%s", study.strStudyID); strPatientID.Format("%s", study.strPatientID); strAdmissionID.Format("%s", study.strAdmissionID); strAccessionNum.Format("%s", study.strAccessionNum); strStudyInstanceUID.Format("%s", study.strStudyInstanceUID); strScheduledAETitle.Format("%s", study.strScheduledAETitle); strRegSource.Format("%s", study.strRegSource); strStudyStatus.Format("%s", study.strStudyStatus); strStudyPriority.Format("%s", study.strStudyPriority); strStudyComments.Format("%s", study.strStudyComments); strRequestingPhysician.Format("%s", study.strRequestingPhysician); strRequestedProcedureDescription.Format("%s", study.strRequestedProcedureDescription); strRequestedContrasAgent.Format("%s", study.strRequestedContrasAgent); strScheduledProcedureStepID.Format("%s", study.strScheduledProcedureStepID); strScheduledProcedureStepDescription.Format("%s", study.strScheduledProcedureStepDescription); strRequestedProcedureID.Format("%s", study.strRequestedProcedureID); strPreMedication.Format("%s", study.strPreMedication); strProcedureCode.Format("%s", study.strProcedureCode); strProcedureCodeValue.Format("%s", study.strProcedureCodeValue); strProcedureCodeMeaning.Format("%s", study.strProcedureCodeMeaning); strMPPSInstanceUID.Format("%s", study.strMPPSInstanceUID); strMPPSStatus.Format("%s", study.strMPPSStatus); strModality.Format("%s", study.strModality); strOperatorName.Format("%s", study.strOperatorName); dtScheduledStartDateTime = study.dtScheduledStartDateTime; dtStudyStartDateTime = study.dtStudyStartDateTime; dtStudyCompletionDateTime = study.dtStudyCompletionDateTime; strReserve1.Format("%s", study.strReserve1); strReserve2.Format("%s", study.strReserve2); strReserve3.Format("%s", study.strReserve3); return *this; } }ECOM_STUDY; typedef struct tagStudyInfoEx { int nStudyIDProperty; // Study内部标示属性 0:可不添, 1:必填, -1:内容不正确 int nPatientIDProperty; // 病人标示码属性 0:可不添, 1:必填, -1:内容不正确 int nAdmissionIDProperty; // 分配ID属性 0:可不添, 1:必填, -1:内容不正确 int nAccessionNumProperty; // 访问标示码属性 0:可不添, 1:必填, -1:内容不正确 int nStudyInstanceUIDProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledAETitleProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nRegSourceProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nStudyStatusProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nStudyPriorityProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nStudyCommentsProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nRequestingPhysicianProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedProcedureDescriptionProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedContrasAgentProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledProcedureStepIDProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledProcedureStepDescriptionProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedProcedureIDProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nPreMedicationProperty; //属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeValueProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeMeaningProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nMPPSInstanceUIDProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nMPPSStatusProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nModalityProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nOperatorNameProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 // 技师名字 int nScheduledStartDateTimeProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nStudyStartDateTimeProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nStudyCompletionDateTimeProperty; //属性 0:可不添, 1:必填, -1:内容不正确 ECOM_STUDY Study; }ECOM_STUDYEX; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_WORK // 结构说明:用于一条检查相关的所有信息,包括病人信息,检查信息,(不包括 访问信息) // 这些信息来源于worklist或者技师手工输入。 // //--------------------------------------------------------------------------------------- typedef struct tagWorkInfo { CString strStudyID; CString strAccessionNum; CString strPatientID; CString strPatientName; CString strOtherPatientID; CString strOtherPatientName; CString strAge; CString strOccupation; CString strSex; CString strMedicalAlert; CString strContrastAllergies; CString strSmokingStatus; CString strPatientComments; CString strPatientHistory; CString strPregnancyStatus; CString strSpecialNeeds; CString strPatientState; CString strAdmissionID; CString strVisitStatus; CString strVisitComments; CString strRefPhysician; CString strStudyInstanceUID; CString strScheduledAETitle; CString strRegSource; CString strStudyStatus; CString strStudyPriority; CString strStudyComments; CString strRequestingPhysician; CString strRequestedProcedureDescription; CString strRequestedContrasAgent; CString strScheduledProcedureStepID; CString strScheduledProcedureStepDescription; CString strRequestedProcedureID; CString strPreMedication; CString strProcedureCode; CString strProcedureCodeValue; CString strProcedureCodeMeaning; CString strMPPSInstanceUID; CString strMPPSStatus; CString strModality; CString strOperatorName; // 技师名字 COleDateTime dtDob; COleDateTime dtLastMenstrualDate; COleDateTime dtAdmittingTime; COleDateTime dtVisitDate; COleDateTime dtScheduledStartDateTime; COleDateTime dtStudyStartDateTime; COleDateTime dtStudyCompletionDateTime; CString strReserve1; CString strReserve2; CString strReserve3; tagWorkInfo& operator =(const tagWorkInfo &work) { strStudyID.Format("%s", work.strStudyID); strAccessionNum.Format("%s", work.strAccessionNum); strPatientID.Format("%s", work.strPatientID); strPatientName.Format("%s", work.strPatientName); strOtherPatientID.Format("%s", work.strOtherPatientID); strOtherPatientName.Format("%s", work.strOtherPatientName); strAge.Format("%s", work.strAge); strOccupation.Format("%s", work.strOccupation); strSex.Format("%s", work.strSex); strMedicalAlert.Format("%s", work.strMedicalAlert); strContrastAllergies.Format("%s", work.strContrastAllergies); strSmokingStatus.Format("%s", work.strSmokingStatus); strPatientComments.Format("%s", work.strPatientComments); strPatientHistory.Format("%s", work.strPatientHistory); strPregnancyStatus.Format("%s", work.strPregnancyStatus); strSpecialNeeds.Format("%s", work.strSpecialNeeds); strPatientState.Format("%s", work.strPatientState); strAdmissionID.Format("%s", work.strAdmissionID); strVisitStatus.Format("%s", work.strVisitStatus); strVisitComments.Format("%s", work.strVisitComments); strRefPhysician.Format("%s", work.strRefPhysician); strStudyInstanceUID.Format("%s", work.strStudyInstanceUID); strScheduledAETitle.Format("%s", work.strScheduledAETitle); strRegSource.Format("%s", work.strRegSource); strStudyStatus.Format("%s", work.strStudyStatus); strStudyPriority.Format("%s", work.strStudyPriority); strStudyComments.Format("%s", work.strStudyComments); strRequestingPhysician.Format("%s", work.strRequestingPhysician); strRequestedProcedureDescription.Format("%s", work.strRequestedProcedureDescription); strRequestedContrasAgent.Format("%s", work.strRequestedContrasAgent); strScheduledProcedureStepID.Format("%s", work.strScheduledProcedureStepID); strScheduledProcedureStepDescription.Format("%s", work.strScheduledProcedureStepDescription); strRequestedProcedureID.Format("%s", work.strRequestedProcedureID); strPreMedication.Format("%s", work.strPreMedication); strProcedureCode.Format("%s", work.strProcedureCode); strProcedureCodeValue.Format("%s", work.strProcedureCodeValue); strProcedureCodeMeaning.Format("%s", work.strProcedureCodeMeaning); strMPPSInstanceUID.Format("%s", work.strMPPSInstanceUID); strMPPSStatus.Format("%s", work.strMPPSStatus); strModality.Format("%s", work.strModality); strOperatorName.Format("%s", work.strOperatorName); dtDob = work.dtDob; dtLastMenstrualDate = work.dtLastMenstrualDate; dtAdmittingTime = work.dtAdmittingTime; dtVisitDate = work.dtVisitDate; dtScheduledStartDateTime = work.dtScheduledStartDateTime; dtStudyStartDateTime = work.dtStudyStartDateTime; dtStudyCompletionDateTime = work.dtStudyCompletionDateTime; strReserve1.Format("%s", work.strReserve1); strReserve2.Format("%s", work.strReserve2); strReserve3.Format("%s", work.strReserve3); return *this; } }ECOM_WORK; typedef struct tagWorkInfoEX { int nStudyIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nAccessionNumProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPatientIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPatientNameProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nOtherPatientIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nOtherPatientNameProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nAgeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nOccupationProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nSexProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nMedicalAlertProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nContrastAllergiesProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nSmokingStatusProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPatientCommentsProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPatientHistoryProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPregnancyStatusProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nSpecialNeedsProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPatientStateProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nAdmissionIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nVisitStatusProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nVisitCommentsProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRefPhysicianProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyInstanceUIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledAETitleProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRegSourceProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyStatusProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyPriorityProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyCommentsProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRequestingPhysicianProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedProcedureDescriptionProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedContrasAgentProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledProcedureStepIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledProcedureStepDescriptionProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nRequestedProcedureIDProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nPreMedicationProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeValueProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nProcedureCodeMeaningProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nMPPSInstanceUIDProperty; //属性 0:可不添, 1:必填, -1:内容不正确 int nMPPSStatusProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nModalityProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nOperatorNameProperty; // 属性 0:可不添, 1:必填, -1:内容不正确 int nDobProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nLastMenstrualDateProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nAdmittingTimeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nVisitDateProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nScheduledStartDateTimeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyStartDateTimeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 int nStudyCompletionDateTimeProperty;//属性 0:可不添, 1:必填, -1:内容不正确 ECOM_WORK Work; }ECOM_WORKEX; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_SERIESIMAGE // 结构说明:用于study对应的series和image信息,这些信息由程序根据检查生成。 // //--------------------------------------------------------------------------------------- typedef struct tagSeriesImageInfo { CString strStudyID; // Study内部标示 CString strSeriesInstanceUID; // CString strViewID; // CString strPrimarySopUID; // 原始图文件uid CString strSecondarySopUID; // 处理后文件uid CString strImageSendStatus; // CString strImagePrintStatus; // CString strImageComments; CString strReserve1; // CString strReserve2; // CString strReserve3; // CString strReserve4; // CString strReserve5; // COleDateTime dtSeriesStartDateTime; // Series开始日期时间 COleDateTime dtSeriesCompletionDateTime; // Series结束日期时间 COleDateTime dtImageAcqDateTime; // 获取图像的时期时间 tagSeriesImageInfo& operator =(const tagSeriesImageInfo &SeriesImage) { strStudyID.Format("%s", SeriesImage.strStudyID); strSeriesInstanceUID.Format("%s", SeriesImage.strSeriesInstanceUID); strViewID.Format("%s", SeriesImage.strViewID); strPrimarySopUID.Format("%s", SeriesImage.strPrimarySopUID); strSecondarySopUID.Format("%s", SeriesImage.strSecondarySopUID); strImageSendStatus.Format("%s", SeriesImage.strImageSendStatus); strImagePrintStatus.Format("%s", SeriesImage.strImagePrintStatus); strImageComments.Format("%s", SeriesImage.strImageComments); strReserve1.Format("%s", SeriesImage.strReserve1); strReserve2.Format("%s", SeriesImage.strReserve2); strReserve3.Format("%s", SeriesImage.strReserve3); strReserve4.Format("%s", SeriesImage.strReserve4); strReserve5.Format("%s", SeriesImage.strReserve5); dtSeriesStartDateTime = SeriesImage.dtSeriesStartDateTime; dtSeriesCompletionDateTime = SeriesImage.dtSeriesCompletionDateTime; dtImageAcqDateTime = SeriesImage.dtImageAcqDateTime; return *this; } }ECOM_SERIES_IMAGE; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_USER // 结构说明:用于根据用户信息和时间统计出来的工作信息。 // //--------------------------------------------------------------------------------------- typedef struct tagUserInfo { CString strUserID; // 用户编号(缩写),这个编号会和标记一起加入到图像中 CString strUserName; // 用户姓名 CString strPassword; // 密码 CString strUserLevel; // 用户权限 CString strDefaultUser; // default user CString strReserve1; CString strReserve2; tagUserInfo& operator =(const tagUserInfo &UserInfo) { strUserID.Format("%s", UserInfo.strUserID); strUserName.Format("%s", UserInfo.strUserName); strPassword.Format("%s", UserInfo.strPassword); strUserLevel.Format("%s", UserInfo.strUserLevel); strDefaultUser.Format("%s", UserInfo.strDefaultUser); strReserve1.Format("%s", UserInfo.strReserve1); strReserve2.Format("%s", UserInfo.strReserve2); return *this; } }ECOM_USER; typedef struct tagUserInfoEx { int nUserIDProperty; // 用户编号(缩写),这个编号会和标记一起加入到图像中属性 0:可不添, 1:必填, -1:内容不正确 int nUserNameProperty; // 用户姓名属性 0:可不添, 1:必填, -1:内容不正确 int nPasswordProperty; // 密码属性 0:可不添, 1:必填, -1:内容不正确 int nUserLevelProperty; // 用户权限属性 0:可不添, 1:必填, -1:内容不正确 ECOM_USER User; }ECOM_USEREX; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_STATISTIC // 结构说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagStatisticInfo { CString strUserID; // 用户编号(缩写),这个编号会和标记一起加入到图像中 int nPatientCount; // 完成病人的个数 int nAcceptedImageCount; // 接受的图像的个数 int nRejectedImageCount; // 拒绝图像的个数 COleDateTime dtStatisticDate; tagStatisticInfo& operator =(const tagStatisticInfo &StatisInfo) { strUserID.Format("%s", StatisInfo.strUserID); nPatientCount = StatisInfo.nPatientCount; nAcceptedImageCount = StatisInfo.nAcceptedImageCount; dtStatisticDate = StatisInfo.dtStatisticDate; return *this; } }ECOM_STATISTIC; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_STATISTIC_CRITERIA // 结构说明:用来构造查询 统计 信息的条件。 // //--------------------------------------------------------------------------------------- typedef struct tagStatisticCriteria { CString strUserID; COleDateTime dtStatisticStartTime; COleDateTime dtStatisticEndTime; tagStatisticCriteria& operator =(const tagStatisticCriteria &StatisticCriteria) { strUserID.Format("%s", StatisticCriteria.strUserID); dtStatisticStartTime = StatisticCriteria.dtStatisticStartTime; dtStatisticEndTime = StatisticCriteria.dtStatisticEndTime; return *this; } }ECOM_STATISTIC_CRITERIA; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_REJECTIMG_INFO // 结构说明:用来保存被拒绝的图像信息。 // //--------------------------------------------------------------------------------------- typedef struct tagRejectImgInfo { CString strImagePrimarySopUID; // uid,唯一的标识一幅图像 CString strRejectReason; // 拒绝的原因 CString strProcedureCodeValue; //检查协议码 CString strProcedureCodeDesc; //检查协议说明 CString strViewID; //检查体位码 CString strViewDesc; //检查体位说明 CString strBodyPart; //检查部位说明 CString strUserID; //技师ID COleDateTime dtImageDateTime; //图像生成时间 tagRejectImgInfo& operator =(const tagRejectImgInfo &RejectImgInfo) { strImagePrimarySopUID.Format("%s", RejectImgInfo.strImagePrimarySopUID); strRejectReason.Format("%s", RejectImgInfo.strRejectReason); strProcedureCodeValue.Format("%s", RejectImgInfo.strProcedureCodeValue); strProcedureCodeDesc.Format("%s", RejectImgInfo.strProcedureCodeDesc); strViewID.Format("%s", RejectImgInfo.strViewID); strViewDesc.Format("%s", RejectImgInfo.strViewDesc); strBodyPart.Format("%s", RejectImgInfo.strBodyPart); strUserID.Format("%s", RejectImgInfo.strUserID); dtImageDateTime = RejectImgInfo.dtImageDateTime; return *this; } }ECOM_REJECTIMG_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_INFO // 结构说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagImgInfo { int nWidth; // 影像宽 int nHeight; // 影像高 int nBits; // 影像大小(总数据位) WORD *pwData; // 影像数据结构头指针 }ECOM_IMAGE_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_NEW_IMAGE_INFO // 结构说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagNewImgInfo { int nWidth; // 影像宽 int nHeight; // 影像高 int nBits; // 影像大小(总数据位) CString strImageIndex; // CString strHeader; // 图像头 WORD *pwData; // 影像数据结构头指针 }ECOM_NEW_IMAGE_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_CALIB_INFO // 结构说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagCaliInfo { int nPanelIndex; int nCalibrationIndex; char *strDetectorType; }ECOM_CALIB_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_ICON_INFO // 结构说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagIconInfo { int nWidth; // 影像宽 int nHeight; // 影像高 CString strSOPUID; // UID BYTE *pData; // 影像数据结构头指针 tagIconInfo& operator =(const tagIconInfo &IconInfo) { nWidth = IconInfo.nWidth; nHeight = IconInfo.nHeight; strSOPUID.Format("%s", IconInfo.strSOPUID); pData = IconInfo.pData; //if(pData) delete [] pData; //if(IconInfo.pData) //{ // pData = new BYTE [nWidth*nHeight]; // memcpy(pData, IconInfo.pData, nWidth*nHeight*sizeof(BYTE)); //} //else //{ // pData = NULL; //} return *this; } }ECOM_ICON_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PANEL_INFO // 说明说明:用来保存图像数据。 // //--------------------------------------------------------------------------------------- typedef struct tagPanelInfo { int nColumn; // 影像宽 int nRow; // 影像高 int nBits; // 影像大小(总数据位) float fDetectorTemprature; float fDetectorElementPhysicalSize; float fDetectorElementSpacing; CString strDetectorType; CString strDetectorID; CString strDetectorBinning; COleDateTime dtLastCalibrationDateTime; tagPanelInfo& operator =(const tagPanelInfo &PanelInfo) { nColumn = PanelInfo.nColumn; nRow = PanelInfo.nRow; nBits = PanelInfo.nBits; fDetectorTemprature = PanelInfo.fDetectorTemprature; fDetectorElementPhysicalSize = PanelInfo.fDetectorElementPhysicalSize; fDetectorElementSpacing = PanelInfo.fDetectorElementSpacing; strDetectorType.Format("%s", PanelInfo.strDetectorType); strDetectorID.Format("%s", PanelInfo.strDetectorID); strDetectorBinning.Format("%s", PanelInfo.strDetectorBinning); dtLastCalibrationDateTime = PanelInfo.dtLastCalibrationDateTime; return *this; } }ECOM_PANEL_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_NETWORK_NODE // 结构说明:用来保存网络中各个服务器结点的基本信息: // 如:网络实体名、IP地址、端口号、设备名、描述等信息。 // //--------------------------------------------------------------------------------------- typedef struct tagNetworkNode { CString strHostName; CString strHostIP; CString strHostPort; CString strAETitle; CString strDescription; CString strState; tagNetworkNode& operator =(const tagNetworkNode &NetWorkNode) { strHostName.Format("%s", NetWorkNode.strHostName); strHostIP.Format("%s", NetWorkNode.strHostIP); strHostPort.Format("%s", NetWorkNode.strHostPort); strAETitle.Format("%s", NetWorkNode.strAETitle); strDescription.Format("%s", NetWorkNode.strDescription); strState.Format("%s", NetWorkNode.strState); return *this; } }ECOM_NETWORK_NODE; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_NETWORK_NODE // 结构说明:用来保存网络中各个服务器结点的基本信息: // 如:网络实体名、IP地址、端口号、设备名、描述等信息。 // //--------------------------------------------------------------------------------------- typedef struct tagPACSEntity : public ECOM_NETWORK_NODE { CString strModality; CString strDefault; tagPACSEntity& operator =(const tagPACSEntity &PACSEntity) { strModality.Format("%s", PACSEntity.strModality); strDefault.Format("%s", PACSEntity.strDefault); return *this; } }ECOM_PACS_ENTITY; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_WORKLIST_CONFIGURE // 结构说明:用来配置 worklist 中的数据信息。 // //--------------------------------------------------------------------------------------- typedef struct tagWorklistInfo { UINT16 unGroup; UINT16 unElement; UINT16 unPGroup; UINT16 unPElement; int nUsed; }ECOM_WORKLIST_CONFIGURE; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_WORKLIST // 结构说明:用来配置 worklist 中的数据信息。, for dataflow, not for UI and worflow // //--------------------------------------------------------------------------------------- typedef struct tagWorklistCriteria { CString strPatientID; CString strPatientName; CString strAccessionNum; COleDateTime dtStartTime; COleDateTime dtEndTime; }ECOM_WORKLIST_CRITERIA; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_WORK_QUERY_CRITERIA // 结构说明:用来构造查询 Work 信息的条件。 // //--------------------------------------------------------------------------------------- typedef struct tagWorkQueryCriteria { CString strPatientID; CString strPatientName; CString strOtherPatientID; CString strOtherPatientName; CString strAccessionNum; CString strStudyID; CString strAdmissionID; // for query by AdmissionID CString strRegSource; CString strStudyState; COleDateTime dtAdmittingStartTime; COleDateTime dtAdmittingEndTime; COleDateTime dtStudyCompletionDateTime; tagWorkQueryCriteria& operator =(const tagWorkQueryCriteria &WorkQueryCriteria) { strPatientID.Format("%s", WorkQueryCriteria.strPatientID); strPatientName.Format("%s", WorkQueryCriteria.strPatientName); strOtherPatientID.Format("%s", WorkQueryCriteria.strOtherPatientID); strOtherPatientName.Format("%s", WorkQueryCriteria.strOtherPatientName); strAccessionNum.Format("%s", WorkQueryCriteria.strAccessionNum); strStudyID.Format("%s", WorkQueryCriteria.strStudyID); strAdmissionID.Format("%s", WorkQueryCriteria.strAdmissionID); strRegSource.Format("%s", WorkQueryCriteria.strRegSource); strStudyState.Format("%s", WorkQueryCriteria.strStudyState); dtAdmittingStartTime = WorkQueryCriteria.dtAdmittingStartTime; dtAdmittingEndTime = WorkQueryCriteria.dtAdmittingEndTime; dtStudyCompletionDateTime = WorkQueryCriteria.dtStudyCompletionDateTime; return *this; } }ECOM_WORK_QUERY_CRITERIA; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_SENDFILEQUEUE_ITEM // 结构说明:用来保存图像发送队列 // //--------------------------------------------------------------------------------------- typedef struct tagSendFileQueueItem { CString strInstanceCreatorUID; CString strPatientID; CString strPatientName; CString strAccessionNumber; CString strSOPInstanceUID; COleDateTime dtImageDateTime; COleDateTime dtQueueScheduleStartDateTime; COleDateTime dtQueueIssueDateTime; COleDateTime dtQueueCompleteDateTime; CString strQueuePriority; CString strQueueStatus; CString strRemoteAETitle ; CString strRetryTimes ; tagSendFileQueueItem& operator =(const tagSendFileQueueItem &SendFileQueueItem) { strInstanceCreatorUID.Format("%s", SendFileQueueItem.strInstanceCreatorUID); strPatientID.Format("%s", SendFileQueueItem.strPatientID); strPatientName.Format("%s", SendFileQueueItem.strPatientName); strAccessionNumber.Format("%s", SendFileQueueItem.strAccessionNumber); strSOPInstanceUID.Format("%s", SendFileQueueItem.strSOPInstanceUID); strQueuePriority.Format("%s", SendFileQueueItem.strQueuePriority); strQueueStatus.Format("%s", SendFileQueueItem.strQueueStatus); strRemoteAETitle.Format("%s", SendFileQueueItem.strRemoteAETitle); strRetryTimes.Format("%s", SendFileQueueItem.strRetryTimes); dtImageDateTime = SendFileQueueItem.dtImageDateTime; dtQueueIssueDateTime = SendFileQueueItem.dtQueueIssueDateTime; dtQueueIssueDateTime = SendFileQueueItem.dtQueueIssueDateTime; dtQueueCompleteDateTime = SendFileQueueItem.dtQueueCompleteDateTime; return *this; } }ECOM_SENDFILE_QUEUE_ITEM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PRINTQUEUE_ITEM // 结构说明:用来保存图像发送队列 // //--------------------------------------------------------------------------------------- typedef struct tagPrintQueueItem { CString strReferencedSOPInstanceUID; CString strPatientID; CString strPatientName; CString strAccessionNumber; CString strBodyPartExamined; COleDateTime dtQueueScheduleStartDateTime; COleDateTime dtQueueScheduleEndDateTime; COleDateTime dtQueueIssueDateTime; COleDateTime dtQueueCompleteDateTime; CString strQueuePriority; CString strQueueStatus; CString strRemoteAETitle ; CString strRetryTimes ; tagPrintQueueItem& operator =(const tagPrintQueueItem &PrintQueueItem) { strReferencedSOPInstanceUID.Format("%s", PrintQueueItem.strReferencedSOPInstanceUID); strPatientID.Format("%s", PrintQueueItem.strPatientID); strPatientName.Format("%s", PrintQueueItem.strPatientName); strAccessionNumber.Format("%s", PrintQueueItem.strAccessionNumber); strBodyPartExamined.Format("%s", PrintQueueItem.strBodyPartExamined); strQueuePriority.Format("%s", PrintQueueItem.strQueuePriority); strQueueStatus.Format("%s", PrintQueueItem.strQueueStatus); strRemoteAETitle.Format("%s", PrintQueueItem.strRemoteAETitle); strRetryTimes.Format("%s", PrintQueueItem.strRetryTimes); dtQueueScheduleStartDateTime = PrintQueueItem.dtQueueScheduleStartDateTime; dtQueueScheduleEndDateTime = PrintQueueItem.dtQueueScheduleEndDateTime; dtQueueIssueDateTime = PrintQueueItem.dtQueueIssueDateTime; dtQueueCompleteDateTime = PrintQueueItem.dtQueueCompleteDateTime; return *this; } }ECOM_PRINT_QUEUE_ITEM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PROCEDURE // 结构说明:读取系统 Protocol 中的 Procedure 信息。 // //--------------------------------------------------------------------------------------- typedef struct tagProtocolProcedure { CString strProcedureCode; CString strProcedureName; CString strProcedureFastName; //new added, for fast input/search procedure CString strProcedureDescription; //for local language CString strBodyPart; CString strBodyPartDescription; //new added, for local language CString strOftenUsed; CString strTrueSize; CString strFilmOrientation; CString strFilmSize; CString strPrintFormat; //code begin 20091105 CString strStitchingPID; CString strStitchingOverlap; CString strStitchingDirection; CString strStitchingType; CString strStitchingLength; CString strInitialPosition; //code end 20091105 vector vectorChildView; tagProtocolProcedure& operator =(const tagProtocolProcedure &ProtocolProcedure) { strProcedureCode.Format("%s", ProtocolProcedure.strProcedureCode); strProcedureName.Format("%s", ProtocolProcedure.strProcedureName); strProcedureFastName.Format("%s", ProtocolProcedure.strProcedureFastName); strProcedureDescription.Format("%s", ProtocolProcedure.strProcedureDescription); strBodyPart.Format("%s", ProtocolProcedure.strBodyPart); strBodyPartDescription.Format("%s", ProtocolProcedure.strBodyPartDescription); strTrueSize.Format("%s", ProtocolProcedure.strTrueSize); strOftenUsed.Format("%s", ProtocolProcedure.strOftenUsed); strFilmOrientation.Format("%s", ProtocolProcedure.strFilmOrientation); strFilmSize.Format("%s", ProtocolProcedure.strFilmSize); strPrintFormat.Format("%s", ProtocolProcedure.strPrintFormat); //code begin 20091105 strStitchingLength.Format("%s", ProtocolProcedure.strStitchingLength);; strStitchingPID.Format("%s", ProtocolProcedure.strStitchingPID); strStitchingOverlap.Format("%s", ProtocolProcedure.strStitchingOverlap); strStitchingDirection.Format("%s", ProtocolProcedure.strStitchingDirection); strStitchingType.Format("%s", ProtocolProcedure.strStitchingType); strInitialPosition.Format("%s", ProtocolProcedure.strInitialPosition); //code end 20091105 vectorChildView = ProtocolProcedure.vectorChildView; return *this; } }ECOM_PROTOCOL_PROCEDURE; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_VIEW // 结构说明:读取系统 Protocol 中的 View 信息。 // //--------------------------------------------------------------------------------------- typedef struct tagProtocolView { CString strViewID; CString strViewDescription; CString strAnatomicRegion; CString strBodyPartExamined; CString strOrientation; CString strViewPosition; CString strPatientOrientationRow; CString strPatientOrientationColumn; CString strImageLaterality; CString strImageRotate; CString strCollimatorSize; CString strImageProcess; CString strImageHorizontalFlip; CString strLabelStyle; CString strLabelPosition; CString strViewIconName; CString strViewBigIconName; CString strStandPos; CString strFilter; tagProtocolView& operator =(const tagProtocolView &ProtocolView) { strViewID.Format("%s", ProtocolView.strViewID); strViewDescription.Format("%s", ProtocolView.strViewDescription); strAnatomicRegion.Format("%s", ProtocolView.strAnatomicRegion); strBodyPartExamined.Format("%s", ProtocolView.strBodyPartExamined); strOrientation.Format("%s", ProtocolView.strOrientation); strViewPosition.Format("%s", ProtocolView.strViewPosition); strPatientOrientationRow.Format("%s", ProtocolView.strPatientOrientationRow); strPatientOrientationColumn.Format("%s", ProtocolView.strPatientOrientationColumn); strImageLaterality.Format("%s", ProtocolView.strImageLaterality); strImageRotate.Format("%s", ProtocolView.strImageRotate); strCollimatorSize.Format("%s", ProtocolView.strCollimatorSize); strImageProcess.Format("%s", ProtocolView.strImageProcess); strImageHorizontalFlip.Format("%s", ProtocolView.strImageHorizontalFlip); strLabelStyle.Format("%s", ProtocolView.strLabelStyle); strLabelPosition.Format("%s", ProtocolView.strLabelPosition); strViewIconName.Format("%s", ProtocolView.strViewIconName); strViewBigIconName.Format("%s", ProtocolView.strViewBigIconName); strStandPos.Format("%s", ProtocolView.strStandPos); strFilter.Format("%s", ProtocolView.strFilter); return *this; } }ECOM_PROTOCOL_VIEW; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_EXPOSURE_PARAM // 结构说明:保存技术参数文档中,一条具体的 Tech 结点下的所有参数。 // //--------------------------------------------------------------------------------------- typedef struct tagExposureParam { int nKVP; int nFKVP; int nSID; int nGridSpeed; float fmA; float fmS; float fFMA; CString strBodySize; CString strGrid; tagExposureParam& operator =(const tagExposureParam &ExposureParam) { strBodySize.Format("%s", ExposureParam.strBodySize); strGrid.Format("%s", ExposureParam.strGrid); nKVP = ExposureParam.nKVP; nFKVP = ExposureParam.nFKVP; nSID = ExposureParam.nSID; nGridSpeed = ExposureParam.nGridSpeed; fmA = ExposureParam.fmA; fmS = ExposureParam.fmS; fFMA = ExposureParam.fFMA; return *this; } }ECOM_EXPOSURE_PARAM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_ORIENTATION_PARAM // 结构说明:保存技术参数文档中,一条具体的 Orientation 结点下的所有参数。 // //--------------------------------------------------------------------------------------- typedef struct tagOrientationParam { int nExposureStyle; int nAECDensity; int nFocalSpot; int nWorkStation; CString strAECField; CString strOrientation; vector ExposureParam; public: ECOM_EXPOSURE_PARAM operator [](const CString &strBodySize) { for (int i = 0; i < static_cast(ExposureParam.size()); ++i) { if (ExposureParam[i].strBodySize == strBodySize) { return ExposureParam[i]; } } ECOM_EXPOSURE_PARAM ExposureParamTemp; return ExposureParamTemp; } }ECOM_ORIENTATION_PARAM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_BODYPART_EXAMINED // 结构说明:保存技术参数文档中,一条具体的 BodyPartExamined 结点下的所有参数。 // //--------------------------------------------------------------------------------------- typedef struct tagBodyPartExamined { CString strBodyPartExamined; vector OrientationParam; public: ECOM_ORIENTATION_PARAM operator [](const CString &strOrientation) { for (int i = 0; i < static_cast(OrientationParam.size()); ++i) { if (OrientationParam[i].strOrientation == strOrientation) { return OrientationParam[i]; } } ECOM_ORIENTATION_PARAM OrientationTemp; return OrientationTemp; } }ECOM_BODYPART_EXAMINED; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_TECHNICAL_PARAM // 结构说明:提供一个 vector,使程序可以采用下标操作读取参数。 // //--------------------------------------------------------------------------------------- typedef struct tagTechnical { vector Tech; public: ECOM_BODYPART_EXAMINED operator [](const CString &strBodyPartExamined) { for (int i = 0; i < static_cast(Tech.size()); ++i) { if (Tech[i].strBodyPartExamined == strBodyPartExamined) { return Tech[i]; } } ECOM_BODYPART_EXAMINED BodyPartTemp; return BodyPartTemp; } }ECOM_TECHNICAL_PARAM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_GENERATOR_TECH // 结构说明:提供一个结构,用来保存当前高压发生器的技术参数 // //--------------------------------------------------------------------------------------- typedef struct tagGeneratorTech { int nExposureStyle; int nAECDensity; int nFocalSpot; int nWorkStation; CString strAECField; tagGeneratorTech& operator =(const tagGeneratorTech &GeneratorTech) { strAECField.Format("%s", GeneratorTech.strAECField); nExposureStyle = GeneratorTech.nExposureStyle; nAECDensity = GeneratorTech.nAECDensity; nFocalSpot = GeneratorTech.nFocalSpot; nWorkStation = GeneratorTech.nWorkStation; return *this; } ECOM_EXPOSURE_PARAM ExposureParam; }ECOM_GENERATOR_TECH; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGEPROCESSPARA_SYMPHONY // 结构说明:用来保存一个Symphony参数的结构 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamSymphony { int nContrast; int nDetail; int nLatitude; int nNoiseMode; }ECOM_IMAGE_PROCESS_PARAM_SYMPHONY; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_ESA // 结构说明:用来保存一个ESA参数的结构 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamESA { int nCurveType; int nLShift; int nRShift; }ECOM_IMAGE_PROCESS_PARAM_ESA; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_ROTATE // 结构说明:用来保存图像旋转,翻转参数的结构 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamRotate { int nFlip; // 0,1 int nRotate; // 0,90,180,270 }ECOM_IMAGE_PROCESS_PARAM_ROTATE; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_MASK // 结构说明:用来保存图像加入蒙板的结构,共四个点,为四边形 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamMask { CPoint point[4]; }ECOM_IMAGE_PROCESS_PARAM_MASK; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_CLIP // 结构说明:用来保存图像裁剪参数的结构,为矩形 // //--------------------------------------------------------------------------------------- typedef CRect ECOM_IMAGE_PROCESS_PARAM_CLIP; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_MARK // 结构说明:用来保存图像标记,共可加入四个标记,CPoint为标记左上方点 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamMark { CPoint point1; CString strMark1; //L,R,PA,PA,... CString strName1; CPoint point2; CString strMark2; //L,R,PA,PA,... CString strName2; CPoint point3; CString strMark3; //L,R,PA,PA,... CString strName3; CPoint point4; CString strMark4; //L,R,PA,PA,... CString strName4; tagImageProcessParamMark& operator =(const tagImageProcessParamMark &ImageProcessParamMark) { point1 = ImageProcessParamMark.point1; strMark1.Format("%s", ImageProcessParamMark.strMark1); strName1.Format("%s", ImageProcessParamMark.strName1); point2 = ImageProcessParamMark.point2; strMark2.Format("%s", ImageProcessParamMark.strMark2); strName2.Format("%s", ImageProcessParamMark.strName2); point3 = ImageProcessParamMark.point3; strMark3.Format("%s", ImageProcessParamMark.strMark3); strName3.Format("%s", ImageProcessParamMark.strName3); point4 = ImageProcessParamMark.point4; strMark4.Format("%s", ImageProcessParamMark.strMark4); strName4.Format("%s", ImageProcessParamMark.strName4); return *this; } }ECOM_IMAGE_PROCESS_PARAM_MARK; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM_LUT // 结构说明:用来保存图像显示映射查找表 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParamLut { int nLutLength; WORD *pwLutData; }ECOM_IMAGE_PROCESS_PARAM_LUT; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_IMAGE_PROCESS_PARAM // 结构说明:用来保存图像调整的参数 // //--------------------------------------------------------------------------------------- typedef struct tagImageProcessParam { int nProcesstype; //new added, indicated the way to process image, 0: Esa, 1: Symphony ECOM_IMAGE_PROCESS_PARAM_SYMPHONY Symphony; //new added ECOM_IMAGE_PROCESS_PARAM_ESA Esa; //new added ECOM_IMAGE_PROCESS_PARAM_ROTATE Rotate; ECOM_IMAGE_PROCESS_PARAM_MASK Mask; ECOM_IMAGE_PROCESS_PARAM_CLIP Clip; ECOM_IMAGE_PROCESS_PARAM_MARK Mark; ECOM_IMAGE_PROCESS_PARAM_LUT Lut; }ECOM_IMAGE_PROCESS_PARAM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PRINT_FILM // 结构说明:用来保存一个胶片内容和格式的结构 // //--------------------------------------------------------------------------------------- typedef struct tagPrintFilm { CString strFilmOrientation; CString strFilmSize; CString strPrintFormat; vector seriesimages; tagPrintFilm& operator =(const tagPrintFilm &PrintFilm) { strFilmOrientation.Format("%s", PrintFilm.strFilmOrientation); strFilmSize.Format("%s", PrintFilm.strFilmSize); strPrintFormat.Format("%s", PrintFilm.strPrintFormat); seriesimages = PrintFilm.seriesimages; return *this; } }ECOM_PRINT_FILM; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_FILM_TAG // 结构说明:用来保存一个胶片打印标记信息. // //--------------------------------------------------------------------------------------- typedef struct tagFilmTag { UINT16 unGroup; UINT16 unElement; CString strDescription; CString strPrefix; CString strPostfix; CString strFormat; CString strPosition; CString strLine; tagFilmTag& operator =(const tagFilmTag &FilmTag) { strDescription.Format("%s", FilmTag.strDescription); strPrefix.Format("%s", FilmTag.strPrefix); strPostfix.Format("%s", FilmTag.strPostfix); strFormat.Format("%s", FilmTag.strFormat); strPosition.Format("%s", FilmTag.strPosition); strLine.Format("%s", FilmTag.strLine); unGroup = FilmTag.unGroup; unElement = FilmTag.unElement; return *this; } }ECOM_FILM_TAG; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_PROCEDURE_VIEW // 结构说明:用来保存 界面与 WorkFlow 交互时传递的 Porcedure and View 信息. // //--------------------------------------------------------------------------------------- typedef struct tagProcedureView { //Station CString strStationName; CString strInstitutionName; // Procedure CString strProcedureCode; CString strProcedureName; CString strProcedureFastName; //new added, for fast input/search procedure CString strProcedureDescription; //for local language CString strBodyPart; CString strBodyPartDescription; //new added, for local language CString strOftenUsed; CString strTrueSize; CString strFilmOrientation; CString strFilmSize; CString strPrintFormat; //code begin 20091105 CString strStitchingLength; CString strStitchingPID; CString strStitchingOverlap; CString strStitchingDirection; CString strStitchingType; CString strInitialPosition; //code end 20091105 // View CString strViewID; CString strSOPInstanceUID; //newadded, for identification CString strImageID; //newadded, for identification CString strViewDescription; CString strAnatomicRegion; CString strBodyPartExamined; CString strOrientation; CString strViewPosition; CString strPatientOrientationRow; CString strPatientOrientationColumn; CString strImageLaterality; CString strImageRotate; CString strCollimatorSize; CString strImageProcess; CString strImageHorizontalFlip; CString strLabelStyle; CString strLabelPosition; CString strViewIconName; CString strViewBigIconName; CString strStandPos; CString strFilter; //code begin 20150616 CString strViewSeriesInstanceUID; //seriesInstanceUID(对应每个view) CString strViewStatus; //view 是新的view还是拒绝后重新copy出来的; 0:新的view;1:拒绝后重新copy出来的 CString strViewGridType; //Grid type: 0 表示没有; 其他则对应具体grid定义 CString strViewAPRStatus; //当前view的曝光状态,0 表示没有曝光; 1 表示曝光成功; 2:曝光拒绝 //code end 20150616 tagProcedureView& operator =(const tagProcedureView &procedureview) { //CString::CopyChars(strPatientID, patient.strPatientID, patient.strPatientID.GetLength()); strStationName.Format("%s", procedureview.strStationName); strInstitutionName.Format("%s", procedureview.strInstitutionName); strProcedureCode.Format("%s", procedureview.strProcedureCode); strProcedureName.Format("%s", procedureview.strProcedureName); strProcedureFastName.Format("%s", procedureview.strProcedureFastName); strProcedureDescription.Format("%s", procedureview.strProcedureDescription); strBodyPart.Format("%s", procedureview.strBodyPart); strBodyPartDescription.Format("%s", procedureview.strBodyPartDescription); strOftenUsed.Format("%s", procedureview.strOftenUsed); strTrueSize.Format("%s", procedureview.strTrueSize); strFilmOrientation.Format("%s", procedureview.strFilmOrientation); strFilmSize.Format("%s", procedureview.strFilmSize); strPrintFormat.Format("%s", procedureview.strPrintFormat); strViewID.Format("%s", procedureview.strViewID); strSOPInstanceUID.Format("%s", procedureview.strSOPInstanceUID); strImageID.Format("%s", procedureview.strImageID); strViewDescription.Format("%s", procedureview.strViewDescription); strAnatomicRegion.Format("%s", procedureview.strAnatomicRegion); strBodyPartExamined.Format("%s", procedureview.strBodyPartExamined); strOrientation.Format("%s", procedureview.strOrientation); strViewPosition.Format("%s", procedureview.strViewPosition); strPatientOrientationRow.Format("%s", procedureview.strPatientOrientationRow); strPatientOrientationColumn.Format("%s", procedureview.strPatientOrientationColumn); strImageLaterality.Format("%s", procedureview.strImageLaterality); strImageRotate.Format("%s", procedureview.strImageRotate); strCollimatorSize.Format("%s", procedureview.strCollimatorSize); strImageProcess.Format("%s", procedureview.strImageProcess); strImageHorizontalFlip.Format("%s", procedureview.strImageHorizontalFlip); strLabelStyle.Format("%s", procedureview.strLabelStyle); strLabelPosition.Format("%s", procedureview.strLabelPosition); strViewIconName.Format("%s", procedureview.strViewIconName); strViewBigIconName.Format("%s", procedureview.strViewBigIconName); strStandPos.Format("%s", procedureview.strStandPos); strFilter.Format("%s", procedureview.strFilter); //code begin 20091105 strStitchingLength.Format("%s", procedureview.strStitchingLength); strStitchingPID.Format("%s", procedureview.strStitchingPID); strStitchingOverlap.Format("%s", procedureview.strStitchingOverlap); strStitchingDirection.Format("%s", procedureview.strStitchingDirection); strStitchingType.Format("%s", procedureview.strStitchingType); strInitialPosition.Format("%s", procedureview.strInitialPosition); //code end 20091105 strViewSeriesInstanceUID.Format("%s", procedureview.strViewSeriesInstanceUID); strViewStatus.Format("%s", procedureview.strViewStatus); strViewGridType.Format("%s", procedureview.strViewGridType); strViewAPRStatus.Format("%s", procedureview.strViewAPRStatus); return *this; } }ECOM_PROCEDURE_VIEW; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_CURRENT_TECHNICAL // 结构说明:用来保存 界面与 WorkFlow 交互时传递的 当前所有的技术参数 信息. // //--------------------------------------------------------------------------------------- typedef struct tagTechnicalParam { // BodyPartExamined CString strBodyPartExamined; // Orientation int nExposureStyle; int nAECDensity; int nFocalSpot; int nWorkStation; CString strAECField; CString strOrientation; // BodySize int nKVP; int nFKVP; int nSID; int nGridSpeed; float fmA; float fmS; float fFMA; CString strBodySize; CString strGrid; //code begin 20091104 int nOverlap; int nPID; //? int nDirection; int nStitchingType; //code end 20091104 tagTechnicalParam& operator =(const tagTechnicalParam &TechnicalParam) { strBodyPartExamined.Format("%s", TechnicalParam.strBodyPartExamined); nExposureStyle = TechnicalParam.nExposureStyle; nAECDensity = TechnicalParam.nAECDensity; nFocalSpot = TechnicalParam.nFocalSpot; nWorkStation = TechnicalParam.nWorkStation; strAECField.Format("%s", TechnicalParam.strAECField); strOrientation.Format("%s", TechnicalParam.strOrientation); nKVP = TechnicalParam.nKVP; nFKVP = TechnicalParam.nFKVP; nSID = TechnicalParam.nSID; nGridSpeed = TechnicalParam.nGridSpeed; fmA = TechnicalParam.fmA; fmS = TechnicalParam.fmS; fFMA = TechnicalParam.fFMA; strBodySize.Format("%s", TechnicalParam.strBodySize); strGrid.Format("%s", TechnicalParam.strGrid); //code begin 20091104 nOverlap = TechnicalParam.nOverlap; nPID = TechnicalParam.nPID; //? nDirection = TechnicalParam.nDirection; nStitchingType = TechnicalParam.nStitchingType; //code end 20091104 return *this; } }ECOM_CURRENT_TECHNICAL; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_COLLIMATOR_INFO // 结构说明:用来保存遮光器的参数信息. // //--------------------------------------------------------------------------------------- typedef struct tagCollimator { float fWidth; //cm float fHeight; //cm /*tagCollimator& operator =(const tagCollimator &Collimator) { fWidth = Collimator.fWidth; fHeight = Collimator.fWidth; return *this; } tagCollimator& operator =(const tagHWCollimator &Collimator) { fWidth = Collimator.nWidth; fHeight = Collimator.nWidth; return *this; }*/ }ECOM_COLLIMATOR_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_COLLIMATOR_ZERO // 结构说明:用来保存遮光器中心在以图像左上角为原点的坐标系中的位置坐标; // 单位:cm. // //--------------------------------------------------------------------------------------- typedef struct tagCollimatorZero { float fWidth; //cm float fHeight; //cm }ECOM_COLLIMATOR_ZERO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_COLLIMATOR_Offset // 结构说明:用来保存遮光器中心在以图像左上角为原点的坐标系中的位置坐标; // 单位:cm. // //--------------------------------------------------------------------------------------- typedef struct tagCollimatorOffset { float fOffsetWidthLeft; //cm float fOffsetWidthRight; //cm float fOffsetHeightUp; //cm float fOffsetHeightDown; //cm }ECOM_COLLIMATOR_OFFSET; //--------------------------------------------------------------------------------------- // 结构名称:ECOM_SOFTWARE_INFO // 结构说明:用来保存软件相关信息. // //--------------------------------------------------------------------------------------- typedef struct tagSoftWareInfo { CString strSoftwareVersion; CString strManufacturerModelName; CString strManufacturer; tagSoftWareInfo& operator =(const tagSoftWareInfo &SoftWareInfo) { strSoftwareVersion.Format("%s", SoftWareInfo.strSoftwareVersion); strManufacturerModelName.Format("%s", SoftWareInfo.strManufacturerModelName); strManufacturer.Format("%s", SoftWareInfo.strManufacturer); return *this; } }ECOM_SOFTWARE_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_AUTO_REGIST_SETTING // 结构说明:用来获取自动注册时的设置。 // //--------------------------------------------------------------------------------------- typedef struct tagAutoRegistSetting { CString strPrefix; vector vectorPrefixs; CString strDirectory; CString strProcedureCodeValue; int nOutPut; int nIndex; tagAutoRegistSetting& operator =(const tagAutoRegistSetting &AutoRegistSetting) { strPrefix.Format("%s", AutoRegistSetting.strPrefix); strDirectory.Format("%s", AutoRegistSetting.strDirectory); strProcedureCodeValue.Format("%s", AutoRegistSetting.strProcedureCodeValue); nOutPut = AutoRegistSetting.nOutPut; nIndex = AutoRegistSetting.nIndex; vectorPrefixs.clear(); for(UINT i = 0; i< AutoRegistSetting.vectorPrefixs.size(); i++) { vectorPrefixs.push_back(AutoRegistSetting.vectorPrefixs[i]); } return *this; } }ECOM_AUTO_REGIST_SETTING; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_HW_COLLIMATOR // 结构说明:用来保存遮光器的参数信息. // //--------------------------------------------------------------------------------------- typedef struct tagHWCollimator { int nWidth; int nHeight; }ECOM_HW_COLLIMATOR; //--------------------------------------------------------------------------------------- // // 结构名称:ECOM_DUAL_ENERGY_INFO // 结构说明:用来保存双能相关信息. // //--------------------------------------------------------------------------------------- typedef struct tagDualEnergyInfo { CString strHighEnergyPath; CString strLowEnergyPath; tagDualEnergyInfo& operator =(const tagDualEnergyInfo &DualEnergyInfo) { strHighEnergyPath.Format("%s", DualEnergyInfo.strHighEnergyPath); strLowEnergyPath.Format("%s", DualEnergyInfo.strLowEnergyPath); return *this; } }ECOM_DUAL_ENERGY_INFO; //--------------------------------------------------------------------------------------- // // 结构名称:HW_MAMMO_THICKNESS_PARAM // 结构说明:乳腺机架的压迫器厚度和力等信息 // //--------------------------------------------------------------------------------------- typedef struct tagHWMammoThicknessParam { int nHeight; int nForce; tagHWMammoThicknessParam& operator =(const tagHWMammoThicknessParam &ThicknessParam) { nHeight = ThicknessParam.nHeight; nForce = ThicknessParam.nForce; } }HW_MAMMO_THICKNESS_PARAM; typedef enum { EM_ERROR = 0, EM_NORMAL, //normal exposure mdoe EM_AEC, //AEC exposure mode EM_AEC_TIME =2, EM_DE, //Dual Energy exposure mode EM_HDR, //HDR exposure mode EM_STITCHING, //Stitching Mode EM_WARMUP, EM_AEC_FILTER, EM_AEC_KV } HW_EXPOSURE_MDOE; //--------------------------------------------------------------------------------------- // 作 者:宋兴亮 // 日 期:2013-09-13 // 结构名称:ECOM_PANEL_UNIQUE_INFO // 说明说明:用来保存探测器特有的信息,目前应用于varian平板 // //--------------------------------------------------------------------------------------- typedef struct tagPanelUniqueInfo { int nColumn; // 影像原始宽 int nRow; // 影像原始高 int nMxPixelValue; // 影像大小(总数据位) int nLinesPerPixel; // 每行包含几个像素 int nColsPerPixel; //每列包含几个像素 CString strPleoraVersion; //Pleora 版本信息 CString strVirtCpVersion; //瓦里安主dll版本信息 CString strPaneloprVersion; //ECOM平板dll版本信息 CString strDetectorType; //瓦里安平板类型 int nReceptorType; // Receptor类型 CString strModeDescription; //当前模式 CString strSysDescription; //瓦里安驱动软件系统信息 tagPanelUniqueInfo& operator =(const tagPanelUniqueInfo &PanelInfo) { nColumn = PanelInfo.nColumn; nRow = PanelInfo.nRow; nMxPixelValue = PanelInfo.nMxPixelValue; nLinesPerPixel = PanelInfo.nLinesPerPixel; // 每行包含几个像素 nColsPerPixel = PanelInfo.nColsPerPixel; strPleoraVersion.Format("%s", PanelInfo.strPleoraVersion); strPaneloprVersion.Format("%s", PanelInfo.strPaneloprVersion); strVirtCpVersion.Format("%s", PanelInfo.strVirtCpVersion); strDetectorType.Format("%s", PanelInfo.strDetectorType); nReceptorType = PanelInfo.nReceptorType; strModeDescription.Format("%s", PanelInfo.strModeDescription); strSysDescription.Format("%s", PanelInfo.strSysDescription); return *this; } }ECOM_PANEL_UNIQUE_INFO; //--------------------------------------------------------------------------------------- // 作 者:郑丽华 // 日 期:2013-10-23 // 枚举名称:ECOM_DYN_CHANNEL_TYPE // 枚举说明:DYN通道类型 //--------------------------------------------------------------------------------------- typedef enum { DYN_DI, DYN_DO, DYN_ALL }ECOM_DYN_CHANNEL_TYPE; //--------------------------------------------------------------------------------------- // 作 者:郑丽华 // 日 期:2013-10-23 // 结构名称:ECOM_DYN_CHANNEL_MAP // 结构说明:DYN通道ID与名称之间的Map信息 //--------------------------------------------------------------------------------------- typedef struct tagECOMDYNChannelMap { CString strVer; CString strChannelName[32]; ECOM_DYN_CHANNEL_TYPE eChanneltype[32]; UCHAR cChannelID[32]; tagECOMDYNChannelMap& operator =(const tagECOMDYNChannelMap &ChannelMap) { strVer = ChannelMap.strVer; for(int i=0;i<32;i++) { strChannelName[i] = ChannelMap.strChannelName[i]; eChanneltype[i] = ChannelMap.eChanneltype[i]; cChannelID[i] = ChannelMap.cChannelID[i]; } return *this; } } ECOM_DYN_CHANNEL_MAP; //--------------------------------------------------------------------------------------- // 作 者:郑丽华 // 日 期:2013-10-23 // 结构名称:ECOM_DYN_IO_CONF // 结构说明:DYN通道设置 //--------------------------------------------------------------------------------------- typedef struct tagECOMDYNIOConfigure { CString strVer; UCHAR unSet1[4][32]; UCHAR unSet2[4][32]; UCHAR unSet3[4][32]; UCHAR unRelay1[4][32]; UCHAR unRelay2[4][32]; UCHAR unRelay3[4][32]; tagECOMDYNIOConfigure& operator =(const tagECOMDYNIOConfigure &IOConf) { strVer = IOConf.strVer; memcpy((void *)&unSet1,(void *)&IOConf.unSet1,32*4); memcpy((void *)&unSet2,(void *)&IOConf.unSet2,32*4); memcpy((void *)&unSet3,(void *)&IOConf.unSet3,32*4); memcpy((void *)&unRelay1,(void *)&IOConf.unRelay1,32*4); memcpy((void *)&unRelay2,(void *)&IOConf.unRelay2,32*4); memcpy((void *)&unRelay3,(void *)&IOConf.unRelay3,32*4); return *this; } } ECOM_DYN_IO_CONF; //--------------------------------------------------------------------------------------- // 作 者:宋兴亮 // 日 期:2014-03-24 // 结构名称:ECOM_PANEL_XRAY_WINDOW_INFO // 说明说明:保存探测器当前的曝光窗口,min,mid,max曝光窗口的值,用于检查界面显示切换曝光窗口的图标的样子 // //--------------------------------------------------------------------------------------- typedef struct tagPanelXRayWindowInfo { int nCurrentXRayWindow; //平板当前的曝光窗口 int nMinXRayWindow; //平板支持的最小的曝光窗口 int nMidXRayWindow; //平板支持的中间大小的曝光窗口 int nMaxXRayWindow; //平板支持的最大的曝光窗口 int nConfXWindowMode; //DROC配置的曝光窗口模式 tagPanelXRayWindowInfo& operator =(const tagPanelXRayWindowInfo &PanelXRayWindow) { nCurrentXRayWindow = PanelXRayWindow.nCurrentXRayWindow; nMinXRayWindow = PanelXRayWindow.nMinXRayWindow; nMidXRayWindow = PanelXRayWindow.nMidXRayWindow; nMaxXRayWindow = PanelXRayWindow.nMaxXRayWindow; nConfXWindowMode = PanelXRayWindow.nConfXWindowMode; return *this; } }ECOM_PANEL_XRAY_WINDOW_INFO; //code begin 20140808 //typedef struct tagImageEXI //{ // int nImageStandardEXI; //图像标准EXI // int nImageReferenceEXI; //图像参考EXI // //}ECOM_IMAGE_EXI; typedef struct tagImageEXI { float fImageStandardEXI; //图像标准EXI float fImageReferenceEXI; //图像参考EXI }ECOM_IMAGE_EXI; //code begin 20140808 //--------------------------------------------------------------------------------------- // 作 者:张锋 // 日 期:2015-06-12 // 结构名称:ECOM_DUALENERGY_PARAMENT // 说明说明:保存探测器当前的曝光窗口,min,mid,max曝光窗口的值,用于检查界面显示切换曝光窗口的图标的样子 // //--------------------------------------------------------------------------------------- typedef struct tagGenDualEnergyParameter { int nWS; int nET; int nFO; int nAECFieldSel; float fAECDensity; float fKV; float fMA; float fMS; float fMAS; float fPostMS; float fPostMAS; //DROC配置的曝光窗口模式 float fDAP; //DROC配置的曝光窗口模式 tagGenDualEnergyParameter() { nWS=0; nET=0; nFO=0; nAECFieldSel=0; fAECDensity=0.0; fKV=0.0; fMA=0.0; fMS=0.0; fMAS=0.0; fPostMS=0.0; fPostMAS=0.0; fDAP=0.0; } tagGenDualEnergyParameter& operator =(const tagGenDualEnergyParameter &GenDualEnergyParameter) { nWS = GenDualEnergyParameter.nWS; nET = GenDualEnergyParameter.nET; nFO = GenDualEnergyParameter.nFO; nAECFieldSel = GenDualEnergyParameter.nAECFieldSel; fAECDensity = GenDualEnergyParameter.fAECDensity; fKV = GenDualEnergyParameter.fKV; fMA = GenDualEnergyParameter.fMA; fMS = GenDualEnergyParameter.fMS; fMAS = GenDualEnergyParameter.fMAS; fPostMS = GenDualEnergyParameter.fPostMS; fPostMAS = GenDualEnergyParameter.fPostMAS; fDAP = GenDualEnergyParameter.fDAP; return *this; } }ECOM_GENDUALENERGYPARAMETER; typedef struct tagShockSensor { CString strSN; CString strDate; int nLevel; tagShockSensor& operator =(const tagShockSensor &ShockSensor) { strSN.Format("%s", ShockSensor.strSN); strDate.Format("%s", ShockSensor.strDate); nLevel = ShockSensor.nLevel; return *this; } }ECOM_SHOCK_SENSOR; typedef struct tagECOM_FPD_INFO { CString strPanelType; CString strSN; CString strIPAddress; CString strCalibrationDate; CString strBatteryValue; CString strWifiValue; CString strTemperature; CString strShockCounts; CString strAvailableStorage; CString strWorkstation; CString strConnectFlag; CString strAutonumous; tagECOM_FPD_INFO() { strPanelType = ""; strSN = ""; strIPAddress = ""; strCalibrationDate = ""; strBatteryValue = ""; strWifiValue = ""; strTemperature = ""; strShockCounts = ""; strAvailableStorage = ""; strWorkstation = ""; strConnectFlag = ""; strAutonumous = ""; } tagECOM_FPD_INFO& operator =(const tagECOM_FPD_INFO &tagFPDInfo) { strPanelType.Format("%s", tagFPDInfo.strPanelType); strSN.Format("%s", tagFPDInfo.strSN); strIPAddress.Format("%s", tagFPDInfo.strIPAddress); strCalibrationDate.Format("%s", tagFPDInfo.strCalibrationDate); strBatteryValue.Format("%s", tagFPDInfo.strBatteryValue); strWifiValue.Format("%s", tagFPDInfo.strWifiValue); strTemperature.Format("%s", tagFPDInfo.strTemperature); strShockCounts.Format("%s", tagFPDInfo.strShockCounts); strAvailableStorage.Format("%s", tagFPDInfo.strAvailableStorage); strWorkstation.Format("%s", tagFPDInfo.strWorkstation); strConnectFlag.Format("%s", tagFPDInfo.strConnectFlag); strAutonumous.Format("%s", tagFPDInfo.strAutonumous); return *this; } }ECOM_FPD_INFO;