comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 3808:7f083dfae62b

new REST route: /modalities/{id}/store-straight
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 03 Apr 2020 14:06:13 +0200
parents e69c556f1913
children 447880856ce8
comparison
equal deleted inserted replaced
3807:2f28c7eb2776 3808:7f083dfae62b
53 { 53 {
54 static const char* const KEY_LEVEL = "Level"; 54 static const char* const KEY_LEVEL = "Level";
55 static const char* const KEY_QUERY = "Query"; 55 static const char* const KEY_QUERY = "Query";
56 static const char* const KEY_NORMALIZE = "Normalize"; 56 static const char* const KEY_NORMALIZE = "Normalize";
57 static const char* const KEY_RESOURCES = "Resources"; 57 static const char* const KEY_RESOURCES = "Resources";
58 static const char* const SOP_CLASS_UID = "SOPClassUID";
59 static const char* const SOP_INSTANCE_UID = "SOPInstanceUID";
58 60
59 61
60 static RemoteModalityParameters MyGetModalityUsingSymbolicName(const std::string& name) 62 static RemoteModalityParameters MyGetModalityUsingSymbolicName(const std::string& name)
61 { 63 {
62 OrthancConfiguration::ReaderLock lock; 64 OrthancConfiguration::ReaderLock lock;
973 OrthancRestApi::GetApi(call).SubmitCommandsJob 975 OrthancRestApi::GetApi(call).SubmitCommandsJob
974 (call, job.release(), true /* synchronous by default */, request); 976 (call, job.release(), true /* synchronous by default */, request);
975 } 977 }
976 978
977 979
980 static void DicomStoreStraight(RestApiPostCall& call)
981 {
982 ServerContext& context = OrthancRestApi::GetContext(call);
983
984 const std::string& localAet = context.GetDefaultLocalApplicationEntityTitle();
985 RemoteModalityParameters remote =
986 MyGetModalityUsingSymbolicName(call.GetUriComponent("id", ""));
987
988 DicomUserConnection connection(localAet, remote);
989 connection.Open();
990
991 std::string sopClassUid, sopInstanceUid;
992 connection.Store(sopClassUid, sopInstanceUid,
993 call.GetBodyData(), call.GetBodySize());
994
995 Json::Value answer = Json::objectValue;
996 answer[SOP_CLASS_UID] = sopClassUid;
997 answer[SOP_INSTANCE_UID] = sopInstanceUid;
998
999 call.GetOutput().AnswerJson(answer);
1000 }
1001
1002
978 /*************************************************************************** 1003 /***************************************************************************
979 * DICOM C-Move SCU 1004 * DICOM C-Move SCU
980 ***************************************************************************/ 1005 ***************************************************************************/
981 1006
982 static void DicomMove(RestApiPostCall& call) 1007 static void DicomMove(RestApiPostCall& call)
1310 1335
1311 static void StorageCommitmentScu(RestApiPostCall& call) 1336 static void StorageCommitmentScu(RestApiPostCall& call)
1312 { 1337 {
1313 static const char* const ORTHANC_RESOURCES = "Resources"; 1338 static const char* const ORTHANC_RESOURCES = "Resources";
1314 static const char* const DICOM_INSTANCES = "DicomInstances"; 1339 static const char* const DICOM_INSTANCES = "DicomInstances";
1315 static const char* const SOP_CLASS_UID = "SOPClassUID";
1316 static const char* const SOP_INSTANCE_UID = "SOPInstanceUID";
1317 1340
1318 ServerContext& context = OrthancRestApi::GetContext(call); 1341 ServerContext& context = OrthancRestApi::GetContext(call);
1319 1342
1320 Json::Value json; 1343 Json::Value json;
1321 if (!call.ParseJsonRequest(json) || 1344 if (!call.ParseJsonRequest(json) ||
1562 Register("/modalities/{id}/find-study", DicomFindStudy); 1585 Register("/modalities/{id}/find-study", DicomFindStudy);
1563 Register("/modalities/{id}/find-series", DicomFindSeries); 1586 Register("/modalities/{id}/find-series", DicomFindSeries);
1564 Register("/modalities/{id}/find-instance", DicomFindInstance); 1587 Register("/modalities/{id}/find-instance", DicomFindInstance);
1565 Register("/modalities/{id}/find", DicomFind); 1588 Register("/modalities/{id}/find", DicomFind);
1566 Register("/modalities/{id}/store", DicomStore); 1589 Register("/modalities/{id}/store", DicomStore);
1590 Register("/modalities/{id}/store-straight", DicomStoreStraight); // New in 1.6.1
1567 Register("/modalities/{id}/move", DicomMove); 1591 Register("/modalities/{id}/move", DicomMove);
1568 1592
1569 // For Query/Retrieve 1593 // For Query/Retrieve
1570 Register("/modalities/{id}/query", DicomQuery); 1594 Register("/modalities/{id}/query", DicomQuery);
1571 Register("/queries", ListQueries); 1595 Register("/queries", ListQueries);