From 8bba77cd86764e7878739261afb3abed900a7628 Mon Sep 17 00:00:00 2001 From: chenhuijun Date: Mon, 27 May 2024 09:27:21 +0800 Subject: [PATCH] feat: Change ReconClient to fit new version Restful interface --- src/device/DeviceManager.cpp | 7 ++-- src/device/DeviceManager.h | 2 +- src/recon/ProtocolStructs.h | 5 +-- src/recon/ReconClient.cpp | 66 ++++++------------------------------ src/recon/ReconClient.h | 2 -- src/recon/ReconManager.cpp | 4 +-- src/recon/ReconManager.h | 2 +- 7 files changed, 22 insertions(+), 66 deletions(-) diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 1ac7e11..ed829fb 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -1149,8 +1149,11 @@ void DeviceManager::startCreateReconRecord() QList record = variant.value>(); QString scanID = record[0].toString(); QString referenceID = record[1].toString(); - QString patientID = record[2].toString();; - emit createScanToRecon(scanID, patientID, referenceID, RECON_TRANSFER_PATH + "/" + scanID); + // QString patientID = record[2].toString();; + //TODO:need StudyUID & MPPS Uid + QString studyUID; + QString mppsUID; + emit createScanToRecon(scanID, studyUID,mppsUID, referenceID, RECON_TRANSFER_PATH + "/" + scanID); } startTransfer(); } diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index 6a59aa1..296199d 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -166,7 +166,7 @@ signals: void responseCheckDataQuality(const QString& aResponse); //Recon void createEmptyScanToRecon(const QString& aScanID, const QString& aPath); - void createScanToRecon(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath); + void createScanToRecon(const QString& aScanID, const QString& aStudyUID,const QString& aMPPSUID, const QString& aReferenceID, const QString& aPath); void queryScanStatusToRecon(const QStringList& aScanIDs); void updateReconStateFinished(); //GUI diff --git a/src/recon/ProtocolStructs.h b/src/recon/ProtocolStructs.h index 351a139..2754e37 100644 --- a/src/recon/ProtocolStructs.h +++ b/src/recon/ProtocolStructs.h @@ -3,7 +3,8 @@ #include struct Scan{ std::string ScanID; - std::string PatientID; + std::string StudyUID; + std::string MPPSUID; std::string ReferenceID; std::string ReferencePath; int Type; @@ -22,7 +23,7 @@ struct PACSSetting std::string AETitle; std::string ServerAETitle; std::string ServerIP; - int Port = 0;; + int Port = 0; }; #endif // __SCAN_H__ \ No newline at end of file diff --git a/src/recon/ReconClient.cpp b/src/recon/ReconClient.cpp index ac5a145..381fde4 100644 --- a/src/recon/ReconClient.cpp +++ b/src/recon/ReconClient.cpp @@ -7,7 +7,7 @@ namespace { const char *CREATE_URL = "/Scan/Create/"; - const char *CHECK_URL = "/v/"; + const char *STATE_URL = "/State/"; const char *QUERY_SCAN_URL = "/Scan/Query/"; const char *QUERY_VERSION_URL = "/Version/"; const char *QUERY_RECON_URL = "/Task/Query/"; @@ -36,7 +36,7 @@ RequestResult ReconClient::CheckActive() { std::string content; content.append("1"); - auto resp = mRequest.post(mHost + CHECK_URL, content, mHeaders); + auto resp = mRequest.post(mHost + STATE_URL, content, mHeaders); if (resp.httpCode() == 200) { return RequestResult::Success(); @@ -52,7 +52,14 @@ RequestResult ReconClient::Create(const Scan &aScan) { cJSON *obj = cJSON_CreateObject(); cJSON_AddStringToObject(obj, "ScanID", aScan.ScanID.c_str()); - cJSON_AddStringToObject(obj, "PatientID", aScan.PatientID.c_str()); + if (aScan.StudyUID.length()>0) + { + cJSON_AddStringToObject(obj, "StudyUID", aScan.StudyUID.c_str()); + } + if (aScan.MPPSUID.length()>0) + { + cJSON_AddStringToObject(obj, "MPPSUID", aScan.MPPSUID.c_str()); + } cJSON_AddStringToObject(obj, "ReferencePath", aScan.ReferencePath.c_str()); if (!aScan.ReferencePath.empty()) { @@ -111,59 +118,6 @@ RequestResult ReconClient::QueryScan(const std::string &aScanID, int &state) } } -RequestResult ReconClient::QueryReconID(const std::string &aScanID, std::string &aReconID) -{ - cJSON *obj = cJSON_CreateObject(); - cJSON_AddStringToObject(obj, "ScanID", aScanID.data()); - char *str = cJSON_Print(obj); - cJSON_Delete(obj); - std::string content; - content.append(str); - free(str); - auto resp = mRequest.post(mHost + QUERY_RECON_URL, content, mHeaders); - if (resp.httpCode() == 204) - { - return RequestResult::Success(); - } - else if (resp.httpCode() == 200) - { - aReconID = resp.getContent(); - return RequestResult::Success(aReconID); - } - else - { - mErrorMessage = resp.getContent(); - return RequestResult::Fail(mErrorMessage); - } -} - -RequestResult ReconClient::QueryReconTask(const std::string &aReconID, TaskQueryResult &aTask) -{ - cJSON *obj = cJSON_CreateObject(); - cJSON_AddStringToObject(obj, "ReconID", aReconID.data()); - char *str = cJSON_Print(obj); - cJSON_Delete(obj); - std::string content; - content.append(str); - free(str); - auto resp = mRequest.post(mHost + QUERY_RECON_URL, content, mHeaders); - if (resp.httpCode() == 200) - { - cJSON *task = cJSON_Parse(resp.getContent().data()); - aTask.ReconID = cJSON_GetObjectItem(task, "ReconID")->valuestring; - aTask.ScanID = cJSON_GetObjectItem(task, "ScanID")->valuestring; - aTask.Start = cJSON_GetObjectItem(task, "Start")->valueint != 0; - aTask.SeqID = cJSON_GetObjectItem(task, "SeqID")->valueint; - cJSON_Delete(task); - return RequestResult::Success(); - } - else - { - mErrorMessage = resp.getContent(); - return RequestResult::Fail(mErrorMessage); - } -} - RequestResult ReconClient::QueryVersion() { std::string content; diff --git a/src/recon/ReconClient.h b/src/recon/ReconClient.h index ab41f9c..0ba1382 100644 --- a/src/recon/ReconClient.h +++ b/src/recon/ReconClient.h @@ -13,8 +13,6 @@ public: RequestResult CheckActive(); RequestResult Create(const Scan &aScan); RequestResult QueryScan(const std::string &aScanID, int &state); - RequestResult QueryReconID(const std::string &aScanID, std::string &aReconID); - RequestResult QueryReconTask(const std::string &aReconID, TaskQueryResult &aTask); RequestResult QueryVersion(); RequestResult SetPACSSetting(const PACSSetting &aSetting); diff --git a/src/recon/ReconManager.cpp b/src/recon/ReconManager.cpp index 975d375..75cc71f 100644 --- a/src/recon/ReconManager.cpp +++ b/src/recon/ReconManager.cpp @@ -62,9 +62,9 @@ void ReconManager::createEmptyScan(const QString& aScanID, const QString& aPath) } } -void ReconManager::createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath) +void ReconManager::createScan(const QString& aScanID, const QString& aStudyUID,const QString& aMPPSUID, const QString& aReferenceID, const QString& aPath) { - Scan scan{aScanID.toStdString(), aPatientID.toStdString(), aReferenceID.toStdString(), aPath.toStdString(), 1}; + Scan scan{aScanID.toStdString(), aStudyUID.toStdString(), aMPPSUID.toStdString(), aReferenceID.toStdString(), aPath.toStdString(),1}; auto response = mReconClient->Create(scan); if(response.good()) { diff --git a/src/recon/ReconManager.h b/src/recon/ReconManager.h index 2b47084..3a296d9 100644 --- a/src/recon/ReconManager.h +++ b/src/recon/ReconManager.h @@ -20,7 +20,7 @@ public: public slots: void createEmptyScan(const QString& aScanID, const QString& aPath); - void createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath); + void createScan(const QString& aScanID, const QString& aStudyUID,const QString& aMPPSUID, const QString& aReferenceID, const QString& aPath); void queryReconStatus(const QStringList& aScanIDs); void setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort); void checkReconConnection();