接受合并

Uat_IRC_Net10
he 2026-08-03 16:48:47 +08:00
commit ff395f1d56
27 changed files with 22802 additions and 62 deletions

View File

@ -63,8 +63,8 @@
} }
}, },
"ConnectionStrings": { "ConnectionStrings": {
"RemoteNew": "Server=106.14.89.110,1435;Database=Test_Rayplus;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=106.14.89.110,1435;Database=Test_Rayplus_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" "Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
}, },
"DicomSCPServiceConfig": { "DicomSCPServiceConfig": {
"CalledAEList": [ "CalledAEList": [

View File

@ -9,6 +9,7 @@
<Company>上海展影医疗科技有限公司</Company> <Company>上海展影医疗科技有限公司</Company>
<Product>IRC影像系统 (EICS)</Product> <Product>IRC影像系统 (EICS)</Product>
<Copyright>上海展影医疗科技有限公司版权所有</Copyright> <Copyright>上海展影医疗科技有限公司版权所有</Copyright>
<NoWarn>$(NoWarn);NU1903</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@ -34,6 +34,15 @@
}, },
"applicationUrl": "http://0.0.0.0:6100" "applicationUrl": "http://0.0.0.0:6100"
}, },
"IRaCIS.Uat_Rayplus": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Uat_Rayplus",
"ASPNETCORE_OpenSwagger": "true"
},
"applicationUrl": "http://0.0.0.0:6100"
},
"IRaCIS.Test_IRC_PGSQL": { "IRaCIS.Test_IRC_PGSQL": {
"commandName": "Project", "commandName": "Project",
"launchBrowser": true, "launchBrowser": true,

View File

@ -9,7 +9,7 @@
"ConnectionStrings": { "ConnectionStrings": {
//"RemoteNew": "Server=10.10.10.49,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", //"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" //"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" "Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
}, },
"WeComNoticeConfig": { "WeComNoticeConfig": {

View File

@ -7,8 +7,8 @@
} }
}, },
"ConnectionStrings": { "ConnectionStrings": {
"RemoteNew": "Server=101.132.253.119,1435;Database=Uat_Rayplus;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=101.132.253.119,1435;Database=Uat_Rayplus_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" "Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_Rayplus_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
}, },
"WeComNoticeConfig": { "WeComNoticeConfig": {
"IsOpenWeComNotice": true, "IsOpenWeComNotice": true,
@ -110,9 +110,9 @@
"Imap": "imap.qiye.aliyun.com", "Imap": "imap.qiye.aliyun.com",
"ImapPort": 993, "ImapPort": 993,
"FromEmail": "irc@mail.rayplus.net", "FromEmail": "irc@mail.rayplus.net",
"FromName": "Uat RayPlus Imaging System", "FromName": "RayPlus Imaging System",
"AuthorizationCode": "QWE1zxcv7632", "AuthorizationCode": "QWE1zxcv7632",
"SiteUrl": "https://irc.uat.rayplus.net/login", "SiteUrl": "https://irc.rayplus.net/login",
"PlatformName": "RayPlus", "PlatformName": "RayPlus",
"PlatformNameCN": "睿佳影像云平台", "PlatformNameCN": "睿佳影像云平台",
@ -130,7 +130,7 @@
"SystemPacsConfig": { "SystemPacsConfig": {
"Port": "11113", "Port": "11113",
"IP": "101.132.253.119" "IP": "47.117.165.18"
}, },
"RequestDuplicationOptions": { "RequestDuplicationOptions": {
"IsEnabled": true, "IsEnabled": true,

View File

@ -143,7 +143,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
var uri = new Uri(_config["SystemEmailSendConfig:SiteUrl"]); var uri = new Uri(_config["SystemEmailSendConfig:SiteUrl"]);
var baseUrl = uri.GetLeftPart(UriPartial.Authority); 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; var request = accessor?.HttpContext?.Request;

View File

@ -10,6 +10,7 @@
<OutputPath>..\bin\</OutputPath> <OutputPath>..\bin\</OutputPath>
<DocumentationFile>.\IRaCIS.Core.Application.xml</DocumentationFile> <DocumentationFile>.\IRaCIS.Core.Application.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn> <NoWarn>1701;1702;1591</NoWarn>
<NoWarn>$(NoWarn);NU1903</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

View File

@ -2940,7 +2940,7 @@
<param name="modality"></param> <param name="modality"></param>
<returns></returns> <returns></returns>
</member> </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>
影像下载成功回调 影像下载成功回调
</summary> </summary>
@ -3284,6 +3284,20 @@
批次Id 批次Id
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.Inspection.InspectionService.getInspectionById(IRaCIS.Core.Application.Service.Inspection.DTO.InspectionDto)">
<summary>
根据Id获取稽查记录
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Inspection.InspectionService.SetJsonDetail(IRaCIS.Core.Application.Service.Inspection.DTO.InspectionDto)">
<summary>
设置稽查记录JsonDetail
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Inspection.InspectionService.SetTrialShowInspection(IRaCIS.Core.Application.Service.Inspection.DTO.SetTrialShowInspection)"> <member name="M:IRaCIS.Core.Application.Service.Inspection.InspectionService.SetTrialShowInspection(IRaCIS.Core.Application.Service.Inspection.DTO.SetTrialShowInspection)">
<summary> <summary>
设置项目稽查配置 设置项目稽查配置
@ -9013,6 +9027,11 @@
外弹力膜面积- 管腔面积 外弹力膜面积- 管腔面积
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IVUSMeasuredValue.PlaqueRupture">
<summary>
斑块破裂
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.FrameNumber"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.FrameNumber">
<summary> <summary>
帧数 帧数
@ -9063,6 +9082,16 @@
脂质角度 脂质角度
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.PlaqueRupture">
<summary>
斑块破裂
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTFCTUploadData.PlaqueHealing">
<summary>
斑块愈合
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTInfo.PlaqueNum"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OCTInfo.PlaqueNum">
<summary> <summary>
斑块编号 斑块编号

View File

@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.MassTransit.Command
//[Required(ErrorMessage = "受试者筛选号不能为空")] //[Required(ErrorMessage = "受试者筛选号不能为空")]
//[ImporterHeader(Name = "Subject ID", AutoTrim = true)] //[ImporterHeader(Name = "Subject ID", AutoTrim = true)]
[ExcelColumnName("Subject ID")] [ExcelColumnName("Participant ID")]
public string SubjectCode { get; set; } = string.Empty; public string SubjectCode { get; set; } = string.Empty;
//[Required(ErrorMessage = "访视名称不能为空")] //[Required(ErrorMessage = "访视名称不能为空")]

View File

@ -2930,7 +2930,7 @@ namespace IRaCIS.Core.Application.Service.Common
arbitrationRule = criterion.ArbitrationRule, arbitrationRule = criterion.ArbitrationRule,
trialReadingCriterionId = inQuery.TrialReadingCriterionId, trialReadingCriterionId = inQuery.TrialReadingCriterionId,
isEn_Us = _userInfo.IsEn_Us isEn_Us = _userInfo.IsEn_Us
}).ToListAsync(); }).AsSplitQuery().ToListAsync();
} }
//肿瘤标准 病灶明细表 按照病灶级别 (OCT 暂时不删除,先看是否能覆盖) //肿瘤标准 病灶明细表 按照病灶级别 (OCT 暂时不删除,先看是否能覆盖)
@ -2949,7 +2949,7 @@ namespace IRaCIS.Core.Application.Service.Common
arbitrationRule = criterion.ArbitrationRule, arbitrationRule = criterion.ArbitrationRule,
trialReadingCriterionId = inQuery.TrialReadingCriterionId, trialReadingCriterionId = inQuery.TrialReadingCriterionId,
isEn_Us = _userInfo.IsEn_Us isEn_Us = _userInfo.IsEn_Us
}).ToListAsync(); }).AsSplitQuery().ToListAsync();
} }
// 非肿瘤标准 包括自定义,以及系统非肿瘤 会配置到表格层级 问题名称是 表格名称_表格子问题名 // 非肿瘤标准 包括自定义,以及系统非肿瘤 会配置到表格层级 问题名称是 表格名称_表格子问题名
@ -2967,7 +2967,7 @@ namespace IRaCIS.Core.Application.Service.Common
arbitrationRule = criterion.ArbitrationRule, arbitrationRule = criterion.ArbitrationRule,
trialReadingCriterionId = inQuery.TrialReadingCriterionId, trialReadingCriterionId = inQuery.TrialReadingCriterionId,
isEn_Us = _userInfo.IsEn_Us isEn_Us = _userInfo.IsEn_Us
}).ToListAsync(); }).AsSplitQuery().ToListAsync();
} }
// CDISC 导出 只管到 外层问题层级 和阅片结果表是保持一致 // CDISC 导出 只管到 外层问题层级 和阅片结果表是保持一致
@ -2985,7 +2985,7 @@ namespace IRaCIS.Core.Application.Service.Common
arbitrationRule = criterion.ArbitrationRule, arbitrationRule = criterion.ArbitrationRule,
trialReadingCriterionId = inQuery.TrialReadingCriterionId, trialReadingCriterionId = inQuery.TrialReadingCriterionId,
isEn_Us = _userInfo.IsEn_Us isEn_Us = _userInfo.IsEn_Us
}).ToListAsync(); }).AsSplitQuery().ToListAsync();
} }
else else
{ {
@ -2997,7 +2997,7 @@ namespace IRaCIS.Core.Application.Service.Common
arbitrationRule = criterion.ArbitrationRule, arbitrationRule = criterion.ArbitrationRule,
trialReadingCriterionId = inQuery.TrialReadingCriterionId, trialReadingCriterionId = inQuery.TrialReadingCriterionId,
isEn_Us = _userInfo.IsEn_Us isEn_Us = _userInfo.IsEn_Us
}).ToListAsync(); }).AsSplitQuery().ToListAsync();
} }
} }

View File

@ -58,7 +58,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{ {
//subject 随机阅片 或者无序 有上传 才处理任务编号 //subject 随机阅片 或者无序 有上传 才处理任务编号
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && 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) //||(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 subjectCode = string.Empty;
var subjectId = inQuery.SubjectId; 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) 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 });
} }
@ -702,9 +708,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TaskSeries dicomSeries = await _taskSeriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId); TaskSeries dicomSeries = await _taskSeriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);
var isNewSeries = false;
//判断重复 //判断重复
if (dicomSeries == null) if (dicomSeries == null)
{ {
isNewSeries = true;
var series = _mapper.Map<TaskSeries>(seriesItem); var series = _mapper.Map<TaskSeries>(seriesItem);
series.Id = seriesId; series.Id = seriesId;
@ -749,7 +758,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
await _taskInstanceRepository.AddAsync(insntance); await _taskInstanceRepository.AddAsync(insntance);
dicomSeries.InstanceCount++; if (isNewSeries == false)
{
dicomSeries.InstanceCount++;
}
findStudy.InstanceCount++; findStudy.InstanceCount++;
} }
@ -899,6 +911,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var subjectCode = inQuery.SubjectCode; var subjectCode = inQuery.SubjectCode;
var subjectId = inQuery.SubjectId; var subjectId = inQuery.SubjectId;
var doctorUserId = _userInfo.UserRoleId; var doctorUserId = _userInfo.UserRoleId;
bool? isIRImageDownloaded = null;
if (inQuery.VisitTaskId != null) if (inQuery.VisitTaskId != null)
{ {
@ -910,18 +923,20 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
SubjectCode = t.IsAnalysisCreate ? t.BlindSubjectCode : t.Subject.Code, SubjectCode = t.IsAnalysisCreate ? t.BlindSubjectCode : t.Subject.Code,
SubjectId = t.SubjectId, SubjectId = t.SubjectId,
t.DoctorUserId, t.DoctorUserId,
t.IsAnalysisCreate t.IsAnalysisCreate,
t.IsIRImageDownloaded,
}).FirstNotNullAsync(); }).FirstNotNullAsync();
subjectId = taskInfo.SubjectId; subjectId = taskInfo.SubjectId;
subjectCode = taskInfo.SubjectCode; subjectCode = taskInfo.SubjectCode;
doctorUserId = (Guid)taskInfo.DoctorUserId!; doctorUserId = (Guid)taskInfo.DoctorUserId!;
isIRImageDownloaded = taskInfo.IsIRImageDownloaded;
} }
var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId)
.Select(t => new { t.IsImageFilter, t.CriterionType, t.TrialId, t.CriterionModalitys, t.IsReadingTaskViewInOrder }).FirstNotNullAsync(); .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 +1890,15 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
/// </summary> /// </summary>
/// <param name="trialImageDownloadId"></param> /// <param name="trialImageDownloadId"></param>
/// <returns></returns> /// <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() await _trialImageDownloadRepository.UpdatePartialFromQueryAsync(t => t.Id == trialImageDownloadId, u => new TrialImageDownload()
{ DownloadEndTime = DateTime.Now, IsSuccess = true }, true); { 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(); return ResponseOutput.Ok();
} }

View File

@ -449,6 +449,12 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
public List<GetTrialShowInspectionOutDto> Children { get; set; } public List<GetTrialShowInspectionOutDto> Children { get; set; }
} }
public class InspectionDto
{
public Guid Id { get; set; }
public string? JsonDetail { get; set; }
}
public class SetTrialShowInspection public class SetTrialShowInspection
{ {

View File

@ -27,6 +27,39 @@ namespace IRaCIS.Core.Application.Service.Inspection
IRepository<FrontAuditConfig> _frontAuditConfigRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IInspectionService IRepository<FrontAuditConfig> _frontAuditConfigRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IInspectionService
{ {
/// <summary>
/// 根据Id获取稽查记录
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> getInspectionById(InspectionDto inDto)
{
var dataInspection = await _dataInspectionRepository.Where(x=>x.Id==inDto.Id).Select(x=> new InspectionDto()
{
Id=x.Id,
JsonDetail = x.JsonDetail,
}).FirstOrDefaultAsync();
return ResponseOutput.Ok(dataInspection);
}
/// <summary>
/// 设置稽查记录JsonDetail
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> SetJsonDetail(InspectionDto inDto)
{
await _dataInspectionRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.Id, u => new DataInspection() { JsonDetail = inDto.JsonDetail });
return ResponseOutput.Ok(inDto);
}
/// <summary> /// <summary>
/// 设置项目稽查配置 /// 设置项目稽查配置
/// </summary> /// </summary>

View File

@ -455,6 +455,15 @@ namespace IRaCIS.Core.Application.Image.QA
} }
var isFilterIVUSNoneDicom = false;
//ivus-在访视的时候visitTaskId==null 需要过滤掉空检查 ,但是在靶段标注的查看访视级别的时候不能过滤
if (_subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.Trial.TrialReadingCriterionList)
.Where(t => (t.CriterionType == CriterionType.IVUS || t.CriterionType == CriterionType.OCT) && t.IsConfirm).Distinct().Count() == 2
)
{
isFilterIVUSNoneDicom = true;
}
return new TrialVisitQADTO return new TrialVisitQADTO
{ {
IsSupportQCDownloadImage = isSupportQCImageDownload, IsSupportQCDownloadImage = isSupportQCImageDownload,
@ -467,7 +476,7 @@ namespace IRaCIS.Core.Application.Image.QA
ExistsManual = (await _IReadingImageTaskService.GetManualList(new GetManualListInDto() { TrialId = sv.TrialId })).Count() > 0, ExistsManual = (await _IReadingImageTaskService.GetManualList(new GetManualListInDto() { TrialId = sv.TrialId })).Count() > 0,
SeriesList = temp.SeriesList, SeriesList = temp.SeriesList,
RelationInfo = await GetVisitQCSubjectInfo(subjectVisitId), RelationInfo = await GetVisitQCSubjectInfo(subjectVisitId),
NoneDicomStudyList = await _noneDicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId, ignoreQueryFilters: true).ProjectTo<NoneDicomStudyView>(_mapper.ConfigurationProvider).ToListAsync(), NoneDicomStudyList = await _noneDicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId, ignoreQueryFilters: true).Where(t => isFilterIVUSNoneDicom ? t.Modality != "IVUS" : true).ProjectTo<NoneDicomStudyView>(_mapper.ConfigurationProvider).ToListAsync(),
SubjectClinicalData = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId) SubjectClinicalData = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId)
.ProjectTo<SubjectClinicalDataDto>(_mapper.ConfigurationProvider, new { subjectVisitId = subjectVisitId, token = _userInfo.UserToken }).FirstOrDefaultAsync() .ProjectTo<SubjectClinicalDataDto>(_mapper.ConfigurationProvider, new { subjectVisitId = subjectVisitId, token = _userInfo.UserToken }).FirstOrDefaultAsync()
}; };

