Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
5eafcc9c8c
|
|
@ -117,7 +117,7 @@
|
||||||
// 转换PDF服务配置
|
// 转换PDF服务配置
|
||||||
"ThirdPdfUrl": "http://106.14.89.110:30088/api/v1/convert/file/pdf",
|
"ThirdPdfUrl": "http://106.14.89.110:30088/api/v1/convert/file/pdf",
|
||||||
//MFA免验证发送天数
|
//MFA免验证发送天数
|
||||||
"UserMFAVerifyDays": 1
|
"UserMFAVerifyMinutes": 1440
|
||||||
},
|
},
|
||||||
// 邮件服务配置(用于系统通知、找回密码、错误报警等)
|
// 邮件服务配置(用于系统通知、找回密码、错误报警等)
|
||||||
"SystemEmailSendConfig": {
|
"SystemEmailSendConfig": {
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class ServiceVerifyConfigOption
|
||||||
|
|
||||||
public string ThirdPdfUrl { get; set; }
|
public string ThirdPdfUrl { get; set; }
|
||||||
|
|
||||||
public int UserMFAVerifyDays { get; set; } = 1;
|
public int UserMFAVerifyMinutes { get; set; } = 1440;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@ public static class CacheKeys
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string StartRestTime(Guid userId) => $"{userId}StartRestTime";
|
public static string StartRestTime(Guid userId) => $"{userId}StartRestTime";
|
||||||
|
|
||||||
|
//每个用户 每个浏览器独立时间
|
||||||
public static string UserMFAVerifyPass(Guid userId) => $"UserMFAVerifyPass:{userId}";
|
public static string UserMFAVerifyPass(Guid userId,string browserFingerprint) => $"UserMFAVerifyPass:{userId}:{browserFingerprint}";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1038,6 +1038,34 @@ public static class ExcelExportHelper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static async Task<IActionResult> MutiSheetDataExportAsync(string code, object data, string exportFileNamePrefix, IRepository<CommonDocument> _commonDocumentRepository, IWebHostEnvironment _hostEnvironment)
|
||||||
|
{
|
||||||
|
|
||||||
|
var (physicalPath, fileName) = await FileStoreHelper.GetCommonDocPhysicalFilePathAsync(_hostEnvironment, _commonDocumentRepository, code);
|
||||||
|
|
||||||
|
|
||||||
|
//模板路径
|
||||||
|
var tplPath = physicalPath;
|
||||||
|
|
||||||
|
|
||||||
|
var memoryStream = new MemoryStream();
|
||||||
|
|
||||||
|
var config = new OpenXmlConfiguration()
|
||||||
|
{
|
||||||
|
IgnoreTemplateParameterMissing = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
await MiniExcel.SaveAsByTemplateAsync(memoryStream, tplPath, data, config);
|
||||||
|
|
||||||
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
|
||||||
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||||
|
{
|
||||||
|
FileDownloadName = $"{(string.IsNullOrEmpty(exportFileNamePrefix) ? "" : exportFileNamePrefix + "_")}{Path.GetFileNameWithoutExtension(fileName)}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导出文件模板
|
/// 导出文件模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1119,4 +1147,7 @@ public static class ExcelExportHelper
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -981,6 +981,331 @@
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:System.Exception"></exception>
|
<exception cref="T:System.Exception"></exception>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ResearchProgramNo">
|
||||||
|
<summary>
|
||||||
|
方案编号 STUDYID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Domain">
|
||||||
|
<summary>
|
||||||
|
域 DOMAIN TU TR RS
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ValueType">
|
||||||
|
<summary>
|
||||||
|
取值类型 TUSPID TRSPID RSSPID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.SubjectCode">
|
||||||
|
<summary>
|
||||||
|
受试者编号 USUBJID 实际展示TrialSiteSubjectCode
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Vendor">
|
||||||
|
<summary>
|
||||||
|
供应商 TUNAM (Extensive Imaging)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.UserName">
|
||||||
|
<summary>
|
||||||
|
阅片人 TUEVAL TREVAL RSEVAL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ArmEnum">
|
||||||
|
<summary>
|
||||||
|
阅片人标识 TUEVALID TREVALID RSEVALID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitNum">
|
||||||
|
<summary>
|
||||||
|
访视编号 VISITNUM
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitName">
|
||||||
|
<summary>
|
||||||
|
访视名称 VISIT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.LatestScanDate">
|
||||||
|
<summary>
|
||||||
|
拍片日期 TUDTC TRDTC RSDTC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitTaskId">
|
||||||
|
<summary>
|
||||||
|
eCRF标识 TUREFID TRREFID RSREFID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.CriterionName">
|
||||||
|
<summary>
|
||||||
|
RSCAT 阅片标准
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.IsJudgeSelect">
|
||||||
|
<summary>
|
||||||
|
RSACPTFL 裁定标记 TUACPTFL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.No">
|
||||||
|
<summary>
|
||||||
|
序号 TUSEQ (同一个访视,所有阅片人选择病灶给个顺序号)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.ARM_TumorNo">
|
||||||
|
<summary>
|
||||||
|
链接ID TULNKID (阅片人角色_病灶编号)不同访视可以重复
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationSimple">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别简称 TUTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别全称 TUTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResult">
|
||||||
|
<summary>
|
||||||
|
肿瘤鉴定结果 TUORRES
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResultType">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别结果类型 TUSTRESC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPart">
|
||||||
|
<summary>
|
||||||
|
部位 TULOC (对应病灶表的部位,需要国际化)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.IdentificationMethod">
|
||||||
|
<summary>
|
||||||
|
鉴定方法 TUMETHOD (Modality?)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPartDes">
|
||||||
|
<summary>
|
||||||
|
部位描述 LOCTEXT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRSEQ">
|
||||||
|
<summary>
|
||||||
|
每个subject 按照顺序编号 TRSEQ
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRGRPID">
|
||||||
|
<summary>
|
||||||
|
TRGRPID 组ID 对应TU表肿瘤鉴定结果 TumorIdentificationResult
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_TumorNo">
|
||||||
|
<summary>
|
||||||
|
TRLNKID 链接ID 对应TU表的链接ID TumorNo(阅片人角色_病灶编号)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_VisitName">
|
||||||
|
<summary>
|
||||||
|
TRLNKGRP 链接组 ARM-任务名(访视名) 对应RS的链接组
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentSimpleName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估简称 TRTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估全称 TRTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalMeasurements">
|
||||||
|
<summary>
|
||||||
|
原始测量 TRORRES
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalUnit">
|
||||||
|
<summary>
|
||||||
|
原始单位 TRORRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Character">
|
||||||
|
<summary>
|
||||||
|
标准结果(字符) TRSTRESC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Numeric">
|
||||||
|
<summary>
|
||||||
|
标准结果(数值) TRORRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardUnit">
|
||||||
|
<summary>
|
||||||
|
标准单位 TRSTRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.CompletionStatus">
|
||||||
|
<summary>
|
||||||
|
完成状态 TRSTAT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.IdentificationMethod">
|
||||||
|
<summary>
|
||||||
|
完成状态 TRMETHOD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.NotMeasuredReason">
|
||||||
|
<summary>
|
||||||
|
无法测量原因 TRREASND
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RSSEQ">
|
||||||
|
<summary>
|
||||||
|
RSSEQ 按照subject 的数据顺序编号
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ARM_VisitName">
|
||||||
|
<summary>
|
||||||
|
RSLNKGRP 链接组 ARM_任务名(访视名)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationSimpleName">
|
||||||
|
<summary>
|
||||||
|
RSTESTCD 疗效评估简称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationName">
|
||||||
|
<summary>
|
||||||
|
RSTEST 疗效评估全称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RespondEfficacyAssessment">
|
||||||
|
<summary>
|
||||||
|
RSORRES 响应评估原始结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.StandardEfficacyAssessment">
|
||||||
|
<summary>
|
||||||
|
RSSTRESC 标准疗效评估
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.CompletionStatus">
|
||||||
|
<summary>
|
||||||
|
RSSTAT 完成状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.NotAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
RSREASND 无法评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.AssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASASM 评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ReAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASOVR 重新评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.UpdateAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASUPD 更新评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RDOMAIN">
|
||||||
|
<summary>
|
||||||
|
关联域 RS:(访视点备注) 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.COSEQ">
|
||||||
|
<summary>
|
||||||
|
COSEQ 序号
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.IdentificationVariable">
|
||||||
|
<summary>
|
||||||
|
IDVAR 标识变量 RSSEQ 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Identification">
|
||||||
|
<summary>
|
||||||
|
标识 IDVARVAL RSSEQ具体的值 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RemarksQuote">
|
||||||
|
<summary>
|
||||||
|
COREF 备注引用
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Remarks">
|
||||||
|
<summary>
|
||||||
|
备注 COVAL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.CODTC">
|
||||||
|
<summary>
|
||||||
|
裁决日期 CODTC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TUValueEnum.TUValueType">
|
||||||
|
<summary>
|
||||||
|
取值类型 TUSPID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TUValueEnum.TumorIdentificationSimple">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别简称 TUTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TUValueEnum.TumorIdentificationFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别全称 TUTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TUValueEnum.TumorIdentificationResult">
|
||||||
|
<summary>
|
||||||
|
肿瘤鉴定结果 TUORRES
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TUValueEnum.TumorIdentificationResultType">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别结果类型 TUSTRESC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TRValueEnum.TRValueType">
|
||||||
|
<summary>
|
||||||
|
取值类型 TRSPID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TRValueEnum.TumorAssessmentSimpleName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估简称 TRTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TRValueEnum.TumorAssessmentFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估全称 TRTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RSValueEnum.RSValueType">
|
||||||
|
<summary>
|
||||||
|
取值类型 RSSPID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RSValueEnum.EfficacyEvaluationSimpleName">
|
||||||
|
<summary>
|
||||||
|
RSTESTCD 疗效评估简称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RSValueEnum.EfficacyEvaluationName">
|
||||||
|
<summary>
|
||||||
|
RSTEST 疗效评估全称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Service.EmailLogService">
|
<member name="T:IRaCIS.Core.Application.Service.EmailLogService">
|
||||||
<summary>
|
<summary>
|
||||||
邮件日志
|
邮件日志
|
||||||
|
|
|
||||||
|
|
@ -490,6 +490,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public int? RandomOrder { get; set; }
|
public int? RandomOrder { get; set; }
|
||||||
public bool? IsRandomOrderList { get; set; }
|
public bool? IsRandomOrderList { get; set; }
|
||||||
|
|
||||||
|
public CriterionType? CriterionType { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2597,13 +2597,19 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingLession_Export, ExportCatogory = ExportResult.DetailedTableOfLesions });
|
list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingLession_Export, ExportCatogory = ExportResult.DetailedTableOfLesions });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (criterion.CriterionType == CriterionType.RECIST1Point1)
|
||||||
|
{
|
||||||
|
list.Add(new ExportDocumentDes() { Code = StaticData.Export.TumorCDISC_Export, ExportCatogory = ExportResult.TumorCDISC_Export });
|
||||||
|
}
|
||||||
|
|
||||||
if (criterion.CriterionType == CriterionType.OCT)
|
if (criterion.CriterionType == CriterionType.OCT)
|
||||||
{
|
{
|
||||||
list.Add(new ExportDocumentDes() { Code = StaticData.Export.OCT_ReadingLession_Export, ExportCatogory = ExportResult.OCT_ReadingLession_Export });
|
list.Add(new ExportDocumentDes() { Code = StaticData.Export.OCT_ReadingLession_Export, ExportCatogory = ExportResult.OCT_ReadingLession_Export });
|
||||||
}
|
}
|
||||||
//else if (criterion.CriterionType == CriterionType.SelfDefine)
|
|
||||||
|
if (criterion.CriterionGroup != CriterionGroup.Tumor)
|
||||||
{
|
{
|
||||||
list.Add(new ExportDocumentDes() { Code = StaticData.Export.CDISC_Reading_Export, ExportCatogory = ExportResult.CDISC });
|
list.Add(new ExportDocumentDes() { Code = StaticData.Export.CDISC_Reading_Export, ExportCatogory = ExportResult.NoneTumorCDISC });
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (criterion.ArbitrationRule)
|
switch (criterion.ArbitrationRule)
|
||||||
|
|
@ -2784,7 +2790,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
}
|
}
|
||||||
// 非肿瘤标准 包括自定义,以及系统非肿瘤 会配置到表格层级 问题名称是 表格名称_表格子问题名
|
// 非肿瘤标准 包括自定义,以及系统非肿瘤 会配置到表格层级 问题名称是 表格名称_表格子问题名
|
||||||
else if (
|
else if (
|
||||||
criterion.CriterionGroup == CriterionGroup.Nontumorous && inQuery.ReadingExportType != ExportResult.CDISC
|
criterion.CriterionGroup == CriterionGroup.Nontumorous && inQuery.ReadingExportType != ExportResult.NoneTumorCDISC
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -2801,7 +2807,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
|
|
||||||
}
|
}
|
||||||
// CDISC 导出 只管到 外层问题层级 和阅片结果表是保持一致
|
// CDISC 导出 只管到 外层问题层级 和阅片结果表是保持一致
|
||||||
else if (inQuery.ReadingExportType == ExportResult.CDISC)
|
else if (inQuery.ReadingExportType == ExportResult.NoneTumorCDISC)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (criterion.CriterionGroup == CriterionGroup.Tumor)
|
if (criterion.CriterionGroup == CriterionGroup.Tumor)
|
||||||
|
|
@ -2869,7 +2875,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
if (inQuery.ReadingExportType != ExportResult.CDISC)
|
if (inQuery.ReadingExportType != ExportResult.NoneTumorCDISC)
|
||||||
{
|
{
|
||||||
//最终EXCEL 列
|
//最终EXCEL 列
|
||||||
var configCoumNameList = new List<DynamicColumnConfig.ColumItem>();
|
var configCoumNameList = new List<DynamicColumnConfig.ColumItem>();
|
||||||
|
|
@ -3475,7 +3481,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
|
|
||||||
string fileName = "";
|
string fileName = "";
|
||||||
|
|
||||||
if (inQuery.ReadingExportType == ExportResult.CDISC)
|
if (inQuery.ReadingExportType == ExportResult.NoneTumorCDISC)
|
||||||
{
|
{
|
||||||
(memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
(memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,485 @@
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Service.Common;
|
||||||
|
|
||||||
|
|
||||||
|
public class TumorCommonQustionInfo
|
||||||
|
{
|
||||||
|
//问题标识,肿瘤评估用于区分是什么问题
|
||||||
|
public QuestionType? QuestionType { get; set; }
|
||||||
|
|
||||||
|
public Guid QuestionId { get; set; }
|
||||||
|
public string QuestionName { get; set; }
|
||||||
|
|
||||||
|
public string QuestionValue { get; set; }
|
||||||
|
|
||||||
|
public string TranslateDicName { get; set; }
|
||||||
|
|
||||||
|
public ValueUnit? Unit { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TumorLessionInfo
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
//病灶编号
|
||||||
|
public string LessionCode { get; set; }
|
||||||
|
|
||||||
|
public LesionType? LessionType { get; set; }
|
||||||
|
|
||||||
|
public Guid? SplitRowId { get; set; }
|
||||||
|
|
||||||
|
public string? DicomModality { get; set; }
|
||||||
|
|
||||||
|
public string? NoneDicomModality { get; set; }
|
||||||
|
|
||||||
|
//病灶答案
|
||||||
|
public List<TumorLessionAnswerInfo> LessionAnswerList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TumorLessionAnswerInfo
|
||||||
|
{
|
||||||
|
public QuestionMark? QuestionMark { get; set; }
|
||||||
|
|
||||||
|
//病灶Id
|
||||||
|
public Guid RowId { get; set; }
|
||||||
|
|
||||||
|
//如果是4 就取CustomUnit 否则就是字典翻译
|
||||||
|
[Comment("单位")]
|
||||||
|
public ValueUnit? Unit { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public int ShowOrder { get; set; }
|
||||||
|
|
||||||
|
public Guid TableQuesionId { get; set; }
|
||||||
|
|
||||||
|
public string QuestionName { get; set; }
|
||||||
|
|
||||||
|
public string QuestionValue { get; set; }
|
||||||
|
|
||||||
|
public string TranslateDicName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TumorGlobalQuestionAnserInfo
|
||||||
|
{
|
||||||
|
[Comment("原任务ID")]
|
||||||
|
public Guid TaskId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[Comment("问题答案")]
|
||||||
|
public string Answer { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TumorExportBaseModel : TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
public List<TumorLessionInfo> LesionList { get; set; } = new List<TumorLessionInfo>();
|
||||||
|
|
||||||
|
public List<TumorCommonQustionInfo> QuestionAnswerList { get; set; }
|
||||||
|
|
||||||
|
public List<TumorGlobalQuestionAnserInfo> GlobalResultList { get; set; }
|
||||||
|
|
||||||
|
#region 后续处理额外添加字段
|
||||||
|
|
||||||
|
public DateTime? JudgeSignTime { get; set; }
|
||||||
|
|
||||||
|
public Guid? SourceSubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
public List<decimal> SubjectCriterionReadingPeriodVisitNumList { get; set; }
|
||||||
|
|
||||||
|
public decimal VisitTaskNum { get; set; }
|
||||||
|
|
||||||
|
public ReadingTaskState ReadingTaskState { get; set; }
|
||||||
|
|
||||||
|
public ReadingCategory ReadingCategory { get; set; }
|
||||||
|
|
||||||
|
//裁判结果选择的访视或者全局任务Id
|
||||||
|
public Arm? JudgeArmEnum { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//在当前访视触发裁判,或者在截止日期小于等于当前访视的阅片期触发裁判
|
||||||
|
[DictionaryTranslateAttribute("YesOrNoAudit")]
|
||||||
|
public bool? IsTrigerJudge { get; set; }
|
||||||
|
|
||||||
|
//(如果是访视点裁判,则仅在所选阅片人对应访视 显示;如果是阅片期裁判,则在所选阅片人 阅片期内的所有访视 显示此原因)
|
||||||
|
public string JudgeNote { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string VisitNote { get; set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 方案编号 STUDYID
|
||||||
|
/// </summary>
|
||||||
|
public string ResearchProgramNo { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 域 DOMAIN TU TR RS
|
||||||
|
/// </summary>
|
||||||
|
public string Domain { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取值类型 TUSPID TRSPID RSSPID
|
||||||
|
/// </summary>
|
||||||
|
public string ValueType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 受试者编号 USUBJID 实际展示TrialSiteSubjectCode
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商 TUNAM (Extensive Imaging)
|
||||||
|
/// </summary>
|
||||||
|
public string Vendor { get; set; } = "Extensive Imaging";
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 阅片人 TUEVAL TREVAL RSEVAL
|
||||||
|
/// </summary>
|
||||||
|
public string UserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 阅片人标识 TUEVALID TREVALID RSEVALID
|
||||||
|
/// </summary>
|
||||||
|
public Arm ArmEnum { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 访视编号 VISITNUM
|
||||||
|
/// </summary>
|
||||||
|
public decimal? VisitNum { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 访视名称 VISIT
|
||||||
|
/// </summary>
|
||||||
|
public string? VisitName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 拍片日期 TUDTC TRDTC RSDTC
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? LatestScanDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// eCRF标识 TUREFID TRREFID RSREFID
|
||||||
|
/// </summary>
|
||||||
|
public Guid VisitTaskId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
#region 移动位置
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSCAT 阅片标准
|
||||||
|
/// </summary>
|
||||||
|
public string CriterionName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSACPTFL 裁定标记 TUACPTFL
|
||||||
|
/// </summary>
|
||||||
|
//裁判选择标记
|
||||||
|
//根据裁判的任务结果 设置访视任务的这个字段 该字段表示 裁判认同该任务的结果
|
||||||
|
public bool? IsJudgeSelect { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 额外翻译字段
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public string IsJudgeSelectStr => IsJudgeSelect == true ? "Y" : "";
|
||||||
|
|
||||||
|
public string ArmEnumStr { get; set; }
|
||||||
|
public string LatestScanDateStr => LatestScanDate != null ? LatestScanDate?.ToString("yyyy-MM-dd")! : "";
|
||||||
|
public string TrialSiteSubjectCode => ResearchProgramNo + SubjectCode;
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class TU_Export : TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 取值类型 TUSPID
|
||||||
|
///// </summary>
|
||||||
|
//public string TUValueType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 序号 TUSEQ (同一个访视,所有阅片人选择病灶给个顺序号)
|
||||||
|
/// </summary>
|
||||||
|
public int No { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 链接ID TULNKID (阅片人角色_病灶编号)不同访视可以重复
|
||||||
|
/// </summary>
|
||||||
|
public string ARM_TumorNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤识别简称 TUTESTCD
|
||||||
|
/// </summary>
|
||||||
|
public string TumorIdentificationSimple { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤识别全称 TUTEST
|
||||||
|
/// </summary>
|
||||||
|
public string TumorIdentificationFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤鉴定结果 TUORRES
|
||||||
|
/// </summary>
|
||||||
|
public string TumorIdentificationResult { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤识别结果类型 TUSTRESC
|
||||||
|
/// </summary>
|
||||||
|
public string TumorIdentificationResultType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部位 TULOC (对应病灶表的部位,需要国际化)
|
||||||
|
/// </summary>
|
||||||
|
public string BodyPart { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 鉴定方法 TUMETHOD (Modality?)
|
||||||
|
/// </summary>
|
||||||
|
public string IdentificationMethod { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 裁定标记 TUACPTFL
|
||||||
|
///// </summary>
|
||||||
|
//public bool? IsJudgeSelect { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部位描述 LOCTEXT
|
||||||
|
/// </summary>
|
||||||
|
public string BodyPartDes { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class TR_Export : TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 取值类型 TRSPID
|
||||||
|
///// </summary>
|
||||||
|
//public string TRValueType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 每个subject 按照顺序编号 TRSEQ
|
||||||
|
/// </summary>
|
||||||
|
public int TRSEQ { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///TRGRPID 组ID 对应TU表肿瘤鉴定结果 TumorIdentificationResult
|
||||||
|
/// </summary>
|
||||||
|
public string TRGRPID { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// TRLNKID 链接ID 对应TU表的链接ID TumorNo(阅片人角色_病灶编号)
|
||||||
|
/// </summary>
|
||||||
|
public string ARM_TumorNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///TRLNKGRP 链接组 ARM-任务名(访视名) 对应RS的链接组
|
||||||
|
/// </summary>
|
||||||
|
public string ARM_VisitName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤评估简称 TRTESTCD
|
||||||
|
/// </summary>
|
||||||
|
public string TumorAssessmentSimpleName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 肿瘤评估全称 TRTEST
|
||||||
|
/// </summary>
|
||||||
|
public string TumorAssessmentFullName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 原始测量 TRORRES
|
||||||
|
/// </summary>
|
||||||
|
public string OriginalMeasurements { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 原始单位 TRORRESU
|
||||||
|
/// </summary>
|
||||||
|
public string OriginalUnit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标准结果(字符) TRSTRESC
|
||||||
|
/// </summary>
|
||||||
|
public string StandardResult_Character => OriginalMeasurements;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标准结果(数值) TRORRESU
|
||||||
|
/// </summary>
|
||||||
|
public string StandardResult_Numeric => double.TryParse(OriginalMeasurements, out _) ? OriginalMeasurements : "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标准单位 TRSTRESU
|
||||||
|
/// </summary>
|
||||||
|
public string StandardUnit => OriginalUnit;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 完成状态 TRSTAT
|
||||||
|
/// </summary>
|
||||||
|
public string CompletionStatus { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 完成状态 TRMETHOD
|
||||||
|
/// </summary>
|
||||||
|
public string IdentificationMethod { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法测量原因 TRREASND
|
||||||
|
/// </summary>
|
||||||
|
public string NotMeasuredReason { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class RS_Export : TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// RSSEQ 按照subject 的数据顺序编号
|
||||||
|
/// </summary>
|
||||||
|
public int RSSEQ { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSLNKGRP 链接组 ARM_任务名(访视名)
|
||||||
|
/// </summary>
|
||||||
|
public string ARM_VisitName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSTESTCD 疗效评估简称
|
||||||
|
/// </summary>
|
||||||
|
public string EfficacyEvaluationSimpleName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSTEST 疗效评估全称
|
||||||
|
/// </summary>
|
||||||
|
public string EfficacyEvaluationName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSORRES 响应评估原始结果
|
||||||
|
/// </summary>
|
||||||
|
public string RespondEfficacyAssessment { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// RSSTRESC 标准疗效评估
|
||||||
|
/// </summary>
|
||||||
|
public string StandardEfficacyAssessment => RespondEfficacyAssessment;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RSSTAT 完成状态
|
||||||
|
/// </summary>
|
||||||
|
public string CompletionStatus { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// RSREASND 无法评估原因
|
||||||
|
/// </summary>
|
||||||
|
public string NotAssessmentReason { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 裁定标记 RSACPTFL
|
||||||
|
///// </summary>
|
||||||
|
//public bool? IsJudgeSelect { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// REASASM 评估原因
|
||||||
|
/// </summary>
|
||||||
|
public string AssessmentReason { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// REASOVR 重新评估原因
|
||||||
|
/// </summary>
|
||||||
|
public string ReAssessmentReason { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// REASUPD 更新评估原因
|
||||||
|
/// </summary>
|
||||||
|
public string UpdateAssessmentReason { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool? IsOveralResponse { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class CO_Export : TU_TR_RSBaseModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 关联域 RS:(访视点备注) 空:裁判选择原因
|
||||||
|
/// </summary>
|
||||||
|
public string RDOMAIN { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// COSEQ 序号
|
||||||
|
/// </summary>
|
||||||
|
public int COSEQ { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IDVAR 标识变量 RSSEQ 空:裁判选择原因
|
||||||
|
/// </summary>
|
||||||
|
public string IdentificationVariable { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标识 IDVARVAL RSSEQ具体的值 空:裁判选择原因
|
||||||
|
/// </summary>
|
||||||
|
public string Identification { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// COREF 备注引用
|
||||||
|
/// </summary>
|
||||||
|
public string RemarksQuote { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注 COVAL
|
||||||
|
/// </summary>
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 裁决日期 CODTC
|
||||||
|
/// </summary>
|
||||||
|
public string CODTC { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -989,7 +989,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurvey_CheckUser, messageToSend, emailConfigFunc);
|
await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurvey_UpdateUser, messageToSend, emailConfigFunc);
|
||||||
|
|
||||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using IRaCIS.Core.Application.Service.Common;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
|
|
@ -115,6 +116,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode));
|
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode));
|
||||||
|
|
||||||
|
|
||||||
|
CreateMap<TumorExportBaseModel , TU_Export>();
|
||||||
|
CreateMap<TumorExportBaseModel, TR_Export>();
|
||||||
|
CreateMap<TumorExportBaseModel, RS_Export>();
|
||||||
|
CreateMap<TumorExportBaseModel, CO_Export>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -861,7 +861,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
if (isRemember)
|
if (isRemember)
|
||||||
{
|
{
|
||||||
await _fusionCache.SetAsync(CacheKeys.UserMFAVerifyPass(identityUserId), _userInfo.BrowserFingerprint, TimeSpan.FromDays(_serviceVerifyConfigConfig.UserMFAVerifyDays));
|
await _fusionCache.SetAsync(CacheKeys.UserMFAVerifyPass(identityUserId, _userInfo.BrowserFingerprint), _userInfo.BrowserFingerprint, TimeSpan.FromMinutes(_serviceVerifyConfigConfig.UserMFAVerifyMinutes));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1176,7 +1176,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (_verifyConfig.CurrentValue.OpenLoginMFA)
|
if (_verifyConfig.CurrentValue.OpenLoginMFA)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ((await _fusionCache.GetOrDefaultAsync(CacheKeys.UserMFAVerifyPass(identityUserId), "")) == _userInfo.BrowserFingerprint)
|
if ((await _fusionCache.GetOrDefaultAsync(CacheKeys.UserMFAVerifyPass(identityUserId, _userInfo.BrowserFingerprint), "")) == _userInfo.BrowserFingerprint)
|
||||||
{
|
{
|
||||||
userLoginReturnModel.IsMFA = false;
|
userLoginReturnModel.IsMFA = false;
|
||||||
}
|
}
|
||||||
|
|
@ -1196,9 +1196,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//修改密码 || 90天修改密码再mfa 之前
|
//修改密码 || 90天修改密码再mfa 之前
|
||||||
if (userLoginReturnModel.BasicInfo.IsFirstAdd || userLoginReturnModel.BasicInfo.NeedChangePassWord)
|
if (userLoginReturnModel.BasicInfo.IsFirstAdd || userLoginReturnModel.BasicInfo.NeedChangePassWord)
|
||||||
{
|
{
|
||||||
|
//移动到上面去了
|
||||||
//userLoginReturnModel.JWTStr = _tokenService.GetToken(userLoginReturnModel.BasicInfo);
|
//userLoginReturnModel.JWTStr = _tokenService.GetToken(userLoginReturnModel.BasicInfo);
|
||||||
}
|
}
|
||||||
else
|
else if (userLoginReturnModel.IsMFA == true)
|
||||||
{
|
{
|
||||||
//正常登录才发送邮件
|
//正常登录才发送邮件
|
||||||
await SendMFAEmail(new SendMfaCommand() { IdentityUserId = identityUserId, MFAType = UserMFAType.Login });
|
await SendMFAEmail(new SendMfaCommand() { IdentityUserId = identityUserId, MFAType = UserMFAType.Login });
|
||||||
|
|
|
||||||
|
|
@ -68,8 +68,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
throw new BusinessValidationFailedException(_localizer["ReadingQuestion_CDISCCodeRepeat"]);
|
throw new BusinessValidationFailedException(_localizer["ReadingQuestion_CDISCCodeRepeat"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inDto.QuestionList.Any(x=>x.ExportResult.Contains(ExportResult.CDISC)&&x.CDISCCode.IsNullOrEmpty())
|
if(inDto.QuestionList.Any(x=>x.ExportResult.Contains(ExportResult.NoneTumorCDISC)&&x.CDISCCode.IsNullOrEmpty())
|
||||||
|| inDto.TableQuestionList.Any(x => x.ExportResult.Contains(ExportResult.CDISC) && x.CDISCCode.IsNullOrEmpty())
|
|| inDto.TableQuestionList.Any(x => x.ExportResult.Contains(ExportResult.NoneTumorCDISC) && x.CDISCCode.IsNullOrEmpty())
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException(_localizer["ReadingQuestion_CDISCCodeCannotEmpty"]);
|
throw new BusinessValidationFailedException(_localizer["ReadingQuestion_CDISCCodeCannotEmpty"]);
|
||||||
|
|
|
||||||
|
|
@ -516,7 +516,7 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CDISC导出
|
/// CDISC导出
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CDISC = 8,
|
NoneTumorCDISC = 8,
|
||||||
|
|
||||||
|
|
||||||
//访视一致率
|
//访视一致率
|
||||||
|
|
@ -525,6 +525,8 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
//阅片期一致率
|
//阅片期一致率
|
||||||
ReadingPeriodJudgeRatio_Export = 18,
|
ReadingPeriodJudgeRatio_Export = 18,
|
||||||
|
|
||||||
|
TumorCDISC_Export=20,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ public class ReadingNoneDicomMark : BaseAddAuditEntity
|
||||||
public Guid VisitTaskId { get; set; }
|
public Guid VisitTaskId { get; set; }
|
||||||
|
|
||||||
public Guid? StudyId { get; set; }
|
public Guid? StudyId { get; set; }
|
||||||
|
|
||||||
public Guid? NoneDicomFileId { get; set; }
|
public Guid? NoneDicomFileId { get; set; }
|
||||||
|
|
||||||
[StringLength(1000)]
|
[StringLength(1000)]
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,18 @@ public class ReadingTableAnswerRowInfo : BaseFullDeleteAuditEntity
|
||||||
[ForeignKey("InstanceId")]
|
[ForeignKey("InstanceId")]
|
||||||
public DicomInstance Instance { get; set; }
|
public DicomInstance Instance { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("SeriesId")]
|
||||||
|
public DicomSeries DicomSeries { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// studyId 关联 dicom 和非dicom ,这里为了查询方便,默认查询非dicom dicom 通过序列查询
|
||||||
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("StudyId")]
|
||||||
|
public NoneDicomStudy NoneDicomStudy { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("OrganInfoId")]
|
[ForeignKey("OrganInfoId")]
|
||||||
public OrganInfo OrganInfo { get; set; }
|
public OrganInfo OrganInfo { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,18 @@ public class SCPInstanceConfigration : IEntityTypeConfiguration<SCPInstance>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class ReadingTableAnswerRowInfoConfigration : IEntityTypeConfiguration<ReadingTableAnswerRowInfo>
|
||||||
|
{
|
||||||
|
public void Configure(EntityTypeBuilder<ReadingTableAnswerRowInfo> builder)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
builder.HasOne(e => e.DicomSeries).WithMany().HasForeignKey(t => t.SeriesId).HasPrincipalKey(st => st.Id);
|
||||||
|
|
||||||
|
//builder.HasOne(e => e.Instance).WithMany().HasForeignKey(t => t.InstanceId).HasPrincipalKey(st => st.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -309,6 +309,8 @@ public static class StaticData
|
||||||
//一致性全量核查导出
|
//一致性全量核查导出
|
||||||
public const string TrialConsistentFUllCheckList_Export = "TrialConsistentFUllCheckList_Export";
|
public const string TrialConsistentFUllCheckList_Export = "TrialConsistentFUllCheckList_Export";
|
||||||
|
|
||||||
|
public const string TumorCDISC_Export = "TumorCDISC_Export";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue