Compare commits
20 Commits
Uat_IRC_Ne
...
Test_IRC_N
| Author | SHA1 | Date |
|---|---|---|
|
|
96fd034c5a | |
|
|
6118e0a4f8 | |
|
|
c00d1fb89c | |
|
|
900f4dfb64 | |
|
|
11f8c9ca56 | |
|
|
026f63c730 | |
|
|
e322952ff4 | |
|
|
e762da2bf5 | |
|
|
822a4331aa | |
|
|
2b2ba2a551 | |
|
|
317fbc2ea7 | |
|
|
0cd9d666c1 | |
|
|
187ea3b92f | |
|
|
d2beb399dd | |
|
|
15623ab515 | |
|
|
f771a23c2a | |
|
|
f20b8708a3 | |
|
|
536ed731ed | |
|
|
5b10619460 | |
|
|
311ac85419 |
|
|
@ -63,8 +63,8 @@
|
|||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=106.14.89.110,1435;Database=Test_Rayplus;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=106.14.89.110,1435;Database=Test_Rayplus_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
},
|
||||
"DicomSCPServiceConfig": {
|
||||
"CalledAEList": [
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<Company>上海展影医疗科技有限公司</Company>
|
||||
<Product>IRC影像系统 (EICS)</Product>
|
||||
<Copyright>上海展影医疗科技有限公司版权所有</Copyright>
|
||||
<NoWarn>$(NoWarn);NU1903</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
|
|
|||
|
|
@ -25,6 +25,15 @@
|
|||
},
|
||||
"applicationUrl": "http://0.0.0.0:6100"
|
||||
},
|
||||
"IRaCIS.Test_Rayplus": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Test_Rayplus",
|
||||
"ASPNETCORE_OpenSwagger": "true"
|
||||
},
|
||||
"applicationUrl": "http://0.0.0.0:6100"
|
||||
},
|
||||
"IRaCIS.Test_IRC_PGSQL": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
"ConnectionStrings": {
|
||||
//"RemoteNew": "Server=10.10.10.49,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
//"Hangfire": "Server=10.10.10.49,1434;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=101.132.193.237,1433;Database=Prod_IRC_pidr_restore_2;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
},
|
||||
"WeComNoticeConfig": {
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=101.132.253.119,1435;Database=Uat_Rayplus;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=101.132.253.119,1435;Database=Uat_Rayplus_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
},
|
||||
"WeComNoticeConfig": {
|
||||
"IsOpenWeComNotice": true,
|
||||
|
|
@ -110,9 +110,9 @@
|
|||
"Imap": "imap.qiye.aliyun.com",
|
||||
"ImapPort": 993,
|
||||
"FromEmail": "irc@mail.rayplus.net",
|
||||
"FromName": "Uat RayPlus Imaging System",
|
||||
"FromName": "RayPlus Imaging System",
|
||||
"AuthorizationCode": "QWE1zxcv7632",
|
||||
"SiteUrl": "https://irc.uat.rayplus.net/login",
|
||||
"SiteUrl": "https://irc.rayplus.net/login",
|
||||
|
||||
"PlatformName": "RayPlus",
|
||||
"PlatformNameCN": "睿佳影像云平台",
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
|
||||
"SystemPacsConfig": {
|
||||
"Port": "11113",
|
||||
"IP": "101.132.253.119"
|
||||
"IP": "47.117.165.18"
|
||||
},
|
||||
"RequestDuplicationOptions": {
|
||||
"IsEnabled": true,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
|
|||
{
|
||||
using Database.Api;
|
||||
using DocumentFormat.OpenXml.InkML;
|
||||
using global::MassTransit;
|
||||
using IRaCIS.Core.Application.Helper.OtherTool;
|
||||
using IRaCIS.Core.Application.Service.Common;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
|
|
@ -95,9 +96,11 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
|
|||
{
|
||||
var requestPath = accessor?.HttpContext?.Request?.Path.ToString() ?? string.Empty;
|
||||
|
||||
var httpMethod = accessor?.HttpContext?.Request?.Method?.ToUpper() ?? string.Empty;
|
||||
|
||||
// 验证请求频繁情况
|
||||
if (
|
||||
//requestPath == "/ReadingImageTask/changeDicomReadingQuestionAnswer"&&
|
||||
!httpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase) &&
|
||||
|
||||
!requestPath
|
||||
.Split("/", StringSplitOptions.RemoveEmptyEntries)
|
||||
|
|
@ -122,7 +125,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
|
|||
{
|
||||
SendRequestDuplicationWeComNotice(requestPath);
|
||||
logger.LogError($"重复请求出现错误:{this.Intoparam}");
|
||||
throw new BusinessValidationFailedException(_localizer["RequestDuplicationFilter_RequestDuplication"], ApiResponseCodeEnum.BusinessValidationFailed);
|
||||
throw new BusinessValidationFailedException(_localizer["RequestDuplicationFilter_RequestDuplication"], ApiResponseCodeEnum.NotRemind);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -140,7 +143,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
|
|||
var uri = new Uri(_config["SystemEmailSendConfig:SiteUrl"]);
|
||||
var baseUrl = uri.GetLeftPart(UriPartial.Authority);
|
||||
|
||||
var userList = _config.GetSection("WeComNoticeConfig:APINoticeUserList").Get<string[]>();
|
||||
var userList = _config.GetSection("WeComNoticeConfig:VueNoticeUserList").Get<string[]>();
|
||||
|
||||
var request = accessor?.HttpContext?.Request;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
<OutputPath>..\bin\</OutputPath>
|
||||
<DocumentationFile>.\IRaCIS.Core.Application.xml</DocumentationFile>
|
||||
<NoWarn>1701;1702;1591</NoWarn>
|
||||
<NoWarn>$(NoWarn);NU1903</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
|
|
|
|||
|
|
@ -2940,7 +2940,7 @@
|
|||
<param name="modality"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.DownloadImageSuccess(System.Guid)">
|
||||
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.DownloadImageSuccess(System.Guid,System.Nullable{System.Guid})">
|
||||
<summary>
|
||||
影像下载成功回调
|
||||
</summary>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.MassTransit.Command
|
|||
|
||||
//[Required(ErrorMessage = "受试者筛选号不能为空")]
|
||||
//[ImporterHeader(Name = "Subject ID", AutoTrim = true)]
|
||||
[ExcelColumnName("Subject ID")]
|
||||
[ExcelColumnName("Participant ID")]
|
||||
public string SubjectCode { get; set; } = string.Empty;
|
||||
|
||||
//[Required(ErrorMessage = "访视名称不能为空")]
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
{
|
||||
//subject 随机阅片 或者无序 有上传 才处理任务编号
|
||||
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId &&
|
||||
(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom
|
||||
(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom
|
||||
//||(t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.Random && t.TrialReadingCriterion.ImageDownloadEnum != ReadingImageDownload.None)
|
||||
)))
|
||||
{
|
||||
|
|
@ -119,6 +119,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
|
||||
var subjectCode = string.Empty;
|
||||
var subjectId = inQuery.SubjectId;
|
||||
bool? isIRImageDownloaded = null;
|
||||
|
||||
if(inQuery.VisitTaskId != null)
|
||||
{
|
||||
isIRImageDownloaded= _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId).Select(t => t.IsIRImageDownloaded).FirstOrDefault();
|
||||
}
|
||||
|
||||
if (criterionInfo.IsReadingTaskViewInOrder == ReadingOrder.Random)
|
||||
{
|
||||
|
|
@ -325,7 +331,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
}
|
||||
|
||||
|
||||
return ResponseOutput.Ok(list, new { TrialModality = criterionInfo.Modalitys , IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder });
|
||||
return ResponseOutput.Ok(list, new { TrialModality = criterionInfo.Modalitys, IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder, IsIRImageDownloaded= isIRImageDownloaded });
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -899,6 +905,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
var subjectCode = inQuery.SubjectCode;
|
||||
var subjectId = inQuery.SubjectId;
|
||||
var doctorUserId = _userInfo.UserRoleId;
|
||||
bool? isIRImageDownloaded = null;
|
||||
|
||||
if (inQuery.VisitTaskId != null)
|
||||
{
|
||||
|
|
@ -910,18 +917,20 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
SubjectCode = t.IsAnalysisCreate ? t.BlindSubjectCode : t.Subject.Code,
|
||||
SubjectId = t.SubjectId,
|
||||
t.DoctorUserId,
|
||||
t.IsAnalysisCreate
|
||||
t.IsAnalysisCreate,
|
||||
t.IsIRImageDownloaded,
|
||||
}).FirstNotNullAsync();
|
||||
|
||||
subjectId = taskInfo.SubjectId;
|
||||
subjectCode = taskInfo.SubjectCode;
|
||||
doctorUserId = (Guid)taskInfo.DoctorUserId!;
|
||||
isIRImageDownloaded = taskInfo.IsIRImageDownloaded;
|
||||
}
|
||||
|
||||
var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId)
|
||||
.Select(t => new { t.IsImageFilter, t.CriterionType, t.TrialId, t.CriterionModalitys, t.IsReadingTaskViewInOrder }).FirstNotNullAsync();
|
||||
|
||||
var config = await _subjectRepository.Where(t => t.Id == subjectId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName }).FirstOrDefaultAsync();
|
||||
var config = await _subjectRepository.Where(t => t.Id == subjectId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName, IsIRImageDownloaded= isIRImageDownloaded }).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
//靶段标注上传,查看访视级别,上传绑定访视级别
|
||||
|
|
@ -1875,10 +1884,15 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
|||
/// </summary>
|
||||
/// <param name="trialImageDownloadId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<IResponseOutput> DownloadImageSuccess(Guid trialImageDownloadId)
|
||||
public async Task<IResponseOutput> DownloadImageSuccess(Guid trialImageDownloadId, Guid? visitTaskId)
|
||||
{
|
||||
await _trialImageDownloadRepository.UpdatePartialFromQueryAsync(t => t.Id == trialImageDownloadId, u => new TrialImageDownload()
|
||||
{ DownloadEndTime = DateTime.Now, IsSuccess = true }, true);
|
||||
|
||||
if (visitTaskId != null)
|
||||
{
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.Id == visitTaskId.Value, u => new VisitTask() { IsIRImageDownloaded = true });
|
||||
}
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -238,6 +238,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
return this.Emm - this.Lumen;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 斑块破裂
|
||||
/// </summary>
|
||||
public string PlaqueRupture { get; set; }
|
||||
}
|
||||
|
||||
public class TemplateData
|
||||
|
|
@ -300,6 +305,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
/// </summary>
|
||||
public decimal? LipidAngle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 斑块破裂
|
||||
/// </summary>
|
||||
public string PlaqueRupture { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 斑块愈合
|
||||
/// </summary>
|
||||
public string PlaqueHealing { get; set; }
|
||||
|
||||
|
||||
public decimal? Avg
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1546,6 +1546,20 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public QuestionClassify? QuestionClassify { get; set; }
|
||||
}
|
||||
|
||||
public class GetFilterTableQuestionInDto
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 问题分类
|
||||
/// </summary>
|
||||
public QuestionClassify? QuestionClassify { get; set; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
public class GetHistoryGlobalInfoOutDto
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1401,6 +1401,38 @@ namespace IRaCIS.Core.Application.Service
|
|||
}); ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取单个表格问题及答案 过滤问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> GetFilterTableQuestion(GetFilterTableQuestionInDto inDto)
|
||||
{
|
||||
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var tableAnswers = await _readingTableQuestionAnswerRepository
|
||||
.ProjectTo<ReadingTableQuestionAnswerInfo>(_mapper.ConfigurationProvider)
|
||||
.Where(x => x.VisitTaskId == inDto.VisitTaskId).ToListAsync();
|
||||
var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo<TableAnsweRowInfo>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
var organIds = tableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList();
|
||||
var organList = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync();
|
||||
var questionPage = await GetReadingTableQuestion(
|
||||
new GetReadingTableQuestionOrAnswerInDto()
|
||||
{
|
||||
TrialReadingCriterionId = taskinfo.TrialReadingCriterionId,
|
||||
TaskId = inDto.VisitTaskId,
|
||||
TableAnswers = tableAnswers,
|
||||
TableAnsweRowInfos = tableAnsweRowInfos,
|
||||
OrganInfos = organList,
|
||||
QuestionClassify = inDto.QuestionClassify,
|
||||
});
|
||||
|
||||
|
||||
var result = questionPage.SinglePage.SelectMany(x => x.Childrens).Where(x => x.Id == inDto.QuestionId).FirstOrDefault();
|
||||
|
||||
return ResponseOutput.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取自定义问题以及答案
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -298,10 +298,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
//new ReadingCalculateData (){QuestionType=QuestionType.Plaque3PVA,GetDecimalNullFun=GetPlaque3PVA},
|
||||
|
||||
|
||||
// (EEM-Lumen)求和
|
||||
// 获取EMM求和
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.EEMSum,GetDecimalNullFun=GetEmmSum},
|
||||
|
||||
// 斑块2-PAV
|
||||
// (EEM-Lumen)求和
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.EEMSubLumenSum,GetDecimalNullFun=GetEEMLumenSum},
|
||||
|
||||
// PAV(冠状动脉粥样硬化体积百分比)
|
||||
|
|
@ -494,6 +494,30 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
}
|
||||
|
||||
string getNone(string value)
|
||||
{
|
||||
if (value == string.Empty || value == null)
|
||||
{
|
||||
return "无";
|
||||
}
|
||||
else
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Dictionary<string, string> isPresent = new Dictionary<string, string>()
|
||||
{
|
||||
{ "有","1"},
|
||||
{ "无","0"},
|
||||
{ "Existence","1"},
|
||||
{ "Non-existence","0"},
|
||||
{ string.Empty,string.Empty},
|
||||
};
|
||||
|
||||
|
||||
List<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>();
|
||||
var errorRow = new List<int> { };
|
||||
|
||||
|
|
@ -502,12 +526,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
IVUSMeasuredValue iVUSMeasuredValue = new IVUSMeasuredValue() { };
|
||||
try
|
||||
{
|
||||
// 手动抛出异常进入catch
|
||||
if (dataTable.Rows[i]["D"].ToString().IsNullOrEmpty())
|
||||
{
|
||||
throw new InvalidOperationException("NullError");
|
||||
}
|
||||
|
||||
iVUSMeasuredValue = new IVUSMeasuredValue()
|
||||
{
|
||||
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
|
||||
FrameNumber = dataTable.Rows[i]["A"].ToString()??string.Empty,
|
||||
Emm = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
|
||||
Lumen = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
|
||||
PlaqueRupture= getNone(dataTable.Rows[i]["D"].ToString()),
|
||||
};
|
||||
}
|
||||
catch (Exception)
|
||||
|
|
@ -623,6 +654,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.ElasticAreaDiffValue).Select(x => x.Id).FirstOrDefault(),
|
||||
});
|
||||
|
||||
// 斑块破裂
|
||||
tableAnswers.Add(new ReadingTableQuestionAnswer()
|
||||
{
|
||||
Answer = isPresent[item.PlaqueRupture.ToString()],
|
||||
QuestionId = questionInfo.Id,
|
||||
TrialId = taskinfo.TrialId,
|
||||
VisitTaskId = taskinfo.Id,
|
||||
RowId = newRowId,
|
||||
RowIndex = maxnum,
|
||||
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueRupture).Select(x => x.Id).FirstOrDefault(),
|
||||
});
|
||||
|
||||
|
||||
// 添加其他问题答案
|
||||
foreach (var otherQuestion in tableQuestionList.Where(x => !tableAnswers.Any(y => y.TableQuestionId == x.Id && y.RowId == newRowId)))
|
||||
|
|
|
|||
|
|
@ -351,19 +351,29 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
try
|
||||
{
|
||||
|
||||
// 手动抛出异常进入catch
|
||||
if (dataTable.Rows[i]["K"].ToString().IsNullOrEmpty()|| dataTable.Rows[i]["L"].ToString().IsNullOrEmpty())
|
||||
{
|
||||
throw new InvalidOperationException("NullError");
|
||||
}
|
||||
|
||||
measuredValueList.Add(new OCTFCTUploadData()
|
||||
{
|
||||
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
|
||||
FrameNumber = dataTable.Rows[i]["A"].ToString() ?? string.Empty,
|
||||
FirstData = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
|
||||
SecondData = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
|
||||
ThirdData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()),
|
||||
MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["E"].ToString()),
|
||||
MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString() ?? string.Empty),
|
||||
LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
|
||||
LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString() ?? string.Empty),
|
||||
FirstData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()),
|
||||
SecondData = getdecimalEmptyData(dataTable.Rows[i]["E"].ToString()),
|
||||
ThirdData = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString()),
|
||||
MicrochannelMeasurement = getNone(dataTable.Rows[i]["G"].ToString()),
|
||||
CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["H"].ToString()),
|
||||
LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString()),
|
||||
LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["J"].ToString() ?? string.Empty),
|
||||
MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["I"].ToString()),
|
||||
MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["J"].ToString() ?? string.Empty),
|
||||
PlaqueRupture = getNone(dataTable.Rows[i]["K"].ToString()),
|
||||
PlaqueHealing = getNone(dataTable.Rows[i]["L"].ToString()),
|
||||
|
||||
});
|
||||
}
|
||||
catch (Exception)
|
||||
|
|
@ -598,6 +608,30 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.LipidAngle).Select(x => x.Id).FirstOrDefault(),
|
||||
});
|
||||
|
||||
// 斑块破裂
|
||||
tableAnswers.Add(new ReadingTableQuestionAnswer()
|
||||
{
|
||||
Answer = isPresent[item.PlaqueRupture.ToString()],
|
||||
QuestionId = questionInfo.Id,
|
||||
TrialId = taskinfo.TrialId,
|
||||
VisitTaskId = taskinfo.Id,
|
||||
RowId = newRowId,
|
||||
RowIndex = maxnum,
|
||||
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueRupture).Select(x => x.Id).FirstOrDefault(),
|
||||
});
|
||||
|
||||
// 斑块愈合
|
||||
tableAnswers.Add(new ReadingTableQuestionAnswer()
|
||||
{
|
||||
Answer = isPresent[item.PlaqueHealing.ToString()],
|
||||
QuestionId = questionInfo.Id,
|
||||
TrialId = taskinfo.TrialId,
|
||||
VisitTaskId = taskinfo.Id,
|
||||
RowId = newRowId,
|
||||
RowIndex = maxnum,
|
||||
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.PlaqueHealing).Select(x => x.Id).FirstOrDefault(),
|
||||
});
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2518,6 +2518,16 @@ namespace IRaCIS.Core.Domain.Share
|
|||
/// </summary>
|
||||
FrameNumber =1032,
|
||||
|
||||
/// <summary>
|
||||
/// 斑块破裂
|
||||
/// </summary>
|
||||
PlaqueRupture = 1033,
|
||||
|
||||
/// <summary>
|
||||
/// 斑块愈合
|
||||
/// </summary>
|
||||
PlaqueHealing = 1034,
|
||||
|
||||
/// <summary>
|
||||
/// 第一次测量
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -324,4 +324,10 @@ public class VisitTask : BaseFullAuditEntity
|
|||
|
||||
#endregion
|
||||
|
||||
#region 支持控制IR 下载影像
|
||||
|
||||
public bool? IsIRImageDownloaded { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<OutputPath>..\bin</OutputPath>
|
||||
<NoWarn>$(NoWarn);NU1903</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
return string.Empty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (answerType == "upload")
|
||||
|
|
@ -144,7 +144,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
transList.Add(item + string.Empty + unitDataList.Where(y => y.Unit == unit).Select(x => x.UnitName).FirstIsNullReturnEmpty());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
return string.Join(",", transList);
|
||||
|
|
@ -1979,7 +1979,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
await InsertInspection<Subject>(entity, type, x => new InspectionConvertDTO()
|
||||
{
|
||||
SubjectId = x.Id,
|
||||
Reason= entity.SuspendReason,
|
||||
Reason = entity.SuspendReason,
|
||||
TrialSiteId = x.TrialSiteId,
|
||||
|
||||
//项目的信息 找离的最近的项目稽查信息
|
||||
|
|
@ -2447,6 +2447,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
Reason = reason,
|
||||
ExtraIndentification = extraIdentification,
|
||||
|
||||
SubjectVisitId = entity.SourceSubjectVisitId,
|
||||
|
||||
ObjectRelationParentId = entity.SourceSubjectVisitId != null ? entity.SourceSubjectVisitId : entity.SouceReadModuleId,
|
||||
|
||||
ObjectRelationParentId2 = entity.DoctorUserId,
|
||||
|
|
@ -2477,7 +2479,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
break;
|
||||
case "Study/amendmentPatientInfo":
|
||||
reason=entity.Reason;
|
||||
reason = entity.Reason;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -2578,7 +2580,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
if (entity.VisitTaskId != null)
|
||||
{
|
||||
extraIdentification = "/VisitTask";
|
||||
var obj = await _dbContext.VisitTask.FindAsync( entity.VisitTaskId);
|
||||
var obj = await _dbContext.VisitTask.FindAsync(entity.VisitTaskId);
|
||||
armEnum = obj?.ArmEnum;
|
||||
subjectVisitId = obj.SourceSubjectVisitId;
|
||||
}
|
||||
|
|
@ -2598,7 +2600,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
{
|
||||
SubjectVisitId = subjectVisitId,
|
||||
//SubjectId = noneDicomStudy.SubjectId,
|
||||
VisitTaskId= x.VisitTaskId,
|
||||
VisitTaskId = x.VisitTaskId,
|
||||
ObjectRelationParentId = subjectVisitId,
|
||||
ObjectRelationParentId2 = x.NoneDicomStudyId,
|
||||
ObjectRelationParentId3 = x.OriginNoneDicomStudyId,
|
||||
|
|
@ -2821,7 +2823,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
SubjectVisitId = x.IsVisit ? x.ReadingId : null,
|
||||
|
||||
ObjectRelationParentId = entity.ClinicalDataTrialSetId,
|
||||
AuditIdentification= extraIndentification,
|
||||
AuditIdentification = extraIndentification,
|
||||
|
||||
//ObjectRelationParentId2 = x.IsVisit == false?x.ReadingId:null
|
||||
},
|
||||
|
|
@ -3655,7 +3657,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
await InsertInspection<Segment>(entity, type, x => new InspectionConvertDTO()
|
||||
{
|
||||
SubjectId= segmentation != null ? segmentation.SubjectId : null,
|
||||
SubjectId = segmentation != null ? segmentation.SubjectId : null,
|
||||
SubjectVisitId = segmentation != null ? segmentation.SubjectVisitId : null,
|
||||
TrialReadingCriterionId = visitTask != null ? visitTask.TrialReadingCriterionId : null,
|
||||
});
|
||||
|
|
@ -3705,7 +3707,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
}
|
||||
else
|
||||
{
|
||||
var questionAnswer= entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(x => x.Entity as ReadingTaskQuestionAnswer)
|
||||
var questionAnswer = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(x => x.Entity as ReadingTaskQuestionAnswer)
|
||||
.Where(x => x.VisitTaskId == entity.VisitTaskId && x.ReadingQuestionTrialId == entity.QuestionId).FirstOrDefault();
|
||||
|
||||
if (questionAnswer != null)
|
||||
|
|
@ -3734,9 +3736,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
|
||||
|
||||
var segmentation = await _dbContext.Segmentation.Where(x => x.Id == entity.SegmentationId).Include(x=>x.VisitTask).FirstOrDefaultAsync()?? new Segmentation() { };
|
||||
var segmentation = await _dbContext.Segmentation.Where(x => x.Id == entity.SegmentationId).Include(x => x.VisitTask).FirstOrDefaultAsync() ?? new Segmentation() { };
|
||||
|
||||
var segment= await _dbContext.Segment.Where(x => x.Id == entity.SegmentId).FirstOrDefaultAsync()?? new Segment() { };
|
||||
var segment = await _dbContext.Segment.Where(x => x.Id == entity.SegmentId).FirstOrDefaultAsync() ?? new Segment() { };
|
||||
|
||||
var tableQuestionName = await _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync();
|
||||
var questionName = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == entity.QuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync();
|
||||
|
|
@ -3745,15 +3747,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
Guid? trialReadingCriterionId = null;
|
||||
if (segmentation.VisitTask != null)
|
||||
{
|
||||
trialReadingCriterionId= segmentation.VisitTask.TrialReadingCriterionId;
|
||||
trialReadingCriterionId = segmentation.VisitTask.TrialReadingCriterionId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
await InsertInspection<SegmentBinding>(entity, type, x => new InspectionConvertDTO()
|
||||
{
|
||||
TrialReadingCriterionId= trialReadingCriterionId,
|
||||
},new
|
||||
TrialReadingCriterionId = trialReadingCriterionId,
|
||||
}, new
|
||||
{
|
||||
segmentation.SegmentationName,
|
||||
segmentation.SEGUrl,
|
||||
|
|
@ -3783,11 +3785,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
await InsertInspection<ReadingNoneDicomMark>(entity, type, x => new InspectionConvertDTO()
|
||||
{
|
||||
SelfDefineIdentification= selfDefineIdentification + type
|
||||
SelfDefineIdentification = selfDefineIdentification + type
|
||||
|
||||
}, new
|
||||
{
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -3799,9 +3801,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
var selfDefineIdentification = string.Empty;
|
||||
|
||||
var answer = string.Empty;
|
||||
Guid? questionId=Guid.Empty;
|
||||
Guid? questionId = Guid.Empty;
|
||||
string tableQuestionName = string.Empty;
|
||||
var rowMark= string.Empty;
|
||||
var rowMark = string.Empty;
|
||||
if (entity.TableQuestionId == null)
|
||||
{
|
||||
switch (type)
|
||||
|
|
@ -3835,15 +3837,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
break;
|
||||
}
|
||||
questionId = entity.QuestionId;
|
||||
tableQuestionName= _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefault();
|
||||
tableQuestionName = _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefault();
|
||||
answer = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTableQuestionAnswer)).Select(x => x.Entity as ReadingTableQuestionAnswer).Select(x => x.Answer).FirstOrDefault();
|
||||
rowMark= _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefault();
|
||||
rowMark = _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefault();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var mark = entitys.Where(x => x.Entity.GetType() == typeof(ReadingNoneDicomMark)).Select(x => x.Entity as ReadingNoneDicomMark).FirstOrDefault();
|
||||
var mark = entitys.Where(x => x.Entity.GetType() == typeof(ReadingNoneDicomMark)).Select(x => x.Entity as ReadingNoneDicomMark).FirstOrDefault();
|
||||
if (mark == null)
|
||||
{
|
||||
mark = await _dbContext.ReadingNoneDicomMark.Where(x => x.Id == entity.NoneDicomMarkId).FirstOrDefaultAsync();
|
||||
|
|
@ -3852,7 +3854,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
var QuestionName = string.Empty;
|
||||
if (answer != null)
|
||||
{
|
||||
QuestionName= _dbContext.ReadingQuestionTrial.Where(x => x.Id == questionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefault();
|
||||
QuestionName = _dbContext.ReadingQuestionTrial.Where(x => x.Id == questionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefault();
|
||||
}
|
||||
|
||||
await InsertInspection<ReadingNoneDicomMarkBinding>(entity, type, x => new InspectionConvertDTO()
|
||||
|
|
@ -3861,12 +3863,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
}, new
|
||||
{
|
||||
RowMark= rowMark,
|
||||
RowMark = rowMark,
|
||||
TableQuestionName = tableQuestionName,
|
||||
MarkName = mark==null|| type== "Deleted" ? string.Empty: mark.OrderMarkName,
|
||||
PicturePath= mark == null ? string.Empty : mark.PicturePath,
|
||||
MarkName = mark == null || type == "Deleted" ? string.Empty : mark.OrderMarkName,
|
||||
PicturePath = mark == null ? string.Empty : mark.PicturePath,
|
||||
QuestionName = QuestionName,
|
||||
QuestinonAnswer= answer
|
||||
QuestinonAnswer = answer
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -4152,7 +4154,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
|
||||
//if (_userInfo.RequestUrl == " ReadingImageTask/splitLesion")
|
||||
var originalRowMark = string.Empty;
|
||||
var mergeRowMark = string.Empty;
|
||||
var mergeRowMark = string.Empty;
|
||||
if (entity.SplitRowId != null)
|
||||
{
|
||||
|
||||
|
|
@ -4203,7 +4205,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
}, new
|
||||
{
|
||||
OriginalRowMark = originalRowMark,
|
||||
MergeRowMark= mergeRowMark,
|
||||
MergeRowMark = mergeRowMark,
|
||||
//TableName = tableName,
|
||||
QuestionAnswerList =
|
||||
|
||||
|
|
@ -4481,7 +4483,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
//var generalData = await GetInspectionGeneralDataAsync(inspection);
|
||||
|
||||
var generalData = await GetInspectionGeneralGuidAsync(inspection);
|
||||
|
||||
|
||||
|
||||
//不可少 因为稽查实体可能某些Id没有
|
||||
MapEntityPropertyToAuditEntity(generalData, inspection);
|
||||
|
|
@ -4546,7 +4548,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
inspection.EntityName = entityName;
|
||||
inspection.RealUrlAndEntity = _userInfo.RequestUrl + "/" + entityName + "/" + type;
|
||||
|
||||
inspection.Reason=inspection.Reason==string.Empty&&reason!=string.Empty?reason:inspection.Reason;
|
||||
inspection.Reason = inspection.Reason == string.Empty && reason != string.Empty ? reason : inspection.Reason;
|
||||
await _dbContext.DataInspection.AddAsync(inspection);
|
||||
|
||||
|
||||
|
|
|
|||
22426
IRaCIS.Core.Infra.EFCore/Migrations/20260727054038_addIRDownload.Designer.cs
generated
Normal file
22426
IRaCIS.Core.Infra.EFCore/Migrations/20260727054038_addIRDownload.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,28 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class addIRDownload : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IsIRImageDownloaded",
|
||||
table: "VisitTask",
|
||||
type: "bit",
|
||||
nullable: true);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IsIRImageDownloaded",
|
||||
table: "VisitTask");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16668,6 +16668,9 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||
.HasColumnType("bit")
|
||||
.HasComment("重阅重置任务的 标注是转化之前的 还是转化之后的");
|
||||
|
||||
b.Property<bool?>("IsIRImageDownloaded")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsNeedClinicalDataSign")
|
||||
.HasColumnType("bit")
|
||||
.HasComment("临床数据");
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<OutputPath>..\bin</OutputPath>
|
||||
<NoWarn>$(NoWarn);NU1903</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -50,13 +50,19 @@ namespace IRaCIS.Core.Infrastructure.Extention
|
|||
/// </summary>
|
||||
NeedChangePassWord=-3,
|
||||
|
||||
|
||||
//没有带token访问(未登陆)
|
||||
NoToken = 10,
|
||||
|
||||
//带了Token,但是没有相应权限(该用户类型不能做)
|
||||
HaveTokenNotAccess = 11,
|
||||
|
||||
ResultEncrepted=12
|
||||
ResultEncrepted=12,
|
||||
|
||||
/// <summary>
|
||||
/// 不需要提醒
|
||||
/// </summary>
|
||||
NotRemind = -4,
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue