|
@@ -213,7 +213,7 @@ namespace WingAIDiagnosisService.Service
|
|
|
{
|
|
|
public int Index { get; set; }
|
|
|
|
|
|
- public AIDiagResultPerImg ImageDiagResult { get; set; }
|
|
|
+ public AIDiagnosisPerImageModel ImageDiagResult { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -257,19 +257,87 @@ namespace WingAIDiagnosisService.Service
|
|
|
var createTime = request.CreateTime;
|
|
|
var upateTime = request.UpdateTime;
|
|
|
//乳腺、肝脏
|
|
|
- var settings = new JsonSerializerSettings
|
|
|
+ // var settings = new JsonSerializerSettings
|
|
|
+ // {
|
|
|
+ // Converters = new List<JsonConverter> { new DescriptionConverter() }
|
|
|
+ // };
|
|
|
+ var aiDiagResultPerImgList = JsonConvert.DeserializeObject<List<TempAIResult>>(aiResult);
|
|
|
+ foreach (var item in aiDiagResultPerImgList)
|
|
|
{
|
|
|
- Converters = new List<JsonConverter> { new DescriptionConverter() }
|
|
|
- };
|
|
|
- var aiDiagResultPerImgList = JsonConvert.DeserializeObject<List<TempAIResult>>(aiResult, settings);
|
|
|
- var results = aiDiagResultPerImgList.ToDictionary(x => x.Index);
|
|
|
- //AI实体有很多参数仅支持get,为了方便后续反序列化,db入库前先做个转换
|
|
|
- var diagnosisPerImages = results.Select(x => new AIDiagnosisPerImageModel(x.Key, x.Value.ImageDiagResult, 1)).ToList();
|
|
|
- var organs = GetDiagnosisOrgans(diagnosisPerImages);
|
|
|
+ item.ImageDiagResult.Index = item.Index;
|
|
|
+ }
|
|
|
+ var diagnosisPerImages = aiDiagResultPerImgList.Select(x => x.ImageDiagResult)?.ToList() ?? new List<AIDiagnosisPerImageModel>();
|
|
|
+ foreach (var perImage in diagnosisPerImages)
|
|
|
+ {
|
|
|
+ foreach (var perOrgan in perImage.DiagResultsForEachOrgan)
|
|
|
+ {
|
|
|
+ var detectedObjects = new List<WingAIDiagnosisService.Manage.AIDetectedObject>();
|
|
|
+ foreach (var perDetectedObject in perOrgan.DetectedObjects)
|
|
|
+ {
|
|
|
+ if (perDetectedObject.Descriptions != null && perDetectedObject.Descriptions.Any())
|
|
|
+ {
|
|
|
+ foreach (var item in perDetectedObject.Descriptions)
|
|
|
+ {
|
|
|
+ item.Type = item.DescriptionType;
|
|
|
+ item.Value = item.DescriptionValue;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ detectedObjects.Add(perDetectedObject);
|
|
|
+ }
|
|
|
+ perOrgan.DetectedObjects = detectedObjects;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var organs = GetDiagnosisOrgans(diagnosisPerImages);
|
|
|
await AddDiagnosisResultInfosAsync(relationCode, fileUrl, diagnosisPerImages, createTime, upateTime, false);
|
|
|
//轮廓线分隔处理
|
|
|
- diagnosisPerImages = results.Select(x => new AIDiagnosisPerImageModel(x.Key, x.Value.ImageDiagResult, _contourInterval)).ToList();
|
|
|
+ foreach (var perImage in diagnosisPerImages)
|
|
|
+ {
|
|
|
+ foreach (var perOrgan in perImage.DiagResultsForEachOrgan)
|
|
|
+ {
|
|
|
+ var organContours = new List<WingAIDiagnosisService.Manage.AIDiagnosisPoint2D>();
|
|
|
+ if (perOrgan.OrganContour != null && perOrgan.OrganContour.Count > 0)
|
|
|
+ {
|
|
|
+ var coutours = perOrgan.OrganContour;
|
|
|
+ if (coutours != null && coutours.Count > 0)
|
|
|
+ {
|
|
|
+ for (var i = 0; i < coutours.Count; i++)
|
|
|
+ {
|
|
|
+ if (i % _contourInterval == 0)
|
|
|
+ {
|
|
|
+ organContours.Add(coutours[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ perOrgan.OrganContours = organContours;
|
|
|
+ perOrgan.OrganContour = new List<Manage.AIDiagnosisPoint2D>();
|
|
|
+ var detectedObjects = new List<WingAIDiagnosisService.Manage.AIDetectedObject>();
|
|
|
+ foreach (var perDetectedObject in perOrgan.DetectedObjects)
|
|
|
+ {
|
|
|
+ var contours = new List<WingAIDiagnosisService.Manage.AIDiagnosisPoint2D>();
|
|
|
+ if (perDetectedObject.Contour != null && perDetectedObject.Contour.Count > 0)
|
|
|
+ {
|
|
|
+ var coutours = perDetectedObject.Contour;
|
|
|
+ if (coutours != null && coutours.Count > 0)
|
|
|
+ {
|
|
|
+ for (var i = 0; i < coutours.Count; i++)
|
|
|
+ {
|
|
|
+ if (i % _contourInterval == 0)
|
|
|
+ {
|
|
|
+ contours.Add(coutours[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ perDetectedObject.Contours = contours;
|
|
|
+ perDetectedObject.Contour = new List<Manage.AIDiagnosisPoint2D>();
|
|
|
+
|
|
|
+ detectedObjects.Add(perDetectedObject);
|
|
|
+ }
|
|
|
+ perOrgan.DetectedObjects = detectedObjects;
|
|
|
+ }
|
|
|
+ }
|
|
|
var diagnosisResult = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AIDiagnosisPerImageDTO>>(Newtonsoft.Json.JsonConvert.SerializeObject(diagnosisPerImages));
|
|
|
var resultData = new DiagnosisImageResult()
|
|
|
{
|