View File

@ -238,6 +238,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
return this.Emm - this.Lumen; return this.Emm - this.Lumen;
} }
} }
/// <summary>
/// 斑块破裂
/// </summary>
public string PlaqueRupture { get; set; }
} }
public class TemplateData public class TemplateData
@ -300,6 +305,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary> /// </summary>
public decimal? LipidAngle { get; set; } public decimal? LipidAngle { get; set; }
/// <summary>
/// 斑块破裂
/// </summary>
public string PlaqueRupture { get; set; }
/// <summary>
/// 斑块愈合
/// </summary>
public string PlaqueHealing { get; set; }
public decimal? Avg public decimal? Avg
{ {

View File

@ -1546,6 +1546,20 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public QuestionClassify? QuestionClassify { get; set; } 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 #endregion
public class GetHistoryGlobalInfoOutDto public class GetHistoryGlobalInfoOutDto
{ {

View File

@ -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>
/// 获取自定义问题以及答案 /// 获取自定义问题以及答案
/// </summary> /// </summary>

View File

@ -298,10 +298,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
//new ReadingCalculateData (){QuestionType=QuestionType.Plaque3PVA,GetDecimalNullFun=GetPlaque3PVA}, //new ReadingCalculateData (){QuestionType=QuestionType.Plaque3PVA,GetDecimalNullFun=GetPlaque3PVA},
// (EEM-Lumen)求和 // 获取EMM求和
new ReadingCalculateData (){QuestionType=QuestionType.EEMSum,GetDecimalNullFun=GetEmmSum}, new ReadingCalculateData (){QuestionType=QuestionType.EEMSum,GetDecimalNullFun=GetEmmSum},
// 斑块2-PAV // (EEM-Lumen)求和
new ReadingCalculateData (){QuestionType=QuestionType.EEMSubLumenSum,GetDecimalNullFun=GetEEMLumenSum}, new ReadingCalculateData (){QuestionType=QuestionType.EEMSubLumenSum,GetDecimalNullFun=GetEEMLumenSum},
// PAV冠状动脉粥样硬化体积百分比) // PAV冠状动脉粥样硬化体积百分比)
@ -494,6 +494,38 @@ 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},
};
Dictionary<string, string> yesOrNo = new Dictionary<string, string>()
{
{ "是","1"},
{ "否","0"},
{ "Yes","1"},
{ "No","0"},
};
List<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>(); List<IVUSMeasuredValue> measuredValueList = new List<IVUSMeasuredValue>();
var errorRow = new List<int> { }; var errorRow = new List<int> { };
@ -502,12 +534,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IVUSMeasuredValue iVUSMeasuredValue = new IVUSMeasuredValue() { }; IVUSMeasuredValue iVUSMeasuredValue = new IVUSMeasuredValue() { };
try try
{ {
// 手动抛出异常进入catch
if (!yesOrNo.ContainsKey(dataTable.Rows[i]["D"].ToString()))
{
throw new InvalidOperationException("NullError");
}
iVUSMeasuredValue = new IVUSMeasuredValue() iVUSMeasuredValue = new IVUSMeasuredValue()
{ {
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()), //PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
FrameNumber = dataTable.Rows[i]["A"].ToString()??string.Empty, FrameNumber = dataTable.Rows[i]["A"].ToString()??string.Empty,
Emm = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()), Emm = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
Lumen = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()), Lumen = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()),
PlaqueRupture= getNone(dataTable.Rows[i]["D"].ToString()),
}; };
} }
catch (Exception) catch (Exception)
@ -623,6 +662,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.ElasticAreaDiffValue).Select(x => x.Id).FirstOrDefault(), TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.ElasticAreaDiffValue).Select(x => x.Id).FirstOrDefault(),
}); });
// 斑块破裂
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
Answer = yesOrNo[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))) foreach (var otherQuestion in tableQuestionList.Where(x => !tableAnswers.Any(y => y.TableQuestionId == x.Id && y.RowId == newRowId)))

