sdk-team 5 лет назад
Родитель
Сommit
d5c4d3d92a

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2021-03-03 Version: patch
+- Update ScreenChestCT.
+
 2021-03-02 Version: patch
 - Update default endpoints.
 

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/CalcCACS.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/ClassifyFNF.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectCovid19Cad.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectHipKeypointXRay.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectKneeKeypointXRay.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectKneeXRay.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectLungNodule.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectRibFracture.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectSkinDisease.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/DetectSpineMRI.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/GetAsyncJobResult.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/RunCTRegistration.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/RunMedQA.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/ScreenChestCT.xml


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
imageprocess/2020-03-20/TranslateMed.xml


+ 3 - 3
imageprocess/include/alibabacloud/imageprocess/model/ScreenChestCTRequest.h

@@ -40,6 +40,8 @@ namespace AlibabaCloud
 				ScreenChestCTRequest();
 				~ScreenChestCTRequest();
 
+				std::string getOrgName()const;
+				void setOrgName(const std::string& orgName);
 				std::string getDataFormat()const;
 				void setDataFormat(const std::string& dataFormat);
 				std::vector<URLList> getURLList()const;
@@ -48,15 +50,13 @@ namespace AlibabaCloud
 				void setOrgId(const std::string& orgId);
 				bool getAsync()const;
 				void setAsync(bool async);
-				std::string getOrgName()const;
-				void setOrgName(const std::string& orgName);
 
             private:
+				std::string orgName_;
 				std::string dataFormat_;
 				std::vector<URLList> uRLList_;
 				std::string orgId_;
 				bool async_;
-				std::string orgName_;
 
 			};
 		}

+ 35 - 15
imageprocess/include/alibabacloud/imageprocess/model/ScreenChestCTResult.h

@@ -34,6 +34,19 @@ namespace AlibabaCloud
 			public:
 				struct Data
 				{
+					struct Covid
+					{
+						std::string newProbability;
+						std::string otherProbability;
+						std::string normalProbability;
+						std::string mask;
+						std::string lesionRatio;
+					};
+					struct CACS
+					{
+						std::string score;
+						std::string resultUrl;
+					};
 					struct LungNodule
 					{
 						struct Serie
@@ -42,13 +55,13 @@ namespace AlibabaCloud
 							{
 								float imageZ;
 								float imageY;
-								std::string lobe;
 								float imageX;
+								std::string lobe;
 								std::string category;
 								std::string lung;
 								float meanValue;
-								float confidence;
 								float volume;
+								float confidence;
 								float x;
 								float y;
 								float z;
@@ -63,34 +76,41 @@ namespace AlibabaCloud
 						};
 						std::vector<Serie> series;
 					};
-					struct CACS
+					struct DetectRibFracture
 					{
-						std::string score;
-						std::string resultUrl;
-					};
-					struct Covid
-					{
-						std::string newProbability;
-						std::string otherProbability;
-						std::string normalProbability;
-						std::string mask;
-						std::string lesionRatio;
+						struct DetectionsItem
+						{
+							long fractureCategory;
+							float fractureConfidence;
+							std::vector<std::string> coordinateImage;
+							std::vector<std::string> coordinates;
+							long fractureId;
+						};
+						std::vector<std::string> origin1;
+						std::vector<std::string> spacing2;
+						std::vector<DetectionsItem> detections;
+						std::string resultURL;
 					};
-					LungNodule lungNodule;
-					CACS cACS;
 					Covid covid;
+					CACS cACS;
+					LungNodule lungNodule;
+					DetectRibFracture detectRibFracture;
 				};
 
 
 				ScreenChestCTResult();
 				explicit ScreenChestCTResult(const std::string &payload);
 				~ScreenChestCTResult();
+				std::string getMessage()const;
 				Data getData()const;
+				std::string getCode()const;
 
 			protected:
 				void parse(const std::string &payload);
 			private:
+				std::string message_;
 				Data data_;
+				std::string code_;
 
 			};
 		}

+ 11 - 11
imageprocess/src/model/ScreenChestCTRequest.cc

@@ -27,6 +27,17 @@ ScreenChestCTRequest::ScreenChestCTRequest() :
 ScreenChestCTRequest::~ScreenChestCTRequest()
 {}
 
+std::string ScreenChestCTRequest::getOrgName()const
+{
+	return orgName_;
+}
+
+void ScreenChestCTRequest::setOrgName(const std::string& orgName)
+{
+	orgName_ = orgName;
+	setBodyParameter("OrgName", orgName);
+}
+
 std::string ScreenChestCTRequest::getDataFormat()const
 {
 	return dataFormat_;
@@ -75,14 +86,3 @@ void ScreenChestCTRequest::setAsync(bool async)
 	setBodyParameter("Async", async ? "true" : "false");
 }
 
-std::string ScreenChestCTRequest::getOrgName()const
-{
-	return orgName_;
-}
-
-void ScreenChestCTRequest::setOrgName(const std::string& orgName)
-{
-	orgName_ = orgName;
-	setBodyParameter("OrgName", orgName);
-}
-

+ 77 - 36
imageprocess/src/model/ScreenChestCTResult.cc

@@ -40,47 +40,63 @@ void ScreenChestCTResult::parse(const std::string &payload)
 	reader.parse(payload, value);
 	setRequestId(value["RequestId"].asString());
 	auto dataNode = value["Data"];
+	auto covidNode = dataNode["Covid"];
+	if(!covidNode["NewProbability"].isNull())
+		data_.covid.newProbability = covidNode["NewProbability"].asString();
+	if(!covidNode["OtherProbability"].isNull())
+		data_.covid.otherProbability = covidNode["OtherProbability"].asString();
+	if(!covidNode["NormalProbability"].isNull())
+		data_.covid.normalProbability = covidNode["NormalProbability"].asString();
+	if(!covidNode["Mask"].isNull())
+		data_.covid.mask = covidNode["Mask"].asString();
+	if(!covidNode["LesionRatio"].isNull())
+		data_.covid.lesionRatio = covidNode["LesionRatio"].asString();
+	auto cACSNode = dataNode["CACS"];
+	if(!cACSNode["Score"].isNull())
+		data_.cACS.score = cACSNode["Score"].asString();
+	if(!cACSNode["ResultUrl"].isNull())
+		data_.cACS.resultUrl = cACSNode["ResultUrl"].asString();
 	auto lungNoduleNode = dataNode["LungNodule"];
 	auto allSeriesNode = lungNoduleNode["Series"]["Serie"];
 	for (auto lungNoduleNodeSeriesSerie : allSeriesNode)
 	{
 		Data::LungNodule::Serie serieObject;
-		if(!lungNoduleNodeSeriesSerie["SeriesInstanceUid"].isNull())
-			serieObject.seriesInstanceUid = lungNoduleNodeSeriesSerie["SeriesInstanceUid"].asString();
 		if(!lungNoduleNodeSeriesSerie["Report"].isNull())
 			serieObject.report = lungNoduleNodeSeriesSerie["Report"].asString();
+		if(!lungNoduleNodeSeriesSerie["SeriesInstanceUid"].isNull())
+			serieObject.seriesInstanceUid = lungNoduleNodeSeriesSerie["SeriesInstanceUid"].asString();
 		auto allElementsNode = lungNoduleNodeSeriesSerie["Elements"]["Element"];
 		for (auto lungNoduleNodeSeriesSerieElementsElement : allElementsNode)
 		{
 			Data::LungNodule::Serie::Element elementsObject;
-			if(!lungNoduleNodeSeriesSerieElementsElement["Category"].isNull())
-				elementsObject.category = lungNoduleNodeSeriesSerieElementsElement["Category"].asString();
-			if(!lungNoduleNodeSeriesSerieElementsElement["Confidence"].isNull())
-				elementsObject.confidence = std::stof(lungNoduleNodeSeriesSerieElementsElement["Confidence"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["Diameter"].isNull())
-				elementsObject.diameter = std::stof(lungNoduleNodeSeriesSerieElementsElement["Diameter"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["ImageZ"].isNull())
+				elementsObject.imageZ = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageZ"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["ImageY"].isNull())
+				elementsObject.imageY = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageY"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["ImageX"].isNull())
+				elementsObject.imageX = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageX"].asString());
 			if(!lungNoduleNodeSeriesSerieElementsElement["Lobe"].isNull())
 				elementsObject.lobe = lungNoduleNodeSeriesSerieElementsElement["Lobe"].asString();
+			if(!lungNoduleNodeSeriesSerieElementsElement["Category"].isNull())
+				elementsObject.category = lungNoduleNodeSeriesSerieElementsElement["Category"].asString();
 			if(!lungNoduleNodeSeriesSerieElementsElement["Lung"].isNull())
 				elementsObject.lung = lungNoduleNodeSeriesSerieElementsElement["Lung"].asString();
+			if(!lungNoduleNodeSeriesSerieElementsElement["MeanValue"].isNull())
+				elementsObject.meanValue = std::stof(lungNoduleNodeSeriesSerieElementsElement["MeanValue"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["Volume"].isNull())
+				elementsObject.volume = std::stof(lungNoduleNodeSeriesSerieElementsElement["Volume"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["Confidence"].isNull())
+				elementsObject.confidence = std::stof(lungNoduleNodeSeriesSerieElementsElement["Confidence"].asString());
 			if(!lungNoduleNodeSeriesSerieElementsElement["X"].isNull())
 				elementsObject.x = std::stof(lungNoduleNodeSeriesSerieElementsElement["X"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["Z"].isNull())
-				elementsObject.z = std::stof(lungNoduleNodeSeriesSerieElementsElement["Z"].asString());
 			if(!lungNoduleNodeSeriesSerieElementsElement["Y"].isNull())
 				elementsObject.y = std::stof(lungNoduleNodeSeriesSerieElementsElement["Y"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["ImageX"].isNull())
-				elementsObject.imageX = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageX"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["ImageY"].isNull())
-				elementsObject.imageY = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageY"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["ImageZ"].isNull())
-				elementsObject.imageZ = std::stof(lungNoduleNodeSeriesSerieElementsElement["ImageZ"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["Z"].isNull())
+				elementsObject.z = std::stof(lungNoduleNodeSeriesSerieElementsElement["Z"].asString());
 			if(!lungNoduleNodeSeriesSerieElementsElement["SOPInstanceUID"].isNull())
 				elementsObject.sOPInstanceUID = lungNoduleNodeSeriesSerieElementsElement["SOPInstanceUID"].asString();
-			if(!lungNoduleNodeSeriesSerieElementsElement["Volume"].isNull())
-				elementsObject.volume = std::stof(lungNoduleNodeSeriesSerieElementsElement["Volume"].asString());
-			if(!lungNoduleNodeSeriesSerieElementsElement["MeanValue"].isNull())
-				elementsObject.meanValue = std::stof(lungNoduleNodeSeriesSerieElementsElement["MeanValue"].asString());
+			if(!lungNoduleNodeSeriesSerieElementsElement["Diameter"].isNull())
+				elementsObject.diameter = std::stof(lungNoduleNodeSeriesSerieElementsElement["Diameter"].asString());
 			serieObject.elements.push_back(elementsObject);
 		}
 		auto allOrigin = value["Origin"]["Origin"];
@@ -91,23 +107,43 @@ void ScreenChestCTResult::parse(const std::string &payload)
 			serieObject.spacing.push_back(value.asString());
 		data_.lungNodule.series.push_back(serieObject);
 	}
-	auto cACSNode = dataNode["CACS"];
-	if(!cACSNode["Score"].isNull())
-		data_.cACS.score = cACSNode["Score"].asString();
-	if(!cACSNode["ResultUrl"].isNull())
-		data_.cACS.resultUrl = cACSNode["ResultUrl"].asString();
-	auto covidNode = dataNode["Covid"];
-	if(!covidNode["NewProbability"].isNull())
-		data_.covid.newProbability = covidNode["NewProbability"].asString();
-	if(!covidNode["NormalProbability"].isNull())
-		data_.covid.normalProbability = covidNode["NormalProbability"].asString();
-	if(!covidNode["OtherProbability"].isNull())
-		data_.covid.otherProbability = covidNode["OtherProbability"].asString();
-	if(!covidNode["LesionRatio"].isNull())
-		data_.covid.lesionRatio = covidNode["LesionRatio"].asString();
-	if(!covidNode["Mask"].isNull())
-		data_.covid.mask = covidNode["Mask"].asString();
+	auto detectRibFractureNode = dataNode["DetectRibFracture"];
+	if(!detectRibFractureNode["ResultURL"].isNull())
+		data_.detectRibFracture.resultURL = detectRibFractureNode["ResultURL"].asString();
+	auto allDetectionsNode = detectRibFractureNode["Detections"]["DetectionsItem"];
+	for (auto detectRibFractureNodeDetectionsDetectionsItem : allDetectionsNode)
+	{
+		Data::DetectRibFracture::DetectionsItem detectionsItemObject;
+		if(!detectRibFractureNodeDetectionsDetectionsItem["FractureCategory"].isNull())
+			detectionsItemObject.fractureCategory = std::stol(detectRibFractureNodeDetectionsDetectionsItem["FractureCategory"].asString());
+		if(!detectRibFractureNodeDetectionsDetectionsItem["FractureConfidence"].isNull())
+			detectionsItemObject.fractureConfidence = std::stof(detectRibFractureNodeDetectionsDetectionsItem["FractureConfidence"].asString());
+		if(!detectRibFractureNodeDetectionsDetectionsItem["FractureId"].isNull())
+			detectionsItemObject.fractureId = std::stol(detectRibFractureNodeDetectionsDetectionsItem["FractureId"].asString());
+		auto allCoordinateImage = value["CoordinateImage"]["CoordinateImage"];
+		for (auto value : allCoordinateImage)
+			detectionsItemObject.coordinateImage.push_back(value.asString());
+		auto allCoordinates = value["Coordinates"]["Coordinates"];
+		for (auto value : allCoordinates)
+			detectionsItemObject.coordinates.push_back(value.asString());
+		data_.detectRibFracture.detections.push_back(detectionsItemObject);
+	}
+		auto allOrigin1 = detectRibFractureNode["Origin"]["Origin"];
+		for (auto value : allOrigin1)
+			data_.detectRibFracture.origin1.push_back(value.asString());
+		auto allSpacing2 = detectRibFractureNode["Spacing"]["Spacing"];
+		for (auto value : allSpacing2)
+			data_.detectRibFracture.spacing2.push_back(value.asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+
+}
 
+std::string ScreenChestCTResult::getMessage()const
+{
+	return message_;
 }
 
 ScreenChestCTResult::Data ScreenChestCTResult::getData()const
@@ -115,3 +151,8 @@ ScreenChestCTResult::Data ScreenChestCTResult::getData()const
 	return data_;
 }
 
+std::string ScreenChestCTResult::getCode()const
+{
+	return code_;
+}
+

+ 1 - 0
imageprocess/version-2020-03-20.xml

@@ -0,0 +1 @@
+<?xml version='1.0' encoding='UTF-8'?><Version product="imageprocess" apiStyle="RPC" name="2020-03-20" isolationType="outer"><ErrorMapping exceptionExpress=""><ErrorCodes /></ErrorMapping><Apis><Api name="DetectRibFracture" /><Api name="ScreenChestCT" /><Api name="DetectSkinDisease" /><Api name="RunMedQA" /><Api name="DetectKneeKeypointXRay" /><Api name="ClassifyFNF" /><Api name="RunCTRegistration" /><Api name="DetectHipKeypointXRay" /><Api name="CalcCACS" /><Api name="DetectKneeXRay" /><Api name="DetectSpineMRI" /><Api name="TranslateMed" /><Api name="DetectLungNodule" /><Api name="DetectCovid19Cad" /><Api name="GetAsyncJobResult" /></Apis></Version>

Некоторые файлы не были показаны из-за большого количества измененных файлов