Mercurial > hg > orthanc
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); |