View File

@ -336,6 +336,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
List<OCTFCTUploadData> measuredValueList = new List<OCTFCTUploadData>(); List<OCTFCTUploadData> measuredValueList = new List<OCTFCTUploadData>();
var errorRow = new List<int> { }; var errorRow = new List<int> { };
Dictionary<string, string> yesOrNo = new Dictionary<string, string>()
{
{ "是","1"},
{ "否","0"},
{ "Yes","1"},
{ "No","0"},
};
string getNone(string value) string getNone(string value)
{ {
if (value == string.Empty || value == null) if (value == string.Empty || value == null)
@ -351,19 +360,29 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
try try
{ {
// 手动抛出异常进入catch
if (!yesOrNo.ContainsKey(dataTable.Rows[i]["K"].ToString())|| !yesOrNo.ContainsKey(dataTable.Rows[i]["L"].ToString()))
{
throw new InvalidOperationException("NullError");
}
measuredValueList.Add(new OCTFCTUploadData() measuredValueList.Add(new OCTFCTUploadData()
{ {
//PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()), //PlaqueNum = int.Parse(dataTable.Rows[i]["A"].ToString()),
FrameNumber = dataTable.Rows[i]["A"].ToString() ?? string.Empty, FrameNumber = dataTable.Rows[i]["A"].ToString() ?? string.Empty,
FirstData = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()), LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["B"].ToString()),
SecondData = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString()), LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["C"].ToString() ?? string.Empty),
ThirdData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()), FirstData = getdecimalEmptyData(dataTable.Rows[i]["D"].ToString()),
MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["E"].ToString()), SecondData = getdecimalEmptyData(dataTable.Rows[i]["E"].ToString()),
MacrophageInfiltrationAngle = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString() ?? string.Empty), ThirdData = getdecimalEmptyData(dataTable.Rows[i]["F"].ToString()),
MicrochannelMeasurement = getNone(dataTable.Rows[i]["G"].ToString()), MicrochannelMeasurement = getNone(dataTable.Rows[i]["G"].ToString()),
CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["H"].ToString()), CholesterolCrystalMeasurement = getNone(dataTable.Rows[i]["H"].ToString()),
LumenAreaMeasurement = getdecimalEmptyData(dataTable.Rows[i]["I"].ToString()), MacrophageInfiltrationMeasurement = getNone(dataTable.Rows[i]["I"].ToString()),
LipidAngle = getdecimalEmptyData(dataTable.Rows[i]["J"].ToString() ?? string.Empty), 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) catch (Exception)
@ -598,6 +617,30 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.LipidAngle).Select(x => x.Id).FirstOrDefault(), TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == questionInfo.Id && x.QuestionMark == QuestionMark.LipidAngle).Select(x => x.Id).FirstOrDefault(),
}); });
// 斑块破裂
tableAnswers.Add(new ReadingTableQuestionAnswer()
{
Answer = yesOrNo[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 = yesOrNo[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) catch (Exception)
{ {

View File

@ -2518,6 +2518,16 @@ namespace IRaCIS.Core.Domain.Share
/// </summary> /// </summary>
FrameNumber =1032, FrameNumber =1032,
/// <summary>
/// 斑块破裂
/// </summary>
PlaqueRupture = 1033,
/// <summary>
/// 斑块愈合
/// </summary>
PlaqueHealing = 1034,
/// <summary> /// <summary>
/// 第一次测量 /// 第一次测量
/// </summary> /// </summary>

View File

@ -324,4 +324,10 @@ public class VisitTask : BaseFullAuditEntity
#endregion #endregion
#region 支持控制IR 下载影像
public bool? IsIRImageDownloaded { get; set; }
#endregion
} }

View File

@ -1,6 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\bin</OutputPath> <OutputPath>..\bin</OutputPath>
<NoWarn>$(NoWarn);NU1903</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -112,7 +112,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
return string.Empty; return string.Empty;
} }
if (answerType == "upload") 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()); transList.Add(item + string.Empty + unitDataList.Where(y => y.Unit == unit).Select(x => x.UnitName).FirstIsNullReturnEmpty());
} }
} }
return string.Join(",", transList); return string.Join(",", transList);
@ -1979,7 +1979,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection<Subject>(entity, type, x => new InspectionConvertDTO() await InsertInspection<Subject>(entity, type, x => new InspectionConvertDTO()
{ {
SubjectId = x.Id, SubjectId = x.Id,
Reason= entity.SuspendReason, Reason = entity.SuspendReason,
TrialSiteId = x.TrialSiteId, TrialSiteId = x.TrialSiteId,
//项目的信息 找离的最近的项目稽查信息 //项目的信息 找离的最近的项目稽查信息
@ -2447,6 +2447,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
Reason = reason, Reason = reason,
ExtraIndentification = extraIdentification, ExtraIndentification = extraIdentification,
SubjectVisitId = entity.SourceSubjectVisitId,
ObjectRelationParentId = entity.SourceSubjectVisitId != null ? entity.SourceSubjectVisitId : entity.SouceReadModuleId, ObjectRelationParentId = entity.SourceSubjectVisitId != null ? entity.SourceSubjectVisitId : entity.SouceReadModuleId,
ObjectRelationParentId2 = entity.DoctorUserId, ObjectRelationParentId2 = entity.DoctorUserId,
@ -2477,7 +2479,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
break; break;
case "Study/amendmentPatientInfo": case "Study/amendmentPatientInfo":
reason=entity.Reason; reason = entity.Reason;
break; break;
} }
@ -2578,7 +2580,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
if (entity.VisitTaskId != null) if (entity.VisitTaskId != null)
{ {
extraIdentification = "/VisitTask"; extraIdentification = "/VisitTask";
var obj = await _dbContext.VisitTask.FindAsync( entity.VisitTaskId); var obj = await _dbContext.VisitTask.FindAsync(entity.VisitTaskId);
armEnum = obj?.ArmEnum; armEnum = obj?.ArmEnum;
subjectVisitId = obj.SourceSubjectVisitId; subjectVisitId = obj.SourceSubjectVisitId;
} }
@ -2598,7 +2600,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
SubjectVisitId = subjectVisitId, SubjectVisitId = subjectVisitId,
//SubjectId = noneDicomStudy.SubjectId, //SubjectId = noneDicomStudy.SubjectId,
VisitTaskId= x.VisitTaskId, VisitTaskId = x.VisitTaskId,
ObjectRelationParentId = subjectVisitId, ObjectRelationParentId = subjectVisitId,
ObjectRelationParentId2 = x.NoneDicomStudyId, ObjectRelationParentId2 = x.NoneDicomStudyId,
ObjectRelationParentId3 = x.OriginNoneDicomStudyId, ObjectRelationParentId3 = x.OriginNoneDicomStudyId,
@ -2821,7 +2823,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
SubjectVisitId = x.IsVisit ? x.ReadingId : null, SubjectVisitId = x.IsVisit ? x.ReadingId : null,
ObjectRelationParentId = entity.ClinicalDataTrialSetId, ObjectRelationParentId = entity.ClinicalDataTrialSetId,
AuditIdentification= extraIndentification, AuditIdentification = extraIndentification,
//ObjectRelationParentId2 = x.IsVisit == false?x.ReadingId:null //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() 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, SubjectVisitId = segmentation != null ? segmentation.SubjectVisitId : null,
TrialReadingCriterionId = visitTask != null ? visitTask.TrialReadingCriterionId : null, TrialReadingCriterionId = visitTask != null ? visitTask.TrialReadingCriterionId : null,
}); });
@ -3705,7 +3707,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
} }
else 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(); .Where(x => x.VisitTaskId == entity.VisitTaskId && x.ReadingQuestionTrialId == entity.QuestionId).FirstOrDefault();
if (questionAnswer != null) 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 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(); 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; Guid? trialReadingCriterionId = null;
if (segmentation.VisitTask != null) if (segmentation.VisitTask != null)
{ {
trialReadingCriterionId= segmentation.VisitTask.TrialReadingCriterionId; trialReadingCriterionId = segmentation.VisitTask.TrialReadingCriterionId;
} }
await InsertInspection<SegmentBinding>(entity, type, x => new InspectionConvertDTO() await InsertInspection<SegmentBinding>(entity, type, x => new InspectionConvertDTO()
{ {
TrialReadingCriterionId= trialReadingCriterionId, TrialReadingCriterionId = trialReadingCriterionId,
},new }, new
{ {
segmentation.SegmentationName, segmentation.SegmentationName,
segmentation.SEGUrl, segmentation.SEGUrl,
@ -3783,11 +3785,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection<ReadingNoneDicomMark>(entity, type, x => new InspectionConvertDTO() await InsertInspection<ReadingNoneDicomMark>(entity, type, x => new InspectionConvertDTO()
{ {
SelfDefineIdentification= selfDefineIdentification + type SelfDefineIdentification = selfDefineIdentification + type
}, new }, new
{ {
}); });
} }
@ -3799,9 +3801,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var selfDefineIdentification = string.Empty; var selfDefineIdentification = string.Empty;
var answer = string.Empty; var answer = string.Empty;
Guid? questionId=Guid.Empty; Guid? questionId = Guid.Empty;
string tableQuestionName = string.Empty; string tableQuestionName = string.Empty;
var rowMark= string.Empty; var rowMark = string.Empty;
if (entity.TableQuestionId == null) if (entity.TableQuestionId == null)
{ {
switch (type) switch (type)
@ -3835,15 +3837,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common
break; break;
} }
questionId = entity.QuestionId; 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(); 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) if (mark == null)
{ {
mark = await _dbContext.ReadingNoneDicomMark.Where(x => x.Id == entity.NoneDicomMarkId).FirstOrDefaultAsync(); 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; var QuestionName = string.Empty;
if (answer != null) 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() await InsertInspection<ReadingNoneDicomMarkBinding>(entity, type, x => new InspectionConvertDTO()
@ -3861,12 +3863,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}, new }, new
{ {
RowMark= rowMark, RowMark = rowMark,
TableQuestionName = tableQuestionName, TableQuestionName = tableQuestionName,
MarkName = mark==null|| type== "Deleted" ? string.Empty: mark.OrderMarkName, MarkName = mark == null || type == "Deleted" ? string.Empty : mark.OrderMarkName,
PicturePath= mark == null ? string.Empty : mark.PicturePath, PicturePath = mark == null ? string.Empty : mark.PicturePath,
QuestionName = QuestionName, QuestionName = QuestionName,
QuestinonAnswer= answer QuestinonAnswer = answer
}); });
} }
@ -4152,7 +4154,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
//if (_userInfo.RequestUrl == " ReadingImageTask/splitLesion") //if (_userInfo.RequestUrl == " ReadingImageTask/splitLesion")
var originalRowMark = string.Empty; var originalRowMark = string.Empty;
var mergeRowMark = string.Empty; var mergeRowMark = string.Empty;
if (entity.SplitRowId != null) if (entity.SplitRowId != null)
{ {
@ -4203,7 +4205,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
}, new }, new
{ {
OriginalRowMark = originalRowMark, OriginalRowMark = originalRowMark,
MergeRowMark= mergeRowMark, MergeRowMark = mergeRowMark,
//TableName = tableName, //TableName = tableName,
QuestionAnswerList = QuestionAnswerList =
@ -4481,7 +4483,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
//var generalData = await GetInspectionGeneralDataAsync(inspection); //var generalData = await GetInspectionGeneralDataAsync(inspection);
var generalData = await GetInspectionGeneralGuidAsync(inspection); var generalData = await GetInspectionGeneralGuidAsync(inspection);
//不可少 因为稽查实体可能某些Id没有 //不可少 因为稽查实体可能某些Id没有
MapEntityPropertyToAuditEntity(generalData, inspection); MapEntityPropertyToAuditEntity(generalData, inspection);
@ -4546,7 +4548,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
inspection.EntityName = entityName; inspection.EntityName = entityName;
inspection.RealUrlAndEntity = _userInfo.RequestUrl + "/" + entityName + "/" + type; 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); await _dbContext.DataInspection.AddAsync(inspection);

File diff suppressed because it is too large Load Diff

View File

@ -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");
}
}
}

View File

@ -16668,6 +16668,9 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
.HasColumnType("bit") .HasColumnType("bit")
.HasComment("重阅重置任务的 标注是转化之前的 还是转化之后的"); .HasComment("重阅重置任务的 标注是转化之前的 还是转化之后的");
b.Property<bool?>("IsIRImageDownloaded")
.HasColumnType("bit");
b.Property<bool>("IsNeedClinicalDataSign") b.Property<bool>("IsNeedClinicalDataSign")
.HasColumnType("bit") .HasColumnType("bit")
.HasComment("临床数据"); .HasComment("临床数据");

View File

@ -2,6 +2,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\bin</OutputPath> <OutputPath>..\bin</OutputPath>
<NoWarn>$(NoWarn);NU1903</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>