SVG5/sdcmworklist.cpp
2025-10-12 13:55:56 +09:00

619 lines
30 KiB
C++

#include "sdcmworklist.h"
#include "mainwindow.h"
#include <QDebug>
#include "charconvert.h"
#include <QTextCodec>
static void progressCallback(void* callbackData, T_DIMSE_C_FindRQ* request, int responseCount, T_DIMSE_C_FindRSP* rsp, DcmDataset* responseIdentifiers)
{
}
SDCMWorklist::SDCMWorklist()
{
m_pOverrideKeys = new OFList<OFString>;
//m_strIP = "10.10.16.28";
//m_nPort = 104;
m_strIP = "10.20.236.27";
//m_nPort = 127;
m_nPort = 128;
m_strAETitle = "GI_TEST";
m_strServerAETitle = "TY_WORK_2727";
m_pAbstractSyntax = UID_FINDModalityWorklistInformationModel;
m_NetworkTransferSyntax = EXS_LittleEndianExplicit; //EXS_Unknown
//m_NetworkTransferSyntax = EXS_LittleEndianImplicit; //EXS_Unknown
m_BlockMode = DIMSE_BLOCKING;
m_DimseTimeout = 20;
//m_nMaxReceivePDULength = ASC_DEFAULTMAXPDU;
m_nMaxReceivePDULength = ASC_MAXIMUMPDUSIZE;
m_bSecure = false;
m_bAbortAssociation = false;
m_nRetryCount = 5;
//m_ExtractMode = FEM_dicomFile;
m_ExtractMode = FEM_none;
m_CancelAfterNResponses = -1;
m_ACSETimeout = 20;
}
SDCMWorklist::~SDCMWorklist()
{
if(m_pOverrideKeys!=NULL)
{
m_pOverrideKeys->clear();
delete m_pOverrideKeys;
m_pOverrideKeys = NULL;
}
}
void SDCMWorklist::Init()
{
CommonData* pCommonData = MainWindow::GetCommonData();
SEARCH_ITEM* pSearchItem = pCommonData->GetSearchItemWorklist();
QTextCodec* codecKR = QTextCodec::codecForName("eucKR");
QString strModality = pCommonData->GetModality();
m_pOverrideKeys->clear();
QString strDICOMCharacter = pCommonData->GetDICOMCharacterSet();
if(strDICOMCharacter=="EUC-KR")
{
m_pOverrideKeys->push_back("0008,0005=ISO 2022 IR 149"); //DCM_SpecificCharacterSet
}
else if(strDICOMCharacter=="UTF-8")
{
m_pOverrideKeys->push_back("0008,0005=ISO_IR 192"); //DCM_SpecificCharacterSet
}
else if(strDICOMCharacter=="ASCII")
{
m_pOverrideKeys->push_back("0008,0005=ISO_IR 100"); //DCM_SpecificCharacterSet
}
m_pOverrideKeys->push_back("0008,0012"); //DCM_InstanceCreationDate
m_pOverrideKeys->push_back("0008,0013"); //DCM_InstanceCreationTime
m_pOverrideKeys->push_back("0008,0014"); //DCM_InstanceCreatorUID
m_pOverrideKeys->push_back("0008,0016"); //DCM_SOPClassUID
m_pOverrideKeys->push_back("0008,0018"); //DCM_SOPInstanceUID
m_pOverrideKeys->push_back("0008,0050"); //DCM_AccessionNumber
//m_pOverrideKeys->push_back("0008,0080"); //DCM_InstitutionName
//m_pOverrideKeys->push_back("0008,0081"); //DCM_InstitutionAddress
{
//DCM_InstitutionCodeSequence
//m_pOverrideKeys->push_back("(0008,0082)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0008,0082)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0008,0082)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0008,0082)[0].(0008,0104)"); //DCM_CodeMeaning
}
m_pOverrideKeys->push_back("0008,0090"); //DCM_ReferringPhysicianName
//m_pOverrideKeys->push_back("0008,0092"); //DCM_ReferringPhysicianAddress
//m_pOverrideKeys->push_back("0008,0094"); //DCM_ReferringPhysicianTelephoneNumbers
{
{
//DCM_ReferringPhysicianIdentificationSequence --> DCM_InstitutionCodeSequence
//m_pOverrideKeys->push_back("(0008,0096)[0].(0008,0082)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0008,0096)[0].(0008,0082)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0008,0096)[0].(0008,0082)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0008,0096)[0].(0008,0082)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_ReferringPhysicianIdentificationSequence --> DCM_PersonIdentificationCodeSequence
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1101)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1101)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1101)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1101)[0].(0008,0104)"); //DCM_CodeMeaning
}
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1102)"); //DCM_PersonAddress
//m_pOverrideKeys->push_back("(0008,0096)[0].(0040,1103)"); //DCM_PersonTelephoneNumbers
}
{
//DCM_CodingSchemeIdentificationSequence
//m_pOverrideKeys->push_back("(0008,0110)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0008,0110)[0].(0008,0103)"); //DCM_CodingSchemeVersion
}
//m_pOverrideKeys->push_back("0008,0201"); //DCM_TimezoneOffsetFromUTC
//m_pOverrideKeys->push_back("0008,1040"); //DCM_InstitutionalDepartmentName
//m_pOverrideKeys->push_back("0008,1080"); //DCM_AdmittingDiagnosesDescription
{
//DCM_AdmittingDiagnosesCodeSequence
//m_pOverrideKeys->push_back("(0008,1084)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0008,1084)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0008,1084)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0008,1084)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_ReferencedStudySequence
//m_pOverrideKeys->push_back("(0008,1110)[0].(0008,1150)"); //DCM_ReferencedSOPClassUID
//m_pOverrideKeys->push_back("(0008,1110)[0].(0008,1155)"); //DCM_ReferencedSOPInstanceUID
}
{
//DCM_ReferencedPatientSequence
//m_pOverrideKeys->push_back("(0008,1120)[0].(0008,1150)"); //DCM_ReferencedSOPClassUID
//m_pOverrideKeys->push_back("(0008,1120)[0].(0008,1155)"); //DCM_ReferencedSOPInstanceUID
}
{
//DCM_ReferencedVisitSequence
//m_pOverrideKeys->push_back("(0008,1125)[0].(0008,1150)"); //DCM_ReferencedSOPClassUID
//m_pOverrideKeys->push_back("(0008,1125)[0].(0008,1155)"); //DCM_ReferencedSOPInstanceUID
}
{
//m_pOverrideKeys->push_back("0010,0010"); //DCM_PatientName
QString strPatientName = QString("0010,0010");
if(pSearchItem->m_strPatientName.size()>0)
{
QString strPatientName = QString("0010,0010=%1").arg(pSearchItem->m_strPatientName);
QByteArray strPatientNameKor = codecKR->fromUnicode(strPatientName);
m_pOverrideKeys->push_back(strPatientNameKor.data());
}
else
{
m_pOverrideKeys->push_back(strPatientName.toStdString().c_str());
}
}
{
//m_pOverrideKeys->push_back("0010,0020"); //DCM_PatientID
QString strPatientID = QString("0010,0020");
if(pSearchItem->m_strPatientID.size()>0)
{
QString strPatientID = QString("0010,0020=%1").arg(pSearchItem->m_strPatientID);
QByteArray strPatientIDKor = codecKR->fromUnicode(strPatientID);
m_pOverrideKeys->push_back(strPatientIDKor.data());
}
else
{
m_pOverrideKeys->push_back(strPatientID.toStdString().c_str());
}
}
m_pOverrideKeys->push_back("0010,0021"); //DCM_IssuerOfPatientID
m_pOverrideKeys->push_back("0010,0030"); //DCM_PatientBirthDate
//m_pOverrideKeys->push_back("0010,0032"); //DCM_PatientBirthTime
m_pOverrideKeys->push_back("0010,0040"); //DCM_PatientSex
{
//DCM_PatientInsurancePlanCodeSequence
//m_pOverrideKeys->push_back("(0010,0050)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0010,0050)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0010,0050)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0010,0050)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_PatientPrimaryLanguageCodeSequence
//m_pOverrideKeys->push_back("(0010,0101)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0010,0101)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0010,0101)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0010,0101)[0].(0008,0104)"); //DCM_CodeMeaning
{
//DCM_PatientPrimaryLanguageCodeSequence --> DCM_PatientPrimaryLanguageModifierCodeSequence
//m_pOverrideKeys->push_back("(0010,0101)[0].(0010,0102)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0010,0101)[0].(0010,0102)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0010,0101)[0].(0010,0102)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0010,0101)[0].(0010,0102)[0].(0008,0104)"); //DCM_CodeMeaning
}
}
//m_pOverrideKeys->push_back("0010,1000"); //DCM_RETIRED_OtherPatientIDs
//m_pOverrideKeys->push_back("0010,1001"); //DCM_OtherPatientNames
//m_pOverrideKeys->push_back("0010,1005"); //DCM_PatientBirthName
m_pOverrideKeys->push_back("0010,1010"); //DCM_PatientAge
m_pOverrideKeys->push_back("0010,1020"); //DCM_PatientSize
m_pOverrideKeys->push_back("0010,1030"); //DCM_PatientWeight
m_pOverrideKeys->push_back("0010,1040"); //DCM_PatientAddress
//m_pOverrideKeys->push_back("0010,1060"); //DCM_PatientMotherBirthName
//m_pOverrideKeys->push_back("0010,1080"); //DCM_MilitaryRank
//m_pOverrideKeys->push_back("0010,1081"); //DCM_BranchOfService
//m_pOverrideKeys->push_back("0010,1090"); //DCM_RETIRED_MedicalRecordLocator
m_pOverrideKeys->push_back("0010,2000"); //DCM_MedicalAlerts
m_pOverrideKeys->push_back("0010,2110"); //DCM_Allergies
//m_pOverrideKeys->push_back("0010,2150"); //DCM_CountryOfResidence
//m_pOverrideKeys->push_back("0010,2152"); //DCM_RegionOfResidence
//m_pOverrideKeys->push_back("0010,2154"); //DCM_PatientTelephoneNumbers
//m_pOverrideKeys->push_back("0010,2160"); //DCM_EthnicGroup
//m_pOverrideKeys->push_back("0010,2180"); //DCM_Occupation
m_pOverrideKeys->push_back("0010,21a0"); //DCM_SmokingStatus
//m_pOverrideKeys->push_back("0010,21b0"); //DCM_AdditionalPatientHistory
m_pOverrideKeys->push_back("0010,21c0"); //DCM_PregnancyStatus
//m_pOverrideKeys->push_back("0010,21d0"); //DCM_LastMenstrualDate
//m_pOverrideKeys->push_back("0010,21f0"); //DCM_PatientReligiousPreference
m_pOverrideKeys->push_back("0010,4000"); //DCM_PatientComments
m_pOverrideKeys->push_back("0020,000d"); //DCM_StudyInstanceUID
m_pOverrideKeys->push_back("0038,0300"); //DCM_CurrentPatientLocation
/*
{
//DCM_ContributingEquipmentSequence
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,0070)"); //DCM_Manufacturer
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,0080)"); //DCM_InstitutionName
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,0081)"); //DCM_InstitutionAddress
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,1010)"); //DCM_StationName
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,1040)"); //DCM_InstitutionalDepartmentName
m_pOverrideKeys->push_back("(0018,a001)[0].(0008,1090)"); //DCM_ManufacturerModelName
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1000)"); //DCM_DeviceSerialNumber
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1020)"); //DCM_SoftwareVersions
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1050)"); //DCM_SpatialResolution
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1090)"); //DCM_CardiacNumberOfImages
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1200)"); //DCM_DateOfLastCalibration
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,1201)"); //DCM_TimeOfLastCalibration
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,a002)"); //DCM_ContributionDateTime
m_pOverrideKeys->push_back("(0018,a001)[0].(0018,a003)"); //DCM_ContributionDescription
{
//DCM_ContributingEquipmentSequence --> DCM_PurposeOfReferenceCodeSequence
m_pOverrideKeys->push_back("(0018,a001)[0].(0040,a170)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0018,a001)[0].(0040,a170)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0018,a001)[0].(0040,a170)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0018,a001)[0].(0040,a170)[0].(0008,0104)"); //DCM_CodeMeaning
}
}
m_pOverrideKeys->push_back("0020,000d"); //DCM_StudyInstanceUID
m_pOverrideKeys->push_back("0020,0013"); //DCM_InstanceNumber
{
//DCM_RequestingPhysicianIdentificationSequence
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0080)"); //DCM_InstitutionName
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0081)"); //DCM_InstitutionAddress
{
//DCM_RequestingPhysicianIdentificationSequence --> DCM_InstitutionCodeSequence
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0082)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0082)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0082)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0032,1031)[0].(0008,0082)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_RequestingPhysicianIdentificationSequence --> DCM_PersonIdentificationCodeSequence
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1101)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1101)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1101)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1101)[0].(0008,0104)"); //DCM_CodeMeaning
}
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1102)"); //DCM_PersonAddress
m_pOverrideKeys->push_back("(0032,1031)[0].(0040,1103)"); //DCM_PersonTelephoneNumbers
}
m_pOverrideKeys->push_back("0032,1032"); //DCM_RequestingPhysician
m_pOverrideKeys->push_back("0032,1033"); //DCM_RequestingService
m_pOverrideKeys->push_back("0032,1060"); //DCM_RequestedProcedureDescription
{
//DCM_RequestedProcedureCodeSequence
m_pOverrideKeys->push_back("(0032,1064)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0032,1064)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0032,1064)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0032,1064)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_ReferencedPatientAliasSequence
m_pOverrideKeys->push_back("(0038,0004)[0].(0008,1150)"); //DCM_ReferencedSOPClassUID
m_pOverrideKeys->push_back("(0038,0004)[0].(0008,1155)"); //DCM_ReferencedSOPInstanceUID
}
m_pOverrideKeys->push_back("0038,0008"); //DCM_VisitStatusID
m_pOverrideKeys->push_back("0038,0010"); //DCM_AdmissionID
m_pOverrideKeys->push_back("0038,0011"); //DCM_RETIRED_IssuerOfAdmissionID
m_pOverrideKeys->push_back("0038,0016"); //DCM_RouteOfAdmissions
m_pOverrideKeys->push_back("0038,0020"); //DCM_AdmittingDate
m_pOverrideKeys->push_back("0038,0021"); //DCM_AdmittingTime
m_pOverrideKeys->push_back("0038,0050"); //DCM_SpecialNeeds
m_pOverrideKeys->push_back("0038,0400"); //DCM_PatientInstitutionResidence
m_pOverrideKeys->push_back("0038,0500"); //DCM_PatientState
m_pOverrideKeys->push_back("0038,4000"); //DCM_VisitComments
*/
{
//DCM_ScheduledProcedureStepSequence
QString strSearch = QString("(0040,0100)[0].0008,0060=%1").arg(strModality);
m_pOverrideKeys->push_back(strSearch.toStdString().c_str()); //DCM_Modality
//m_pOverrideKeys->push_back("(0040,0100)[0].0008,0060"); //DCM_Modality
m_pOverrideKeys->push_back("(0040,0100)[0].(0032,1070)"); //DCM_RequestedContrastAgent
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0011)"); //DCM_ScheduledProcedureStepLocation
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0001)"); //DCM_ScheduledStationAETitle
{
QString strDateStart;
QString strDateEnd;
if(pSearchItem->m_strStudyDate.size()==21)
{
QString strTmp = pSearchItem->m_strStudyDate;
strDateStart = QString("%1%2%3").arg(strTmp.mid(0, 4)).
arg(strTmp.mid(5, 2)).
arg(strTmp.mid(8, 2));
strDateEnd = QString("%1%2%3").arg(strTmp.mid(11, 4)).
arg(strTmp.mid(16, 2)).
arg(strTmp.mid(19, 2));
}
else
{
QDate date = QDate::currentDate();
int nYear = date.year();
int nMonth = date.month();
int nDay = date.day();
strDateStart = QString("%1%2%3").arg(QString::number(nYear).rightJustified(4, '0')).arg(QString::number(nMonth).rightJustified(2, '0')).arg(QString::number(nDay).rightJustified(2, '0'));
strDateEnd = strDateStart;
}
//QString strSearchDateTmp = QString("0040,0002=%1-%2").arg(strDateStart).arg(strDateEnd);
QString strSearchDateTmp = QString("(0040,0100)[0].(0040,0002)=%1-%2").arg(strDateStart).arg(strDateEnd);
OFString strSearchDate = strSearchDateTmp.toStdString().c_str();
m_pOverrideKeys->push_back(strSearchDate);
}
//m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0002)"); //DCM_ScheduledProcedureStepStartDate
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0003)"); //DCM_ScheduledProcedureStepStartTime
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0004)"); //DCM_ScheduledProcedureStepEndDate
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0005)"); //DCM_ScheduledProcedureStepEndTime
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0006)"); //DCM_ScheduledPerformingPhysicianName
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0007)"); //DCM_ScheduledProcedureStepDescription
{
//DCM_ScheduledProcedureStepSequence --> DCM_ScheduledProtocolCodeSequence
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0008)[0].(0008,0100)"); //DCM_CodeValue
//m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0008)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
//m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0008)[0].(0008,0103)"); //DCM_CodingSchemeVersion
//m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0008)[0].(0008,0104)"); //DCM_CodeMeaning
}
/*
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0009)"); //DCM_ScheduledProcedureStepID
{
//DCM_ScheduledProcedureStepSequence --> DCM_ScheduledPerformingPhysicianIdentificationSequence
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0080)"); //DCM_InstitutionName
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0081)"); //DCM_InstitutionAddress
{
//DCM_ScheduledProcedureStepSequence --> DCM_ScheduledPerformingPhysicianIdentificationSequence --> DCM_InstitutionCodeSequence
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0082)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0082)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0082)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0008,0082)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_ScheduledProcedureStepSequence --> DCM_ScheduledPerformingPhysicianIdentificationSequence --> DCM_InstitutionCodeSequence
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1101)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1101)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1101)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1101)[0].(0008,0104)"); //DCM_CodeMeaning
}
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1102)"); //DCM_PersonAddress
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,000b)[0].(0040,1103)"); //DCM_PersonTelephoneNumbers
}
*/
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0010)"); //DCM_ScheduledStationName
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0011)"); //DCM_ScheduledProcedureStepLocation
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0012)"); //DCM_PreMedication
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0020)"); //DCM_ScheduledProcedureStepStatus
m_pOverrideKeys->push_back("(0040,0100)[0].(0040,0400)"); //DCM_CommentsOnTheScheduledProcedureStep
}
m_pOverrideKeys->push_back("0040,1001"); //DCM_RequestedProcedureID
m_pOverrideKeys->push_back("0040,1002"); //DCM_ReasonForTheRequestedProcedure
m_pOverrideKeys->push_back("0040,1003"); //DCM_RequestedProcedurePriority
m_pOverrideKeys->push_back("0040,1004"); //DCM_PatientTransportArrangements
m_pOverrideKeys->push_back("0040,1005"); //DCM_RequestedProcedureLocation
m_pOverrideKeys->push_back("0040,1008"); //DCM_ConfidentialityCode
m_pOverrideKeys->push_back("0040,1009"); //DCM_ReportingPriority
m_pOverrideKeys->push_back("0040,1010"); //DCM_NamesOfIntendedRecipientsOfResults
/*
{
//DCM_IntendedRecipientsOfResultsIdentificationSequence
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0080)"); //DCM_InstitutionName
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0081)"); //DCM_InstitutionAddress
{
//DCM_IntendedRecipientsOfResultsIdentificationSequence --> DCM_InstitutionCodeSequence
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0082)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0082)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0082)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0040,1011)[0].(0008,0082)[0].(0008,0104)"); //DCM_CodeMeaning
}
{
//DCM_IntendedRecipientsOfResultsIdentificationSequence --> DCM_PersonIdentificationCodeSequence
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1101)[0].(0008,0100)"); //DCM_CodeValue
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1101)[0].(0008,0102)"); //DCM_CodingSchemeDesignator
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1101)[0].(0008,0103)"); //DCM_CodingSchemeVersion
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1101)[0].(0008,0104)"); //DCM_CodeMeaning
}
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1102)"); //DCM_PersonAddress
m_pOverrideKeys->push_back("(0040,1011)[0].(0040,1103)"); //DCM_PersonTelephoneNumbers
}
m_pOverrideKeys->push_back("0040,1400"); //DCM_RequestedProcedureComments
m_pOverrideKeys->push_back("0040,2001"); //DCM_RETIRED_ReasonForTheImagingServiceRequest
m_pOverrideKeys->push_back("0040,2004"); //DCM_IssueDateOfImagingServiceRequest
m_pOverrideKeys->push_back("0040,2005"); //DCM_IssueTimeOfImagingServiceRequest
m_pOverrideKeys->push_back("0040,2008"); //DCM_OrderEnteredBy
m_pOverrideKeys->push_back("0040,2009"); //DCM_OrderEntererLocation
m_pOverrideKeys->push_back("0040,2010"); //DCM_OrderCallbackPhoneNumber
m_pOverrideKeys->push_back("0040,2016"); //DCM_PlacerOrderNumberImagingServiceRequest
m_pOverrideKeys->push_back("0040,2017"); //DCM_FillerOrderNumberImagingServiceRequest
m_pOverrideKeys->push_back("0040,2400"); //DCM_ImagingServiceRequestComments
m_pOverrideKeys->push_back("0040,3001"); //DCM_ConfidentialityConstraintOnPatientDataDescription
m_pOverrideKeys->push_back("0100,0410"); //DCM_SOPInstanceStatus
m_pOverrideKeys->push_back("0100,0420"); //DCM_SOPAuthorizationDateTime
m_pOverrideKeys->push_back("0100,0424"); //DCM_SOPAuthorizationComment
m_pOverrideKeys->push_back("0100,0426"); //DCM_AuthorizationEquipmentCertificationNumber
{
//DCM_EncryptedAttributesSequence
m_pOverrideKeys->push_back("(0400,0500)[0].(0400,0510)"); //DCM_EncryptedContentTransferSyntaxUID
m_pOverrideKeys->push_back("(0400,0500)[0].(0400,0520)"); //DCM_EncryptedContent
}
{
//DCM_MACParametersSequence
m_pOverrideKeys->push_back("(4ffe,0001)[0].(0400,0005)"); //DCM_MACIDNumber
m_pOverrideKeys->push_back("(4ffe,0001)[0].(0400,0010)"); //DCM_MACCalculationTransferSyntaxUID
m_pOverrideKeys->push_back("(4ffe,0001)[0].(0400,0015)"); //DCM_MACAlgorithm
m_pOverrideKeys->push_back("(4ffe,0001)[0].(0400,0020)"); //DCM_DataElementsSigned
}
{
//DCM_Item
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0005)"); //DCM_MACIDNumber
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0100)"); //DCM_DigitalSignatureUID
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0105)"); //DCM_DigitalSignatureDateTime
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0110)"); //DCM_CertificateType
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0115)"); //DCM_CertificateOfSigner
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0120)"); //DCM_Signature
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0305)"); //DCM_CertifiedTimestampType
m_pOverrideKeys->push_back("(fffa,fffa)[0].(0400,0310)"); //DCM_CertifiedTimestamp
}
*/
}
int SDCMWorklist::Search()
{
Init();
MainWindow* pMainWindow = MainWindow::GetMainWindow();
CommonData* pCommonData = MainWindow::GetCommonData();
/*
QString strDateStart;
QString strDateEnd;
if(pSearchItem->m_strStudyDate.size()==21)
{
QString strTmp = pSearchItem->m_strStudyDate;
strDateStart = QString("%1%2%3").arg(strTmp.mid(0, 4)).
arg(strTmp.mid(5, 2)).
arg(strTmp.mid(8, 2));
strDateEnd = QString("%1%2%3").arg(strTmp.mid(11, 4)).
arg(strTmp.mid(16, 2)).
arg(strTmp.mid(19, 2));
}
else
{
QDate date = QDate::currentDate();
int nYear = date.year();
int nMonth = date.month();
int nDay = date.day();
strDateStart = QString("%1%2%3").arg(QString::number(nYear).rightJustified(4, '0')).arg(QString::number(nMonth).rightJustified(2, '0')).arg(QString::number(nDay).rightJustified(2, '0'));
strDateEnd = strDateStart;
}
//QString strSearchDateTmp = QString("0040,0002=%1-%2").arg(strDateStart).arg(strDateEnd);
QString strSearchDateTmp = QString("(0040,0100)[0].(0040,0002)=%1-%2").arg(strDateStart).arg(strDateEnd);
OFString strSearchDate = strSearchDateTmp.toStdString().c_str();
m_pOverrideKeys->push_back(strSearchDate);
OFString strOFModality;
strOFModality = "0008,0060=SC";
m_pOverrideKeys->push_back(strOFModality);
*/
DCM_dcmnetLogger.setLogLevel(dcmtk::log4cplus::FATAL_LOG_LEVEL);
OFCondition cond = m_FindSCU.initializeNetwork(m_ACSETimeout);
SDCMFindSCUDataCallback* pCallback = pCommonData->GetFindSCUDataCallback();
//m_FindSCU.performQuery("192.168.1.125", m_nPort, "TEST1", "DCMSERVER", m_pAbstractSyntax, m_NetworkTransferSyntax, m_BlockMode, m_DimseTimeout, m_nMaxReceivePDULength, m_bSecure, m_bAbortAssociation, m_nRetryCount, m_ExtractMode, m_CancelAfterNResponses,m_pOverrideKeys, (DcmFindSCUCallback*)pCallback);// NULL, NULL, NULL, NULL);
//DcmFindSCUDefaultCallback* pNewCallback = reinterpret_cast<DcmFindSCUDefaultCallback*>(pCallback);
//m_FindSCU.performQuery(m_strIP.c_str(), m_nPort, m_strAETitle.c_str(), m_strServerAETitle.c_str(), m_pAbstractSyntax, m_NetworkTransferSyntax, m_BlockMode, m_DimseTimeout, m_nMaxReceivePDULength, m_bSecure, m_bAbortAssociation, m_nRetryCount, m_ExtractMode, m_CancelAfterNResponses, m_pOverrideKeys, pNewCallback);//, NULL, NULL, NULL);
//cond = m_FindSCU.performQuery(m_strIP.c_str(), m_nPort, m_strAETitle.c_str(), m_strServerAETitle.c_str(), m_pAbstractSyntax, m_NetworkTransferSyntax, m_BlockMode, m_DimseTimeout, m_nMaxReceivePDULength, m_bSecure, m_bAbortAssociation, m_nRetryCount, m_ExtractMode, m_CancelAfterNResponses, m_pOverrideKeys, (DcmFindSCUCallback*)pCallback);//, NULL, NULL, NULL);
bool bComplete = false;
int nTry = 0;
while(bComplete==false && nTry < m_nRetryCount)
{
pCallback->Clear();
const char* pStrIP = m_strIP.toStdString().c_str();
cond = m_FindSCU.performQuery(m_strIP.toStdString().c_str(), m_nPort, m_strAETitle.toStdString().c_str(), m_strServerAETitle.toStdString().c_str(), m_pAbstractSyntax, m_NetworkTransferSyntax, m_BlockMode, m_DimseTimeout, m_nMaxReceivePDULength, m_bSecure, m_bAbortAssociation, 1, m_ExtractMode, m_CancelAfterNResponses, m_pOverrideKeys, (DcmFindSCUCallback*)pCallback);//, NULL, NULL, NULL);
if(cond.good()==true)
{
bComplete = true;
break;
}
nTry++;
}
m_FindSCU.dropNetwork();
if(cond.good()==true)
{
return 0;
}
return -1;
}
DcmFindSCUExtractMode SDCMWorklist::GetExtractMode()
{
return m_ExtractMode;
}
int SDCMWorklist::GetCancelAfterNResponses()
{
return m_CancelAfterNResponses;
}
void SDCMWorklist::SetWorklistInfo(QString strIP, QString strPort, QString strServerAETitle, QString strClientAETitle)
{
m_strIP = strIP;
m_nPort = strPort.toInt();
m_strAETitle = strClientAETitle;
m_strServerAETitle = strServerAETitle;
}