Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 3738:bff4da769f6f storage-commitment
new route: "/storage-commitment/{...}/remove"
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Mar 2020 20:53:40 +0100 |
parents | f29843323daf |
children | e69c556f1913 |
comparison
equal
deleted
inserted
replaced
3737:f29843323daf | 3738:bff4da769f6f |
---|---|
1421 } | 1421 } |
1422 } | 1422 } |
1423 } | 1423 } |
1424 | 1424 |
1425 | 1425 |
1426 static void RemoveAfterStorageCommitment(RestApiPostCall& call) | |
1427 { | |
1428 ServerContext& context = OrthancRestApi::GetContext(call); | |
1429 | |
1430 const std::string& transactionUid = call.GetUriComponent("id", ""); | |
1431 | |
1432 { | |
1433 StorageCommitmentReports::Accessor accessor( | |
1434 context.GetStorageCommitmentReports(), transactionUid); | |
1435 | |
1436 if (!accessor.IsValid()) | |
1437 { | |
1438 throw OrthancException(ErrorCode_InexistentItem, | |
1439 "No storage commitment transaction with UID: " + transactionUid); | |
1440 } | |
1441 else if (accessor.GetReport().GetStatus() != StorageCommitmentReports::Report::Status_Success) | |
1442 { | |
1443 throw OrthancException(ErrorCode_BadSequenceOfCalls, | |
1444 "Cannot remove DICOM instances after failure " | |
1445 "in storage commitment transaction: " + transactionUid); | |
1446 } | |
1447 else | |
1448 { | |
1449 std::vector<std::string> sopInstanceUids; | |
1450 accessor.GetReport().GetSuccessSopInstanceUids(sopInstanceUids); | |
1451 | |
1452 for (size_t i = 0; i < sopInstanceUids.size(); i++) | |
1453 { | |
1454 std::vector<std::string> orthancId; | |
1455 context.GetIndex().LookupIdentifierExact( | |
1456 orthancId, ResourceType_Instance, DICOM_TAG_SOP_INSTANCE_UID, sopInstanceUids[i]); | |
1457 | |
1458 for (size_t j = 0; j < orthancId.size(); j++) | |
1459 { | |
1460 LOG(INFO) << "Storage commitment - Removing SOP instance UID / Orthanc ID: " | |
1461 << sopInstanceUids[i] << " / " << orthancId[j]; | |
1462 | |
1463 Json::Value tmp; | |
1464 context.GetIndex().DeleteResource(tmp, orthancId[j], ResourceType_Instance); | |
1465 } | |
1466 } | |
1467 | |
1468 call.GetOutput().AnswerBuffer("{}", MimeType_Json); | |
1469 } | |
1470 } | |
1471 } | |
1472 | |
1473 | |
1426 void OrthancRestApi::RegisterModalities() | 1474 void OrthancRestApi::RegisterModalities() |
1427 { | 1475 { |
1428 Register("/modalities", ListModalities); | 1476 Register("/modalities", ListModalities); |
1429 Register("/modalities/{id}", ListModalityOperations); | 1477 Register("/modalities/{id}", ListModalityOperations); |
1430 Register("/modalities/{id}", UpdateModality); | 1478 Register("/modalities/{id}", UpdateModality); |
1465 Register("/peers/{id}/store", PeerStore); | 1513 Register("/peers/{id}/store", PeerStore); |
1466 Register("/peers/{id}/system", PeerSystem); | 1514 Register("/peers/{id}/system", PeerSystem); |
1467 | 1515 |
1468 Register("/modalities/{id}/find-worklist", DicomFindWorklist); | 1516 Register("/modalities/{id}/find-worklist", DicomFindWorklist); |
1469 | 1517 |
1518 // Storage commitment | |
1470 Register("/modalities/{id}/storage-commitment", StorageCommitmentScu); | 1519 Register("/modalities/{id}/storage-commitment", StorageCommitmentScu); |
1471 Register("/storage-commitment/{id}", GetStorageCommitmentReport); | 1520 Register("/storage-commitment/{id}", GetStorageCommitmentReport); |
1521 Register("/storage-commitment/{id}/remove", RemoveAfterStorageCommitment); | |
1472 } | 1522 } |
1473 } | 1523 } |