Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/DicomStructureSet.cpp @ 792:4fe4b221a31f
deprecating MessagingToolbox
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 28 May 2019 08:49:49 +0200 |
parents | 9f68155c75b0 |
children | 04f518ebd132 |
comparison
equal
deleted
inserted
replaced
791:907189734acd | 792:4fe4b221a31f |
---|---|
20 | 20 |
21 | 21 |
22 #include "DicomStructureSet.h" | 22 #include "DicomStructureSet.h" |
23 | 23 |
24 #include "../Toolbox/GeometryToolbox.h" | 24 #include "../Toolbox/GeometryToolbox.h" |
25 #include "../Toolbox/MessagingToolbox.h" | |
26 | 25 |
27 #include <Core/Logging.h> | 26 #include <Core/Logging.h> |
28 #include <Core/OrthancException.h> | 27 #include <Core/OrthancException.h> |
29 #include <Plugins/Samples/Common/FullOrthancDataset.h> | 28 #include <Plugins/Samples/Common/FullOrthancDataset.h> |
30 #include <Plugins/Samples/Common/DicomDatasetReader.h> | 29 #include <Plugins/Samples/Common/DicomDatasetReader.h> |
676 return referencedSlices_.begin()->second.geometry_.GetNormal(); | 675 return referencedSlices_.begin()->second.geometry_.GetNormal(); |
677 } | 676 } |
678 } | 677 } |
679 | 678 |
680 | 679 |
681 DicomStructureSet* DicomStructureSet::SynchronousLoad(OrthancPlugins::IOrthancConnection& orthanc, | |
682 const std::string& instanceId) | |
683 { | |
684 const std::string uri = "/instances/" + instanceId + "/tags?ignore-length=3006-0050"; | |
685 OrthancPlugins::FullOrthancDataset dataset(orthanc, uri); | |
686 | |
687 std::auto_ptr<DicomStructureSet> result(new DicomStructureSet(dataset)); | |
688 | |
689 std::set<std::string> instances; | |
690 result->GetReferencedInstances(instances); | |
691 | |
692 for (std::set<std::string>::const_iterator it = instances.begin(); | |
693 it != instances.end(); ++it) | |
694 { | |
695 Json::Value lookup; | |
696 MessagingToolbox::RestApiPost(lookup, orthanc, "/tools/lookup", *it); | |
697 | |
698 if (lookup.type() != Json::arrayValue || | |
699 lookup.size() != 1 || | |
700 !lookup[0].isMember("Type") || | |
701 !lookup[0].isMember("Path") || | |
702 lookup[0]["Type"].type() != Json::stringValue || | |
703 lookup[0]["ID"].type() != Json::stringValue || | |
704 lookup[0]["Type"].asString() != "Instance") | |
705 { | |
706 throw Orthanc::OrthancException(Orthanc::ErrorCode_UnknownResource); | |
707 } | |
708 | |
709 OrthancPlugins::FullOrthancDataset slice | |
710 (orthanc, "/instances/" + lookup[0]["ID"].asString() + "/tags"); | |
711 Orthanc::DicomMap m; | |
712 MessagingToolbox::ConvertDataset(m, slice); | |
713 result->AddReferencedSlice(m); | |
714 } | |
715 | |
716 result->CheckReferencedSlices(); | |
717 | |
718 return result.release(); | |
719 } | |
720 | |
721 | |
722 bool DicomStructureSet::ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons, | 680 bool DicomStructureSet::ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons, |
723 Structure& structure, | 681 Structure& structure, |
724 const CoordinateSystem3D& slice) | 682 const CoordinateSystem3D& slice) |
725 { | 683 { |
726 polygons.clear(); | 684 polygons.clear(); |