diff --git a/IRaCIS.Core.API.sln b/IRaCIS.Core.API.sln index 24c20934..c4aeb903 100644 --- a/IRaCIS.Core.API.sln +++ b/IRaCIS.Core.API.sln @@ -21,6 +21,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Start", "Start\Start.csproj EndProject Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{D9570CE2-B58C-4EBA-B4F8-9AB14AB2E1F1}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Install", "Install\Install.csproj", "{F5820DF0-DE23-4F4A-8D49-7E22F67B784D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnInstall", "UnInstall\UnInstall.csproj", "{60B9AC72-5744-4517-93A5-A1ECD573A529}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -30,43 +34,36 @@ Global EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Debug|Any CPU.Build.0 = Debug|Any CPU {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Debug|x86.ActiveCfg = Debug|x86 {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Release|Any CPU.ActiveCfg = Release|Any CPU {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Release|x86.ActiveCfg = Release|x86 {F15CE209-6039-46A6-AE7F-E81ADA795F28}.Release|x86.Build.0 = Release|x86 {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Debug|Any CPU.Build.0 = Debug|Any CPU {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Debug|x86.ActiveCfg = Debug|x86 {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Release|x86.ActiveCfg = Release|x86 {D4DF27AC-3739-4264-BFB8-AED6DC2B84C7}.Release|x86.Build.0 = Release|x86 {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Debug|Any CPU.Build.0 = Debug|Any CPU {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Debug|x86.ActiveCfg = Debug|x86 {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Release|Any CPU.ActiveCfg = Release|Any CPU {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Release|x86.ActiveCfg = Release|x86 {037E7DE9-0AE2-4987-8C69-F51D5B9CA19D}.Release|x86.Build.0 = Release|x86 {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Debug|Any CPU.Build.0 = Debug|Any CPU {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Debug|x86.ActiveCfg = Debug|x86 {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Release|x86.ActiveCfg = Release|x86 {7CBC76F5-3817-46B7-8D9D-79253A89B578}.Release|x86.Build.0 = Release|x86 {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Debug|Any CPU.Build.0 = Debug|Any CPU {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Debug|x86.ActiveCfg = Debug|x86 {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Release|x86.ActiveCfg = Release|x86 {3292B2B4-6E8A-43AA-84C0-AB4A391E8A2A}.Release|x86.Build.0 = Release|x86 {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Debug|Any CPU.Build.0 = Debug|Any CPU {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Debug|x86.ActiveCfg = Debug|x86 {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Release|x86.ActiveCfg = Release|x86 {6D8115E5-84D6-424B-8F8D-0C2D40347A8C}.Release|x86.Build.0 = Release|x86 {07EED0F8-08E6-46F3-ACBE-17BC1391BD4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {07EED0F8-08E6-46F3-ACBE-17BC1391BD4C}.Debug|Any CPU.Build.0 = Debug|Any CPU {07EED0F8-08E6-46F3-ACBE-17BC1391BD4C}.Debug|x86.ActiveCfg = Debug|x86 {07EED0F8-08E6-46F3-ACBE-17BC1391BD4C}.Release|Any CPU.ActiveCfg = Release|Any CPU {07EED0F8-08E6-46F3-ACBE-17BC1391BD4C}.Release|x86.ActiveCfg = Release|x86 @@ -82,6 +79,22 @@ Global {D9570CE2-B58C-4EBA-B4F8-9AB14AB2E1F1}.Debug|x86.ActiveCfg = Debug {D9570CE2-B58C-4EBA-B4F8-9AB14AB2E1F1}.Release|Any CPU.ActiveCfg = Release {D9570CE2-B58C-4EBA-B4F8-9AB14AB2E1F1}.Release|x86.ActiveCfg = Release + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Debug|x86.ActiveCfg = Debug|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Debug|x86.Build.0 = Debug|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Release|Any CPU.Build.0 = Release|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Release|x86.ActiveCfg = Release|Any CPU + {F5820DF0-DE23-4F4A-8D49-7E22F67B784D}.Release|x86.Build.0 = Release|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Debug|x86.ActiveCfg = Debug|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Debug|x86.Build.0 = Debug|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|Any CPU.Build.0 = Release|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|x86.ActiveCfg = Release|Any CPU + {60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/IRaCIS.Core.API/AnonymizeTagSetting.json b/IRaCIS.Core.API/AnonymizeTagSetting.json deleted file mode 100644 index 6576ca04..00000000 --- a/IRaCIS.Core.API/AnonymizeTagSetting.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "needAnonymizeTag": [ - { //PatientsName - "Group": "0010", - "Element": "0010", - "ReplaceValue": "", - "Enable": true - }, - { // PatientID - "Group": "0010", - "Element": "0020", - "ReplaceValue": "", - "Enable": true - }, - { // IssuerOfPatientID - "Group": "0010", - "Element": "0021", - "ReplaceValue": "", - "Enable": true - }, - { // PatientsBirthDate - "Group": "0010", - "Element": "0030", - "ReplaceValue": "", - "Enable": true - }, - { // PatientsBirthTime - "Group": "0010", - "Element": "0032", - "ReplaceValue": "", - "Enable": false - }, - { // PatientsSex - "Group": "0010", - "Element": "0040", - "ReplaceValue": "", - "Enable": false - }, - { // OtherPatientIDs - "Group": "0010", - "Element": "1000", - "ReplaceValue": "", - "Enable": false - }, - { // OtherPatientNames - "Group": "0010", - "Element": "1001", - "ReplaceValue": "", - "Enable": false - }, - { // OtherPatientNames - "Group": "0010", - "Element": "1005", - "ReplaceValue": "", - "Enable": true - }, - { // PatientBirthName - "Group": "0010", - "Element": "1005", - "ReplaceValue": "", - "Enable": true - }, - { // PatientsAge - "Group": "0010", - "Element": "1010", - "ReplaceValue": "", - "Enable": true - }, - { // PatientsAddress - "Group": "0010", - "Element": "1040", - "ReplaceValue": "", - "Enable": true - }, - { // PatientsMothersBirthName - "Group": "0010", - "Element": "1060", - "ReplaceValue": "", - "Enable": true - }, - { - "Group": "0010", - "Element": "2150", - "ReplaceValue": "", - "Enable": true - }, - { - "Group": "0010", - "Element": "2152", - "ReplaceValue": "", - "Enable": true - }, - { - "Group": "0010", - "Element": "2154", - "ReplaceValue": "", - "Enable": true - }, - { - "Group": "0012", - "Element": "0040", - "ReplaceValue": "XXX", - "Enable": true - } - ] -} \ No newline at end of file diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index cd7ab7fb..08d0cde1 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -385,7 +385,7 @@ namespace IRaCIS.Core.API.Controllers if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑 { - // 同一个访视 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html + // 同一个检查批次 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html await _dicomArchiveService.DicomDBDataSaveChange(); diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 0ffa52cd..c94dbaa9 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -13,6 +13,7 @@ 1.0.1.0412 favicon.ico AnyCPU + EI_Image_Viewer @@ -58,9 +59,6 @@ - - - @@ -69,15 +67,6 @@ - - Always - - - Always - - - Always - @@ -136,9 +125,6 @@ - - Always - Always @@ -175,7 +161,7 @@ - + diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index e3d2f21e..8b186f7c 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -1,7 +1,7 @@ - IRaCIS.Core.API + EI_Image_Viewer diff --git a/IRaCIS.Core.API/NLog.config b/IRaCIS.Core.API/NLog.config deleted file mode 100644 index bf1dbbb1..00000000 --- a/IRaCIS.Core.API/NLog.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/IRaCIS.Core.API/Program.cs b/IRaCIS.Core.API/Program.cs index e58662a7..10a98ac4 100644 --- a/IRaCIS.Core.API/Program.cs +++ b/IRaCIS.Core.API/Program.cs @@ -76,50 +76,50 @@ namespace IRaCIS.Core.API #region ֤ - if (!File.Exists($@"C:\ProgramData\.xingcang\config.json")) - { - Console.WriteLine("ǰδע"); - Log.Logger.Error("ǰδע"); - Console.ReadLine(); - return; - } - else - { - var json = File.ReadAllText($@"C:\ProgramData\.xingcang\config.json"); + //if (!File.Exists($@"C:\ProgramData\.xingcang\config.json")) + //{ + // Console.WriteLine("ǰδע"); + // Log.Logger.Error("ǰδע"); + // Console.ReadLine(); + // return; + //} + //else + //{ + // var json = File.ReadAllText($@"C:\ProgramData\.xingcang\config.json"); - JObject jsonObject = JObject.Parse(json); + // JObject jsonObject = JObject.Parse(json); - var key = jsonObject["key"].ToString(); + // var key = jsonObject["key"].ToString(); - var value = jsonObject["value"].ToString(); + // var value = jsonObject["value"].ToString(); - var physicalAddressList = NetworkInterface.GetAllNetworkInterfaces().Select(t => t.GetPhysicalAddress().ToString()); + // var physicalAddressList = NetworkInterface.GetAllNetworkInterfaces().Select(t => t.GetPhysicalAddress().ToString()); - // жļĻǷDZ - if (!physicalAddressList.Contains(key)) - { - Console.WriteLine("ͱӦ"); - Log.Logger.Error("ͱӦ"); - Console.ReadLine(); + // // жļĻǷDZ + // if (!physicalAddressList.Contains(key)) + // { + // Console.WriteLine("ͱӦ"); + // Log.Logger.Error("ͱӦ"); + // Console.ReadLine(); - return; - } + // return; + // } - var secrete = MD5Helper.Md5($"{key}_XINGCANG"); + // var secrete = MD5Helper.Md5($"{key}_XINGCANG"); - if (value != secrete) - { - Console.WriteLine("ע벻ƥ"); - Log.Logger.Error("ע벻ƥ"); - Console.ReadLine(); + // if (value != secrete) + // { + // Console.WriteLine("ע벻ƥ"); + // Log.Logger.Error("ע벻ƥ"); + // Console.ReadLine(); - return; + // return; - } + // } - } + //} #endregion diff --git a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs index 4a16162e..56da182f 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs @@ -114,9 +114,11 @@ namespace IRaCIS.Core.API //注意localhost:8001/swagger是访问不到的,去launchSettings.json把launchUrl去掉,如果你想换一个路径,直接写名字即可,比如直接写c.Route = "doc"; //options.RoutePrefix = string.Empty; - var data = Assembly.GetExecutingAssembly().Location; - options.IndexStream = () => Assembly.GetExecutingAssembly() - .GetManifestResourceStream("IRaCIS.Core.API.wwwroot.swagger.ui.Index.html"); + + + + //options.IndexStream = () => Assembly.GetExecutingAssembly() + //.GetManifestResourceStream("IRaCIS.Core.API.wwwroot.swagger.ui.Index.html"); options.RoutePrefix = string.Empty; diff --git a/IRaCIS.Core.API/appsettings.CertificateApply.json b/IRaCIS.Core.API/appsettings.CertificateApply.json index aba506bc..5bccdf9d 100644 --- a/IRaCIS.Core.API/appsettings.CertificateApply.json +++ b/IRaCIS.Core.API/appsettings.CertificateApply.json @@ -10,7 +10,7 @@ "RemoteNew": "Server=localhost;Database=IRaCIS;User ID=sa;Password=123456;TrustServerCertificate=true" }, "BasicSystemConfig": { - "OpenUserComplexPassword": false, + "OpenUserComplexPassword": true, "OpenSignDocumentBeforeWork": false, "OpenTrialRelationDelete": true, "OpenLoginLimit": false diff --git a/IRaCIS.Core.API/sql/bin.bat b/IRaCIS.Core.API/sql/bin.bat deleted file mode 100644 index 233fbbc3..00000000 --- a/IRaCIS.Core.API/sql/bin.bat +++ /dev/null @@ -1,3 +0,0 @@ - SQLCMD -i %~dp0\dbo.sql - SQLCMD -i %~dp0\data.sql -pause \ No newline at end of file diff --git a/IRaCIS.Core.API/sql/data.sql b/IRaCIS.Core.API/sql/data.sql deleted file mode 100644 index 9bf0bbee..00000000 Binary files a/IRaCIS.Core.API/sql/data.sql and /dev/null differ diff --git a/IRaCIS.Core.API/sql/dbo.sql b/IRaCIS.Core.API/sql/dbo.sql deleted file mode 100644 index f05c5ab1..00000000 Binary files a/IRaCIS.Core.API/sql/dbo.sql and /dev/null differ diff --git a/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminAddUser.html b/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminAddUser.html index 9191707f..aabdcaf7 100644 --- a/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminAddUser.html +++ b/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminAddUser.html @@ -11,7 +11,7 @@ 尊敬的 {0} ,您好:
- 展影医疗为您添加了账户,账户信息如下: + 行藏医学影像处理软件系统为您添加了账户,账户信息如下:
@@ -32,7 +32,7 @@
祝您顺利!/Best Regards
-
上海展影医疗科技有限公司
+
武汉行藏科技有限公司
diff --git a/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminResetUser.html b/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminResetUser.html index e8121618..8f8bb433 100644 --- a/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminResetUser.html +++ b/IRaCIS.Core.API/wwwroot/EmailTemplate/AdminResetUser.html @@ -11,7 +11,7 @@ 尊敬的 {0} ,您好:
- 展影医疗将您的账户密码已重置,账户信息如下: + 行藏医学影像处理软件系统将您的账户密码已重置,账户信息如下:
@@ -29,7 +29,7 @@
祝您顺利!/Best Regards
-
上海展影医疗科技有限公司
+
武汉行藏科技有限公司
diff --git a/IRaCIS.Core.API/wwwroot/EmailTemplate/EmailConfigTest.html b/IRaCIS.Core.API/wwwroot/EmailTemplate/EmailConfigTest.html index 0d184d0a..6f1d3a5d 100644 --- a/IRaCIS.Core.API/wwwroot/EmailTemplate/EmailConfigTest.html +++ b/IRaCIS.Core.API/wwwroot/EmailTemplate/EmailConfigTest.html @@ -11,7 +11,7 @@ 您好:
- 感谢您使用展影云平台。 + 感谢您使用行藏医学影像处理软件。
{0}。 @@ -19,7 +19,7 @@
祝您顺利!/Best Regards
-
上海展影医疗科技有限公司
+
武汉行藏科技有限公司
diff --git a/IRaCIS.Core.API/wwwroot/EmailTemplate/UserOptCommon.html b/IRaCIS.Core.API/wwwroot/EmailTemplate/UserOptCommon.html index 90dbb7d4..f21fa50f 100644 --- a/IRaCIS.Core.API/wwwroot/EmailTemplate/UserOptCommon.html +++ b/IRaCIS.Core.API/wwwroot/EmailTemplate/UserOptCommon.html @@ -11,7 +11,7 @@ {0}您好:
- 感谢您使用展影云平台。 + 感谢您使用行藏医学影像处理软件。
{1},验证码是: {2},请在3分钟内输入该验证码,进行后续操作。如非本人操作,请忽略该邮件。 @@ -19,7 +19,7 @@
祝您顺利!/Best Regards
-
上海展影医疗科技有限公司
+
武汉行藏科技有限公司
diff --git a/IRaCIS.Core.Application/BackGroundJob/ObtainTaskAutoCancelJob.cs b/IRaCIS.Core.Application/BackGroundJob/ObtainTaskAutoCancelJob.cs index ebd09161..94011887 100644 --- a/IRaCIS.Core.Application/BackGroundJob/ObtainTaskAutoCancelJob.cs +++ b/IRaCIS.Core.Application/BackGroundJob/ObtainTaskAutoCancelJob.cs @@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.BackGroundJob var success = await _subjectVisitRepository.SaveChangesAsync(); - _logger.LogWarning($"任务建立时间:{startTime} 取消时间:{DateTime.Now} 取消 受试者访视:{ subjectVisitId }success:{success}"); + _logger.LogWarning($"任务建立时间:{startTime} 取消时间:{DateTime.Now} 取消 患者检查批次:{ subjectVisitId }success:{success}"); } catch (Exception e) { diff --git a/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs b/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs index a614a1e6..a038ee94 100644 --- a/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs +++ b/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs @@ -49,7 +49,7 @@ public enum AuditOptType AddTrialSiteCRC = 7, DeleteTrialSiteCRC = 8, - //访视计划 + //检查批次计划 AddOrUpdateTrialVisitPlanItem = 9, DeleteTrialVisitPlanItem = 10, ConfirmTrialVisitPlan = 11, @@ -58,7 +58,7 @@ public enum AuditOptType AddOrUpdateTrialTemplate = 12, DeleteTrialTemplate = 13, - //subject 访视计划 + //subject 检查批次计划 AddOrUpdateSubjectOutPlanVisit = 14, DeleteSubjectOutPlanVisit = 15, SetSVExecuted = 16, @@ -378,7 +378,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // //添加访视计划Item +// // //添加检查批次计划Item // // case AuditOptType.AddOrUpdateTrialVisitPlanItem: // // //接口参数 // // var visitPlanItem = (VisitPlanCommand)_actionArguments.Values.ToList()[0]; @@ -390,7 +390,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = visitPlanItem.TrialId, // // SubjectId = Guid.Empty, // // AuditType = (int)AuditType.TrialAudit, -// // Note = visitPlanItem.Id == null ? $"{ _userRealName} 添加了访视计划项 {visitPlanItem.VisitName} " : $"{ _userRealName} 更新了访视计划项为 {visitPlanItem.VisitName} ", +// // Note = visitPlanItem.Id == null ? $"{ _userRealName} 添加了检查批次计划项 {visitPlanItem.VisitName} " : $"{ _userRealName} 更新了检查批次计划项为 {visitPlanItem.VisitName} ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -399,7 +399,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // //删除访视计划Item +// // //删除检查批次计划Item // // case AuditOptType.DeleteTrialVisitPlanItem: // // if (result.IsSuccess) @@ -409,7 +409,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = _visitPlan.TrialId, // // SubjectId = Guid.Empty, // // AuditType = (int)AuditType.TrialAudit, -// // Note = $"{ _userRealName} 移除了访视计划项 {_visitPlan.VisitName} ", +// // Note = $"{ _userRealName} 移除了检查批次计划项 {_visitPlan.VisitName} ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -418,7 +418,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // //确认了访视计划 +// // //确认了检查批次计划 // // case AuditOptType.ConfirmTrialVisitPlan: // // var trialId = (Guid)_actionArguments.Values.ToList()[0]; @@ -429,7 +429,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = trialId, // // SubjectId = Guid.Empty, // // AuditType = (int)AuditType.TrialAudit, -// // Note = $"{ _userRealName} 确认了访视计划,不允许修改 ", +// // Note = $"{ _userRealName} 确认了检查批次计划,不允许修改 ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -484,13 +484,13 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // //受试者审计 +// // //患者审计 // // case AuditType.SubjectAudit: // // switch (_attr._auditOptType) // // { -// // // 添加或者更新受试者 +// // // 添加或者更新患者 // // case AuditOptType.AddOrUpdateSubject: // // //接口参数 @@ -503,7 +503,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = subject.TrialId, // // SubjectId = subject.Id == null ? Guid.Parse(result.Data) : subject.Id.Value, // // AuditType = (int)AuditType.SubjectAudit, -// // Note = subject.Id == null ? $"{ _userRealName} 添加了受试者 {subject.LastName + subject.FirstName} 并初始化了访视计划" : $"{ _userRealName} 对受试者 { subject.LastName + subject.FirstName} 信息进行了更新 ", +// // Note = subject.Id == null ? $"{ _userRealName} 添加了患者 {subject.LastName + subject.FirstName} 并初始化了检查批次计划" : $"{ _userRealName} 对患者 { subject.LastName + subject.FirstName} 信息进行了更新 ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -512,7 +512,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // // 删除受试者 +// // // 删除患者 // // case AuditOptType.DeleteSubject: // // if (result.IsSuccess) // // { @@ -521,7 +521,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = _subject.TrialId, // // SubjectId = _subject.Id, // // AuditType = (int)AuditType.SubjectAudit, -// // Note = $"{ _userRealName} 移除了受试者 {_subject.LastName + _subject.FirstName} ", +// // Note = $"{ _userRealName} 移除了患者 {_subject.LastName + _subject.FirstName} ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -530,7 +530,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // // 受试者计划外访视 +// // // 患者计划外检查批次 // // case AuditOptType.AddOrUpdateSubjectOutPlanVisit: // // //接口参数 @@ -549,7 +549,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = _subject.TrialId, // // SubjectId = _subject.Id, // // AuditType = (int)AuditType.SubjectAudit, -// // Note = subjectVisit.Id == null ? $"{ _userRealName} 为受试者 {_subject.LastName + _subject.FirstName} 添加了计划外访视 {subjectVisit.VisitName}" : $"{ _userRealName} 更新受试者 {_subject.LastName + _subject.FirstName} 计划外访视{subjectVisit.VisitName}", +// // Note = subjectVisit.Id == null ? $"{ _userRealName} 为患者 {_subject.LastName + _subject.FirstName} 添加了计划外检查批次 {subjectVisit.VisitName}" : $"{ _userRealName} 更新患者 {_subject.LastName + _subject.FirstName} 计划外检查批次{subjectVisit.VisitName}", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -558,7 +558,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // } // // break; -// // // 删除计划外访视 +// // // 删除计划外检查批次 // // case AuditOptType.DeleteSubjectOutPlanVisit: // // if (result.IsSuccess) @@ -568,7 +568,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = _subjectVisit.TrialId, // // SubjectId = _subject.Id, // // AuditType = (int)AuditType.SubjectAudit, -// // Note = $"{ _userRealName} 移除了受试者{_subject.LastName + _subject.FirstName} 计划外访视 {_subjectVisit.VisitName} ", +// // Note = $"{ _userRealName} 移除了患者{_subject.LastName + _subject.FirstName} 计划外检查批次 {_subjectVisit.VisitName} ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -587,7 +587,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // TrialId = _subjectVisit.TrialId, // // SubjectId = _subject.Id, // // AuditType = (int)AuditType.SubjectAudit, -// // Note = $"{ _userRealName} 将受试者 {_subject.LastName + _subject.FirstName} 访视 {_subjectVisit.VisitName} 设置为已执行 ", +// // Note = $"{ _userRealName} 将患者 {_subject.LastName + _subject.FirstName} 检查批次 {_subjectVisit.VisitName} 设置为已执行 ", // // Detail = string.Empty, // // OptUserId = Guid.Parse(_userIdStr), // // OptUser = _userRealName, @@ -756,7 +756,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // // break; -// // //受试者审计 +// // //患者审计 // // case AuditType.SubjectAudit: // // switch (_auditOptType) @@ -969,7 +969,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // break; -// //受试者审计 +// //患者审计 // case AuditType.SubjectAudit: // switch (_auditOptType) @@ -1281,7 +1281,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// //添加访视计划Item +// //添加检查批次计划Item // case AuditOptType.AddOrUpdateTrialVisitPlanItem: // //接口参数 // var visitPlanItem = (VisitPlanCommand)_actionArguments.Values.ToList()[0]; @@ -1293,7 +1293,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = visitPlanItem.TrialId, // SubjectId = Guid.Empty, // AuditType = (int)AuditType.TrialAudit, -// Note = visitPlanItem.Id == null ? $"{ _userRealName} 添加了访视计划项 {visitPlanItem.VisitName} " : $"{ _userRealName} 更新了访视计划项为 {visitPlanItem.VisitName} ", +// Note = visitPlanItem.Id == null ? $"{ _userRealName} 添加了检查批次计划项 {visitPlanItem.VisitName} " : $"{ _userRealName} 更新了检查批次计划项为 {visitPlanItem.VisitName} ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1302,7 +1302,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// //删除访视计划Item +// //删除检查批次计划Item // case AuditOptType.DeleteTrialVisitPlanItem: // if (result.IsSuccess) @@ -1312,7 +1312,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = _visitPlan.TrialId, // SubjectId = Guid.Empty, // AuditType = (int)AuditType.TrialAudit, -// Note = $"{ _userRealName} 移除了访视计划项 {_visitPlan.VisitName} ", +// Note = $"{ _userRealName} 移除了检查批次计划项 {_visitPlan.VisitName} ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1321,7 +1321,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// //确认了访视计划 +// //确认了检查批次计划 // case AuditOptType.ConfirmTrialVisitPlan: // var trialId = (Guid)_actionArguments.Values.ToList()[0]; @@ -1332,7 +1332,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = trialId, // SubjectId = Guid.Empty, // AuditType = (int)AuditType.TrialAudit, -// Note = $"{ _userRealName} 确认了访视计划,不允许修改 ", +// Note = $"{ _userRealName} 确认了检查批次计划,不允许修改 ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1364,13 +1364,13 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// //受试者审计 +// //患者审计 // case AuditType.SubjectAudit: // switch (_attr._auditOptType) // { -// // 添加或者更新受试者 +// // 添加或者更新患者 // case AuditOptType.AddOrUpdateSubject: // //接口参数 @@ -1383,7 +1383,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = subject.TrialId, // SubjectId = subject.Id == null ? Guid.Parse(result.Data) : subject.Id.Value, // AuditType = (int)AuditType.SubjectAudit, -// Note = subject.Id == null ? $"{ _userRealName} 添加了受试者 {subject.ShortName } 并初始化了访视计划" : $"{ _userRealName} 对受试者 { subject.ShortName } 信息进行了更新 ", +// Note = subject.Id == null ? $"{ _userRealName} 添加了患者 {subject.ShortName } 并初始化了检查批次计划" : $"{ _userRealName} 对患者 { subject.ShortName } 信息进行了更新 ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1392,7 +1392,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// // 删除受试者 +// // 删除患者 // case AuditOptType.DeleteSubject: // if (result.IsSuccess) // { @@ -1401,7 +1401,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = _subject.TrialId, // SubjectId = _subject.Id, // AuditType = (int)AuditType.SubjectAudit, -// Note = $"{ _userRealName} 移除了受试者 {_subject.LastName + _subject.FirstName} ", +// Note = $"{ _userRealName} 移除了患者 {_subject.LastName + _subject.FirstName} ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1410,7 +1410,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// // 受试者计划外访视 +// // 患者计划外检查批次 // case AuditOptType.AddOrUpdateSubjectOutPlanVisit: // //接口参数 @@ -1429,7 +1429,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = _subject.TrialId, // SubjectId = _subject.Id, // AuditType = (int)AuditType.SubjectAudit, -// Note = subjectVisit.Id == null ? $"{ _userRealName} 为受试者 {_subject.LastName + _subject.FirstName} 添加了计划外访视 {subjectVisit.VisitName}" : $"{ _userRealName} 更新受试者 {_subject.LastName + _subject.FirstName} 计划外访视{subjectVisit.VisitName}", +// Note = subjectVisit.Id == null ? $"{ _userRealName} 为患者 {_subject.LastName + _subject.FirstName} 添加了计划外检查批次 {subjectVisit.VisitName}" : $"{ _userRealName} 更新患者 {_subject.LastName + _subject.FirstName} 计划外检查批次{subjectVisit.VisitName}", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1438,7 +1438,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // } // break; -// // 删除计划外访视 +// // 删除计划外检查批次 // case AuditOptType.DeleteSubjectOutPlanVisit: // if (result.IsSuccess) @@ -1448,7 +1448,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = _subjectVisit.TrialId, // SubjectId = _subject.Id, // AuditType = (int)AuditType.SubjectAudit, -// Note = $"{ _userRealName} 移除了受试者{_subject.LastName + _subject.FirstName} 计划外访视 {_subjectVisit.VisitName} ", +// Note = $"{ _userRealName} 移除了患者{_subject.LastName + _subject.FirstName} 计划外检查批次 {_subjectVisit.VisitName} ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, @@ -1467,7 +1467,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt // TrialId = _subjectVisit.TrialId, // SubjectId = _subject.Id, // AuditType = (int)AuditType.SubjectAudit, -// Note = $"{ _userRealName} 将受试者 {_subject.LastName + _subject.FirstName} 访视 {_subjectVisit.VisitName} 设置为已执行 ", +// Note = $"{ _userRealName} 将患者 {_subject.LastName + _subject.FirstName} 检查批次 {_subjectVisit.VisitName} 设置为已执行 ", // Detail = string.Empty, // OptUserId = Guid.Parse(_userIdStr), // OptUser = _userRealName, diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs index e8da8a52..19ced478 100644 --- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs @@ -491,7 +491,7 @@ public static class FileStoreHelper { var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - //加入访视层级 和Data + //加入检查批次层级 和Data var path = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder, studyId.ToString()); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 829d1850..91bc5c80 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -115,7 +115,6 @@ -
diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json index d2305efb..31a6a2c9 100644 --- a/IRaCIS.Core.Application/Resources/en-US.json +++ b/IRaCIS.Core.Application/Resources/en-US.json @@ -183,9 +183,9 @@ //StudyListService - "TimeTooLow": "当前访视检查时间不能小于该访视之前检查的时间,请核对检查数据是否有误", + "TimeTooLow": "当前检查批次检查时间不能小于该检查批次之前检查的时间,请核对检查数据是否有误", "SomeoneLoading": "当前有人正在上传归档该检查!", - "VisitEnd": "受试者访视结束,不允许上传!", + "VisitEnd": "患者检查批次结束,不允许上传!", "DICOMUploaded{0}{1}{2}{3}": "{0}: This DICOM images have been uploaded and allocate to the {1} of the subject {2} (Study ID: {3}), which cannot continue to upload and assign it to others.", //StudyService diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json index b4b15072..b9fe6df5 100644 --- a/IRaCIS.Core.Application/Resources/zh-CN.json +++ b/IRaCIS.Core.Application/Resources/zh-CN.json @@ -36,7 +36,7 @@ "ProjSetDisable": "项目不在Initializing/Ongoing,不允许确认配置", //不允许确认配置 "QCRepate": "QC问题显示序号不允许重复", // QC问题显示序号不允许重复 "ParentNumToLow": "父问题的序号要比子问题序号小,请确认", // 父问题的序号要比子问题序号小,请确认 - "ExistUnconfirmedItems": "项目、基础配置、流程配置、加急配置、访视计划,有未确认项", // 存在未确认项 + "ExistUnconfirmedItems": "项目、基础配置、流程配置、加急配置、检查批次计划,有未确认项", // 存在未确认项 "NotAllCanOperate": "只有“初始化中”和“正在进行中”才能进行操作", //只有“初始化中”和“正在进行中”才能进行操作 // TrialExternalUserService @@ -51,7 +51,7 @@ "OnlyPMAPM": "仅PM/APM可以操作!", "TrialIDExist": "相同的试用ID已经存在。", "ProjNot": "项目初始化或者进行中时,才允许操作", - "TrialConfirm": "Trial访视计划已经确认,无法删除", + "TrialConfirm": "Trial检查批次计划已经确认,无法删除", "TrialIntoTheGroup": "该Trial有医生入组或在入组流程中,无法删除", "TrialHaveSite": "该Trial下面有Site,无法删除", "TrialHaveParticipants": "该Trial下面有参与者,无法删除", @@ -67,18 +67,18 @@ // SubjectService "VisitNotConfirmed": "试访计划尚未确定。添加主题前请联系项目经理确认访问计划", - "ExistedTrial": "在本试验中已经存在一个具有相同受试者ID的受试者.", - "TheLastVisit": "该受试者已经有访视设置为末次访视,不允许将该访视设置为末次访视", - "ImagesUploaded": "该受试者此访视后有影像上传,该访视不允许设置为末次访视", + "ExistedTrial": "在本试验中已经存在一个具有相同患者ID的患者.", + "TheLastVisit": "该患者已经有检查批次设置为末次检查批次,不允许将该检查批次设置为末次检查批次", + "ImagesUploaded": "该患者此检查批次后有影像上传,该检查批次不允许设置为末次检查批次", "StudyImagesCanBotDeleted": "本课题已上传研究图像进行访问,无法删除", // SubjectVisitService "ContainsVisitnum": "这个主题的访问计划已经包含了一个访问次数相同的访问", - //该受试者已经有访视设置为末次访视,不允许将该访视设置为末次访视 这个在上面有 TheLastVisit - "LastEvaluationNotAllowed": "设置末次评估后,不允许添加计划外访视", + //该患者已经有检查批次设置为末次检查批次,不允许将该检查批次设置为末次检查批次 这个在上面有 TheLastVisit + "LastEvaluationNotAllowed": "设置末次评估后,不允许添加计划外检查批次", "CRCSubmit": "CRC提交后,不允许修改PD确认状态", - "BacktrackingVisits": "回退的访视,不允许修改PD确认状态", - "ImageUpload": "该受试者此访视后有影像上传,该访视不允许设置为末次访视", + "BacktrackingVisits": "回退的检查批次,不允许修改PD确认状态", + "ImageUpload": "该患者此检查批次后有影像上传,该检查批次不允许设置为末次检查批次", "AssociatedUploaded": "本次访问与上传的研究图片有关,无法删除", "InPlanCanNotDeleted": "此访问为InPlan,不能删除", @@ -86,12 +86,12 @@ "OnlyInitializing": "只有“初始化中”和“正在进行中”才能进行操作", "AccordWithVisitNum": "对于访问计划,具有较大VisitNum的VisitDay应该大于具有较小VisitNum的VisitDay", "same/VisitName": "当前访问计划中已经存在具有相同VisitName/VisitNum的访问", - "AlreadyBaseline": "已访视是当前访视计划的基线", + "AlreadyBaseline": "已检查批次是当前检查批次计划的基线", "IsUploadVideo": "有CRC已经为基线上传了影像数据,不允许修改基线", - "VisitHasBeenExecuted": "访问计划已分配给受试者并执行", + "VisitHasBeenExecuted": "访问计划已分配给患者并执行", "OnlyProgressCanEdit": "仅仅在项目初始化或者进行中时,才允许修改确认", "NoBaselineNoConfirmation": "没有基线,不允许确认", - "NotConfirmedCanNotVisit": "项目配置未确认,不允许确认访视计划", + "NotConfirmedCanNotVisit": "项目配置未确认,不允许确认检查批次计划", "VisitDayNotMinimum": "基线VisitDay 不是最小的, 不允许确认", @@ -122,11 +122,11 @@ // QCOperationService "AuditQuestionMust": "必须填写审核问题,并保存,否则不允许添加质疑", - "VisitNoClose": "当前访视有未关闭的 同意CRC上传的质疑,不允许再次添加质疑", + "VisitNoClose": "当前检查批次有未关闭的 同意CRC上传的质疑,不允许再次添加质疑", "NotFinish": "CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑", "QCHasBeenReplied": "此QC质询已回复", "OperationUserMustBeCRC/PM": "一致性核查对话操作用户 只允许 CRC/PM", - "CanNotCloseQuery": "执行一致性核查的访视 不允许关闭质疑", + "CanNotCloseQuery": "执行一致性核查的检查批次 不允许关闭质疑", "OnlyPMCanSet": "只允许PM 手动设置一致性核查通过", "CanNotSettingConsistency": "当前是PM同意回退,不允许设置一致性核查通过", "ConsistencyNotClose": "致性核查质疑未关闭/审核状态不是通过,不允许设置一致性核查通过", @@ -137,15 +137,15 @@ "OnlyExcelCSV": "只允许Excel、 CSV!", "ExcelVerificationFailed": "请上传规定格式的Excel文件,保证有有效数据", "QCUnconfirmed": "QC问题未确认,不允许领取任务", - "MustBeFinish": "您已经领取了其他受试者,完成后才允许领取新的受试者", + "MustBeFinish": "您已经领取了其他患者,完成后才允许领取新的患者", "BeReceive": "当前已被领取,不允许领取", "CancelQCTask": "项目配置为不审,没有领取或者取消QC Task", "FirstTriaPassed": "初审已通过,不能继续领取", "CanNotReceive": "项目配置为单审,不满足SubmmitState:已提交 或者 AuditState:待审核/审核中, 不允许领取,请刷新界面", "MustBeDifferent": "复审不能和初审是同一个人", "IsNotSatisfied": "项目配置为复审,不满足提交状态:已提交 或者 审核状态:待审核/QC中, 不允许领取,请刷新界面", - "VisitNotUploaded": "有访视未上传任何Dicom/非Dicom数据 不允许提交", - "MandatoryFailed": "项目配置了需要填写首次给药日期 但是受试者没有填写首次给药日期,不允许提交", + "VisitNotUploaded": "有检查批次未上传任何Dicom/非Dicom数据 不允许提交", + "MandatoryFailed": "项目配置了需要填写首次给药日期 但是患者没有填写首次给药日期,不允许提交", "YouBeenRemoved": "您已经被移出项目,不允许该操作", "QuestionsNotClosed": "有质疑未关闭,不允许该操作", "CanNotSetQCPassed": "不审状态下,不允许设置为QC Passed", @@ -157,7 +157,7 @@ "NotInPrimaryQCQCFailed": "项目配置为单审 当前审核状态不为 InPrimaryQC,不能变更到 QCFailed", "TrialIsDoubleCheckCanNotQCFailed{0}": "项目配置为双审 当前审核状态为 {0},不能变更到 QCFailed", "CRCHasBeenSubmitted": "CRC已提交了 不能修改入组确认状态", - "CannotBeChangedPD": "回退的访视,不允许修改PD确认状态", + "CannotBeChangedPD": "回退的检查批次,不允许修改PD确认状态", "OtherQCProcessAudit": "其他QC正在进行审核,当前操作不允许", "ForwardFailed": "转发失败", @@ -185,9 +185,9 @@ //StudyListService - "TimeTooLow": "当前访视检查时间不能小于该访视之前检查的时间,请核对检查数据是否有误", + "TimeTooLow": "当前检查批次检查时间不能小于该检查批次之前检查的时间,请核对检查数据是否有误", "SomeoneLoading": "当前有人正在上传归档该检查!", - "VisitEnd": "受试者访视结束,不允许上传!", + "VisitEnd": "患者检查批次结束,不允许上传!", "DICOMUploaded{0}{1}{2}{3}": "{0}:此DICOM图片已上传并分配给课题{2}(研究ID:{3})的{1},课题{2}无法继续上传并分配给他人。", //StudyService @@ -195,15 +195,15 @@ //SystemAnonymizationService //ReadingImageTaskService - "ReadingImage_NotVisit": "系统调用错误,当前任务不是访视任务。", + "ReadingImage_NotVisit": "系统调用错误,当前任务不是检查批次任务。", "ReadingImage_CantSplit": "当前任务是基线任务,不能执行分裂病灶的操作。", "ReadingImage_BeSigned": "当前任务已经签名,请勿重复提交。", "ReadingImage_Beinvalid": "当前任务已失效,不能执行阅片。", - "ReadingImage_NotaTask": "合并的病灶并非同一个访视任务", + "ReadingImage_NotaTask": "合并的病灶并非同一个检查批次任务", "ReadingImage_DeleteError": "当前病灶分裂出其他病灶或者其他病灶合并到了当前病灶,删除失败。", "ReadingImage_Idnotcorrespond": "病灶标记添加失败,影像的Instance ID和Series ID不对应。", - "ReadingImage_IsLymphNotbigger": "当前访视该淋巴结病灶的短径小于上一访视的值,不能设置为显著增大。", - "ReadingImage_NotLymphNotbigger": "当前访视该非淋巴结病灶的长径小于上一访视的值,不能设置为显著增大。", + "ReadingImage_IsLymphNotbigger": "当前检查批次该淋巴结病灶的短径小于上一检查批次的值,不能设置为显著增大。", + "ReadingImage_NotLymphNotbigger": "当前检查批次该非淋巴结病灶的长径小于上一检查批次的值,不能设置为显著增大。", "ReadingImage_Twice": "系统调用错误,提交的问题及答案重复。", "ReadingImage_MaxQuestion": "按照《独立影像评估章程》的相关规则,当前病灶类型的病灶数量不超过{0}个。", "ReadingImage_Maxlesion": "按照《独立影像评估章程》的相关规则,同一器官的靶病灶数量不超过{0}个,请确认", @@ -212,7 +212,7 @@ "ReadingImage_RequiredQuestion": "提交前,请完成\"{0}\"", "ReadingImage_ClinicalRead": "临床数据未阅读,请确认!", "ReadingImage_IDMust": "系统调用失败,当没有任务ID的时候,标准ID必传。", - "ReadingImage_TaskFinish": "当前受试者所有阅片任务已完成,请知悉。", + "ReadingImage_TaskFinish": "当前患者所有阅片任务已完成,请知悉。", "ReadingImage_NeedRest": "您已连续阅片{0}个小时,请休息{1}分钟后,再继续阅片。", //ReadingJudgeTaskService "ReadingJudge_SouceIdNull": "系统调用失败,当前裁判的全局任务的SouceId为null。", diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs index f31eaaac..ac9eb48e 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs @@ -209,10 +209,10 @@ namespace IRaCIS.Core.Application.ViewModel { public Guid TrialId { get; set; } - //针对访视产生任务的 有用 + //针对检查批次产生任务的 有用 public bool IsAssignSubjectToDoctor { get; set; } - //访视任务产生的时候传递 + //检查批次任务产生的时候传递 public List VisitGenerataTaskList { get; set; } = new List(); diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index f1e3f0e7..1e323a40 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -82,13 +82,13 @@ namespace IRaCIS.Core.Application.ViewModel public ReadingTool? ReadingTool { get; set; } /// - /// 任务展示访视 读片任务显示是否顺序 + /// 任务展示检查批次 读片任务显示是否顺序 /// public bool IsReadingTaskViewInOrder { get; set; } = true; /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; @@ -178,7 +178,7 @@ namespace IRaCIS.Core.Application.ViewModel public ReReadingApplyState ReReadingApplyState { get; set; } public DateTime? SuggesteFinishedTime { get; set; } - //任务来源访视Id 方便回更访视读片状态 + //任务来源检查批次Id 方便回更检查批次读片状态 public Guid? SourceSubjectVisitId { get; set; } public Guid? SouceReadModuleId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs index 323a2d81..65c966eb 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs @@ -188,7 +188,7 @@ namespace IRaCIS.Core.Application.Service #region 废弃 /// - /// 获取访视任务 应用Subject后 医生比率情况 + /// 获取检查批次任务 应用Subject后 医生比率情况 /// /// [HttpPost] diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 4ed8bb46..78af17eb 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -182,7 +182,7 @@ namespace IRaCIS.Core.Application.Service }); - //最后一个访视添加全局 + //最后一个检查批次添加全局 if (filterObj.IsGenerateGlobalTask) { var lastTask = (subject.VisitTaskList.Take(filterObj.PlanVisitCount).Last()).Clone(); @@ -373,7 +373,7 @@ namespace IRaCIS.Core.Application.Service } - //最后一个访视添加全局 + //最后一个检查批次添加全局 if (filterObj.IsGenerateGlobalTask) { @@ -468,7 +468,7 @@ namespace IRaCIS.Core.Application.Service Expression> visitTaskFilter = comonTaskFilter.And(t => t.ReadingCategory == ReadingCategory.Visit); - ////所选访视数量 的访视 其中必有一个访视后有全局任务 + ////所选检查批次数量 的检查批次 其中必有一个检查批次后有全局任务 //if (filterObj.IsHaveReadingPeriod == true) //{ // //这里的过滤条件 不能用 where(comonTaskFilter) 会报错,奇怪的问题 只能重新写一遍 @@ -581,7 +581,7 @@ namespace IRaCIS.Core.Application.Service Expression> visitTaskFilter = comonTaskFilter.And(t => t.ReadingCategory == ReadingCategory.Visit); - ////所选访视数量 的访视 其中必有一个访视后有全局任务 + ////所选检查批次数量 的检查批次 其中必有一个检查批次后有全局任务 //if (filterObj.IsHaveReadingPeriod == true) //{ // //visitTaskFilter = visitTaskFilter.And(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Any(u => u.VisitTaskNum == t.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global] && u.ReadingCategory == ReadingCategory.Global)); diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 3223d5c1..7f8979cc 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service /// - /// 访视读片任务 + /// 检查批次读片任务 /// [ApiExplorerSettings(GroupName = "Trial")] public class VisitTaskHelpeService : IVisitTaskHelpeService @@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service //基于标准签名 产生任务 public async Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId) { - //找到一致性核查通过且没有产生任务的访视 + //找到一致性核查通过且没有产生任务的检查批次 var needGenerateVisit = await _subjectVisitRepository.Where(t => t.TrialId == trialId && t.CheckState == CheckStateEnum.CVPassed && !t.VisitTaskList.Any(u => u.TrialReadingCriterionId == confirmedTrialReadingCriterionId && u.SourceSubjectVisitId == t.Id && u.TaskState==TaskState.Effect && u.IsAnalysisCreate==false)).ToListAsync(); @@ -146,7 +146,7 @@ namespace IRaCIS.Core.Application.Service // } //} - //每个访视 根据项目配置生成任务 双审生成两个 + //每个检查批次 根据项目配置生成任务 双审生成两个 TaskUrgentType? taskUrgentType = null; @@ -323,7 +323,7 @@ namespace IRaCIS.Core.Application.Service private bool IsNeedClinicalDataSign(ReadingCategory readingCategory, bool isbaseLine, Guid trialReadingCriterionId, List trialClinicalDataSetList) { - //访视 + //检查批次 if (readingCategory == ReadingCategory.Visit) { if (isbaseLine) @@ -379,7 +379,7 @@ namespace IRaCIS.Core.Application.Service var haveSignedCount = _readingClinicalDataRepository .Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count(); - //访视 + //检查批次 if (readingCategory == ReadingCategory.Visit) { if (isbaseLine) @@ -499,7 +499,7 @@ namespace IRaCIS.Core.Application.Service { case GenerateTaskCategory.Visit: - //每个Subject 的每个访视 都要根据每个标准进行任务的生成 和分配(考虑回退后 的分配) + //每个Subject 的每个检查批次 都要根据每个标准进行任务的生成 和分配(考虑回退后 的分配) foreach (var subjectGroup in generateTaskCommand.VisitGenerataTaskList.GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, SubjectVisitList = g.ToList() })) @@ -565,7 +565,7 @@ namespace IRaCIS.Core.Application.Service //} - //每个访视 根据项目配置生成任务 双审生成两个 + //每个检查批次 根据项目配置生成任务 双审生成两个 //双重 可能有一个人的任务没分配,然后影像回退不会影响未分配的任务,所以生成的时候 要进行判断 不能每次都生成两个 if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double) @@ -661,25 +661,25 @@ namespace IRaCIS.Core.Application.Service if (assignConfigList.Count > 0 && trialReadingCriterionConfig.IsFollowVisitAutoAssign) { - #region 后续访视 未分配的进行再次分配,重置的或者失效的 需要重新生成新的任务 (PM 有序退回 或者PM 有序 申请重阅) + #region 后续检查批次 未分配的进行再次分配,重置的或者失效的 需要重新生成新的任务 (PM 有序退回 或者PM 有序 申请重阅) if (trialReadingCriterionConfig.IsReadingTaskViewInOrder) { - //之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去(排除失访的) + //之前有回退到影像上传的检查批次 那么当前检查批次一致性核查通过的时候,当前检查批次生成但是不分配出去(排除失访的) var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); - //之前有回退的,那么当前访视任务生成但是不分配 + //之前有回退的,那么当前检查批次任务生成但是不分配 if (beforeBackVisitTask != null) { //不用进行额外处理 - //访视2 PM 回退 基线回退 访视2先一致性核查通过,生成访视2任务,但是不分配 + //检查批次2 PM 回退 基线回退 检查批次2先一致性核查通过,生成检查批次2任务,但是不分配 } else { - #region 当前访视根据配置规则分配出去 + #region 当前检查批次根据配置规则分配出去 var defaultState = trialReadingCriterionConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskAllocationState.InitAllocated : TaskAllocationState.Allocated; @@ -704,12 +704,12 @@ namespace IRaCIS.Core.Application.Service #endregion } - //后续最近的未一致性核查通过的访视任务 + //后续最近的未一致性核查通过的检查批次任务 var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); - //大于当前访视 同时小于最近的未一致性核查通过的访视任务分配 或者生成 + //大于当前检查批次 同时小于最近的未一致性核查通过的检查批次任务分配 或者生成 - //存在退回访视1 又退回基线 这种情况 生成任务 考虑基线先一致性核查通过,但是访视1还未通过时 生成任务 + //存在退回检查批次1 又退回基线 这种情况 生成任务 考虑基线先一致性核查通过,但是检查批次1还未通过时 生成任务 var followVisitTaskList = await _visitTaskRepository .Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.SourceSubjectVisit.CheckState == CheckStateEnum.CVPassed && t.ReadingCategory == ReadingCategory.Visit && t.IsAnalysisCreate == false, true) .WhereIf(followBackVisitTask != null, t => t.VisitTaskNum < followBackVisitTask.VisitTaskNum) @@ -717,7 +717,7 @@ namespace IRaCIS.Core.Application.Service var followVisitGroup = followVisitTaskList.GroupBy(t => t.VisitTaskNum); - //每个访视去判断 是分配还是生成(因为影响哪里有些是取消分配,有些是重阅重置需要重新生成) + //每个检查批次去判断 是分配还是生成(因为影响哪里有些是取消分配,有些是重阅重置需要重新生成) foreach (var visitGroup in followVisitGroup) { @@ -746,7 +746,7 @@ namespace IRaCIS.Core.Application.Service bool isCanEdit = urgentType == TaskUrgentType.EnrollmentConfirm || urgentType == TaskUrgentType.PDProgress ? false : true; - //如果后续访视已分配有效 就不用处理 + //如果后续检查批次已分配有效 就不用处理 if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.DoubleReadingArm1)) { //不做处理 @@ -815,7 +815,7 @@ namespace IRaCIS.Core.Application.Service } - //如果后续访视已分配有效 就不用处理 + //如果后续检查批次已分配有效 就不用处理 if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.DoubleReadingArm2)) { //不做处理 @@ -916,7 +916,7 @@ namespace IRaCIS.Core.Application.Service } else - //后续访视不自动分配,或者配置的医生数量不足,就不进行分配 + //后续检查批次不自动分配,或者配置的医生数量不足,就不进行分配 { } @@ -991,17 +991,17 @@ namespace IRaCIS.Core.Application.Service if (assignConfigList.Count > 0) { - #region 重阅/退回的时候,需要将取消分配的访视类型的 任务重新分配 + #region 重阅/退回的时候,需要将取消分配的检查批次类型的 任务重新分配 if (trialReadingCriterionConfig.IsReadingTaskViewInOrder) { - //之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去(排除失访的) + //之前有回退到影像上传的检查批次 那么当前检查批次一致性核查通过的时候,当前检查批次生成但是不分配出去(排除失访的) var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); if (beforeBackVisitTask == null) { - #region 访视2 PM 回退 基线回退 访视2先一致性核查通过,生成访视2任务,但是不分配 + #region 检查批次2 PM 回退 基线回退 检查批次2先一致性核查通过,生成检查批次2任务,但是不分配 var defaultState = trialReadingCriterionConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskAllocationState.InitAllocated : TaskAllocationState.Allocated; @@ -1023,7 +1023,7 @@ namespace IRaCIS.Core.Application.Service var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); - //存在退回访视1 又退回基线 这种情况 生成任务 考虑基线先一致性核查通过,但是访视1还未通过时 生成任务 + //存在退回检查批次1 又退回基线 这种情况 生成任务 考虑基线先一致性核查通过,但是检查批次1还未通过时 生成任务 var followVisitTaskList = await _visitTaskRepository .Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.SourceSubjectVisit.CheckState == CheckStateEnum.CVPassed && t.ReadingCategory == ReadingCategory.Visit && t.IsAnalysisCreate == false, true) .WhereIf(followBackVisitTask != null, t => t.VisitTaskNum < followBackVisitTask.VisitTaskNum) @@ -1031,12 +1031,12 @@ namespace IRaCIS.Core.Application.Service var followVisitGroup = followVisitTaskList.GroupBy(t => t.VisitTaskNum); - //每个访视去判断 是分配还是生成 + //每个检查批次去判断 是分配还是生成 foreach (var visitGroup in followVisitGroup) { - //如果后续访视已分配有效 就不用处理 + //如果后续检查批次已分配有效 就不用处理 if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.SingleReadingArm)) { //不做处理 @@ -1096,7 +1096,7 @@ namespace IRaCIS.Core.Application.Service } } - //之前有回退的 后续访视不生成或者分配 当前访视生成但是不分配出去 + //之前有回退的 后续检查批次不生成或者分配 当前检查批次生成但是不分配出去 else { diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 07b9ef87..4527282e 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -25,7 +25,7 @@ using IRaCIS.Core.Domain.Share.Reading; namespace IRaCIS.Core.Application.Service.Allocation { /// - /// 访视读片任务 + /// 检查批次读片任务 /// [ApiExplorerSettings(GroupName = "Trial")] public class VisitTaskService : BaseService, IVisitTaskService @@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //if (inOrder) //{ - // //针对有序阅片 只分配< 最小的 不是一致性核查通过状态 和不是失访 的访视 的任务 + // //针对有序阅片 只分配< 最小的 不是一致性核查通过状态 和不是失访 的检查批次 的任务 // if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed && t.IsLostVisit == false)) // { // var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync(); @@ -312,10 +312,10 @@ namespace IRaCIS.Core.Application.Service.Allocation throw new BusinessValidationFailedException("出现脏数据 任务来源字段没有值"); } - //PM 回退了 但是还没生成任务 当前任务编号前有访视进行了回退就不允许分配 + //PM 回退了 但是还没生成任务 当前任务编号前有检查批次进行了回退就不允许分配 if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == visitTask.SubjectId && t.IsPMBackOrReReading && t.VisitNum <= visitTask.VisitTaskNum)) { - return ResponseOutput.NotOk("该受试者有访视进入了退回流程,还未经过一致性核查通过,不允许分配"); + return ResponseOutput.NotOk("该患者有检查批次进入了退回流程,还未经过一致性核查通过,不允许分配"); } @@ -340,7 +340,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //是否删除配置规则表里的 Subject 医生绑定关系 重新添加绑定关系 - //是否其该Subject 其他访视 绑定的医生 也同时变更? + //是否其该Subject 其他检查批次 绑定的医生 也同时变更? } @@ -618,7 +618,7 @@ namespace IRaCIS.Core.Application.Service.Allocation /// - /// 访视任务 + /// 检查批次任务 /// /// /// @@ -626,7 +626,7 @@ namespace IRaCIS.Core.Application.Service.Allocation [HttpPost] public async Task> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) { - //以前访视未产生任务的,在查询这里要产生 + //以前检查批次未产生任务的,在查询这里要产生 var svIdList = await _subjectVisitRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.CheckState == CheckStateEnum.CVPassed && t.IsVisitTaskGenerated == false).Select(t => t.Id).ToListAsync(); //之前没有生成任务的逻辑 但是现在加了,任务要自动生成 @@ -1009,7 +1009,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //.Where(t => t.VisitTaskNum < t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) ) .Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum < t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true) - //满足前序访视不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang + //满足前序检查批次不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang //但是加字段 IsFrontTaskNeedSignButNotSign 那么签名临床数据的时候,要对该subject 该标准的有效的任务 这个字段需要在签名的时候维护 采取这种方式 统计数字灵活 //.Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum)) .WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode) && t.IsAnalysisCreate)) @@ -1211,18 +1211,18 @@ namespace IRaCIS.Core.Application.Service.Allocation if (task.ReadingCategory != ReadingCategory.Visit) { - throw new BusinessValidationFailedException("PM 仅仅允许对访视类型的任务申请重阅"); + throw new BusinessValidationFailedException("PM 仅仅允许对检查批次类型的任务申请重阅"); } - // 有序 一个受试者访视重阅未处理完,不能申请其他的 + // 有序 一个患者检查批次重阅未处理完,不能申请其他的 if (criterionConfig.IsReadingTaskViewInOrder) { if (await _visitTaskReReadingRepository.AnyAsync(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect && t.OriginalReReadingTask.TrialReadingCriterionId == task.TrialReadingCriterionId && t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.TrialGroupApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default)) { - return ResponseOutput.NotOk("当前为有序阅片,该受试者已有访视已申请重阅还未处理(项目组申请),暂不能继续申请重阅"); + return ResponseOutput.NotOk("当前为有序阅片,该患者已有检查批次已申请重阅还未处理(项目组申请),暂不能继续申请重阅"); } } @@ -1243,7 +1243,7 @@ namespace IRaCIS.Core.Application.Service.Allocation && t.OriginalReReadingTask.TrialReadingCriterionId == task.TrialReadingCriterionId && t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default)) { - return ResponseOutput.NotOk("当前为有序阅片,该受试者已有访视已申请重阅还未处理,暂不能继续申请重阅"); + return ResponseOutput.NotOk("当前为有序阅片,该患者已有检查批次已申请重阅还未处理,暂不能继续申请重阅"); } @@ -1273,17 +1273,17 @@ namespace IRaCIS.Core.Application.Service.Allocation if (task.ReadingCategory == ReadingCategory.Judge && await _visitTaskRepository.AnyAsync(filterExpression.And(t => t.ReadingCategory == ReadingCategory.Global))) { - throw new BusinessValidationFailedException("有序阅片,只允许申请该受试者阅片人最后一次完成全局任务重阅"); + throw new BusinessValidationFailedException("有序阅片,只允许申请该患者阅片人最后一次完成全局任务重阅"); } if (task.ReadingCategory == ReadingCategory.Oncology && await _visitTaskRepository.AnyAsync(filterExpression.And(t => t.ReadingCategory == ReadingCategory.Oncology))) { - throw new BusinessValidationFailedException("有序阅片,只允许申请该受试者阅片人最后一次完成肿瘤学任务重阅"); + throw new BusinessValidationFailedException("有序阅片,只允许申请该患者阅片人最后一次完成肿瘤学任务重阅"); } if (task.ReadingCategory == ReadingCategory.Judge && await _visitTaskRepository.AnyAsync(filterExpression.And(t => t.ReadingCategory == ReadingCategory.Judge))) { - throw new BusinessValidationFailedException("有序阅片,只允许申请该受试者阅片人最后一次完成裁判的任务重阅"); + throw new BusinessValidationFailedException("有序阅片,只允许申请该患者阅片人最后一次完成裁判的任务重阅"); } } @@ -1291,7 +1291,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { if (task.ReadingCategory != ReadingCategory.Visit && task.ReadingCategory != ReadingCategory.Global) { - throw new BusinessValidationFailedException("无序阅片,仅仅允许IR 申请 全局和访视类型类别的任务进行重阅"); + throw new BusinessValidationFailedException("无序阅片,仅仅允许IR 申请 全局和检查批次类型类别的任务进行重阅"); } } @@ -1438,10 +1438,10 @@ namespace IRaCIS.Core.Application.Service.Allocation if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) { - //PM申请 SPM / CPM审批 回退访视,在此不生成访视任务 影响多个标准的任务 + //PM申请 SPM / CPM审批 回退检查批次,在此不生成检查批次任务 影响多个标准的任务 if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)) { - #region PM 申请两个IR 同一访视,其他人的申请记录也设置为同意 不会出现,因为在未处理前 一个Subject只能申请一次 + #region PM 申请两个IR 同一检查批次,其他人的申请记录也设置为同意 不会出现,因为在未处理前 一个Subject只能申请一次 // await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == origenalTask.SubjectId && @@ -1454,7 +1454,7 @@ namespace IRaCIS.Core.Application.Service.Allocation // RequestReReadingResultEnum = RequestReReadingResult.Agree, //}); - // //只更新 PM 申请 同一访视的数据 + // //只更新 PM 申请 同一检查批次的数据 // await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == origenalTask.SubjectId && // t.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed && // t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId && @@ -1468,7 +1468,7 @@ namespace IRaCIS.Core.Application.Service.Allocation #endregion - // 不管有序 无序 都会 回退访视 + // 不管有序 无序 都会 回退检查批次 if (origenalTask.ReadingCategory == ReadingCategory.Visit) { //执行类似一致性核查回退流程 @@ -1476,7 +1476,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } else { - throw new BusinessValidationFailedException("仅允许同意访视类型的任务重阅"); + throw new BusinessValidationFailedException("仅允许同意检查批次类型的任务重阅"); } //有序阅片 @@ -1484,7 +1484,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { - //访视影响当前以及当前之后的 两个阅片人的 + //检查批次影响当前以及当前之后的 两个阅片人的 filterExpression = filterExpression.And(t => t.VisitTaskNum >= origenalTask.VisitTaskNum); @@ -1516,7 +1516,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //申请的检查批次 要不是重阅重置,要不就是失效 不会存在取消分配 if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != origenalTask.VisitTaskNum) { if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) @@ -1540,7 +1540,7 @@ namespace IRaCIS.Core.Application.Service.Allocation trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.CancelAssign }); } } - //当前访视 + //当前检查批次 else { if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) @@ -1619,10 +1619,10 @@ namespace IRaCIS.Core.Application.Service.Allocation } - //IR申请 PM 审批 注意这里有一致性分析的申请同意 不会回退访视,在此要生成影响的访视任务 + //IR申请 PM 审批 注意这里有一致性分析的申请同意 不会回退检查批次,在此要生成影响的检查批次任务 else if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.DocotorApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.AIR)) { - #region 两个IR 申请同一访视,其他人的申请记录也设置为同意 + #region 两个IR 申请同一检查批次,其他人的申请记录也设置为同意 await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == origenalTask.SubjectId && @@ -1651,14 +1651,14 @@ namespace IRaCIS.Core.Application.Service.Allocation if (criterionConfig.IsReadingTaskViewInOrder) { - #region 有序 IR 申请 重阅 影响的其他访视查询 + #region 有序 IR 申请 重阅 影响的其他检查批次查询 switch (origenalTask.ReadingCategory) { case ReadingCategory.Visit: - //影响后续访视已经读完的,正在读的,未读的不做处理 以及其他类型任务 + //影响后续检查批次已经读完的,正在读的,未读的不做处理 以及其他类型任务 filterExpression = filterExpression.And(t => t.VisitTaskNum >= origenalTask.VisitTaskNum && ((t.DoctorUserId == origenalTask.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || t.ReadingCategory == ReadingCategory.Global)) || @@ -1667,7 +1667,7 @@ namespace IRaCIS.Core.Application.Service.Allocation break; - //不影响后续访视: (t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || + //不影响后续检查批次: (t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || case ReadingCategory.Global: filterExpression = filterExpression.And(t => t.VisitTaskNum > origenalTask.VisitTaskNum && @@ -1677,7 +1677,7 @@ namespace IRaCIS.Core.Application.Service.Allocation case ReadingCategory.Oncology: - //仅仅影响自己 后续任务如果是访视任务、全局任务或裁判任务,均不处理 + //仅仅影响自己 后续任务如果是检查批次任务、全局任务或裁判任务,均不处理 filterExpression = filterExpression.And(t => t.Id == origenalTask.Id); break; @@ -1802,7 +1802,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } - //无序阅片 只会申请访视类型和裁判类型的任务 注意这里有一致性分析的申请同意 + //无序阅片 只会申请检查批次类型和裁判类型的任务 注意这里有一致性分析的申请同意 else { //1.当前任务及裁判任务 @@ -1966,13 +1966,13 @@ namespace IRaCIS.Core.Application.Service.Allocation if (task.TaskState != TaskState.Effect || task.ReadingCategory != ReadingCategory.Visit || task.ReadingTaskState == ReadingTaskState.HaveSigned) { - return ResponseOutput.NotOk("仅仅允许针对生效、未完成的访视任务进行退回操作,请刷新页面数据"); + return ResponseOutput.NotOk("仅仅允许针对生效、未完成的检查批次任务进行退回操作,请刷新页面数据"); } if( await _subjectVisitRepository.AnyAsync(t=>t.Id==task.SourceSubjectVisitId && t.CheckState!= CheckStateEnum.CVPassed)) { - return ResponseOutput.NotOk("当前访视已回退到影像上传,不允许继续回退!"); + return ResponseOutput.NotOk("当前检查批次已回退到影像上传,不允许继续回退!"); } @@ -1988,7 +1988,7 @@ namespace IRaCIS.Core.Application.Service.Allocation #region 有序 无序公用流程 - //执行类似一致性核查回退流程 回退访视到影像上传流程 + //执行类似一致性核查回退流程 回退检查批次到影像上传流程 await VisitBackAsync(task.SourceSubjectVisitId); #endregion @@ -2014,7 +2014,7 @@ namespace IRaCIS.Core.Application.Service.Allocation #region 方式一 //foreach (var influenceTask in influenceTaskList) //{ - // //申请任务的阅片人 后续任务肯定没做, 只有访视任务,没有其他任务 取消分配 + // //申请任务的阅片人 后续任务肯定没做, 只有检查批次任务,没有其他任务 取消分配 // if (influenceTask.DoctorUserId == task.DoctorUserId) // { @@ -2118,7 +2118,7 @@ namespace IRaCIS.Core.Application.Service.Allocation foreach (var influenceTask in influenceTaskList) { - //同意的访视 因为要记录具体的操作,所以废弃 + //同意的检查批次 因为要记录具体的操作,所以废弃 if (influenceTask.Id == task.Id) { //influenceTaskList.ForEach(t => @@ -2136,10 +2136,10 @@ namespace IRaCIS.Core.Application.Service.Allocation influenceTask.IsPMSetBack = true; } - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //申请的检查批次 要不是重阅重置,要不就是失效 不会存在取消分配 if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != task.VisitTaskNum) { - //后续访视处理访视 + //后续检查批次处理检查批次 if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { influenceTask.TaskState = TaskState.HaveReturned; @@ -2163,7 +2163,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } else { - //申请的访视 全局肿瘤学 + //申请的检查批次 全局肿瘤学 if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { @@ -2193,7 +2193,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //// 当前任务标为失效 //task.TaskState = TaskState.Adbandon; - ////考虑该访视 另外一个阅片人的任务 + ////考虑该检查批次 另外一个阅片人的任务 //var otherReviewerTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.Id != task.Id && t.TaskState == TaskState.Effect); @@ -2208,7 +2208,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //} - // 申请该访视的任务 申请人失效 另外一个人重阅重置或者失效 + // 申请该检查批次的任务 申请人失效 另外一个人重阅重置或者失效 var currentVisitList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.ReadingCategory == ReadingCategory.Visit && t.TaskState == TaskState.Effect && t.VisitTaskNum == task.VisitTaskNum, true).ToListAsync(); @@ -2232,7 +2232,7 @@ namespace IRaCIS.Core.Application.Service.Allocation origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); } - ////同意的访视 + ////同意的检查批次 //if (influenceTask.Id == task.Id) //{ // currentVisitList.ForEach(t => @@ -2323,7 +2323,7 @@ namespace IRaCIS.Core.Application.Service.Allocation /// - /// 影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是访视类型的) + /// 影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是检查批次类型的) /// /// /// 重阅还是直接回退 @@ -2343,7 +2343,7 @@ namespace IRaCIS.Core.Application.Service.Allocation Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; - //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局) + //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的检查批次和全局) filterExpression = filterExpression.And(t => t.IsAnalysisCreate == filterObj.IsAnalysisCreate); @@ -2360,7 +2360,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId); - //当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务 + //当前任务及其之后的所有检查批次任务、全局任务、裁判任务、肿瘤学阅片任务 //有序 if (criterionConfig.IsReadingTaskViewInOrder) @@ -2369,9 +2369,9 @@ namespace IRaCIS.Core.Application.Service.Allocation switch (filterObj.ReadingCategory) { case ReadingCategory.Visit: - //影响当前医生 以及当前医生之后的 1、访视任务 已经读完的 + //影响当前医生 以及当前医生之后的 1、检查批次任务 已经读完的 //2、后续任务如果是全局、肿瘤学阅片任务,状态为阅片完成标记为重阅重置;若在阅片中,则标记为失效;若为待阅片,则标记为失效; - //3、当前任务、后续访视任务或者全局任务触发了裁判任务,若裁判任务状态为阅片完成,则标记为重阅重置;若在阅片中或待阅片,则标记为失效 + //3、当前任务、后续检查批次任务或者全局任务触发了裁判任务,若裁判任务状态为阅片完成,则标记为重阅重置;若在阅片中或待阅片,则标记为失效 // filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && //((t.DoctorUserId == filterObj.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) // || @@ -2394,7 +2394,7 @@ namespace IRaCIS.Core.Application.Service.Allocation case ReadingCategory.Global: - // 1、后续任务如果是访视任务,均不处理; + // 1、后续任务如果是检查批次任务,均不处理; //2、后续任务如果是全局、状态为阅片完成则标记为重阅重置,若阅片中或待阅片则不处理; //3、当前任务或者全局任务触发了裁判任务,若裁判任务状态为阅片完成,则标记为重阅重置;若在阅片中或待阅片,则标记为失效 //4、后续任务为肿瘤学阅片任务,状态为阅片完成标记为重阅重置;若在阅片中,则标记为失效;若为待阅片,则标记为失效; @@ -2412,7 +2412,7 @@ namespace IRaCIS.Core.Application.Service.Allocation break; - //1、后续任务如果是访视任务、全局任务或裁判任务,均不处理; + //1、后续任务如果是检查批次任务、全局任务或裁判任务,均不处理; case ReadingCategory.Oncology: //仅仅影响自己 @@ -2422,7 +2422,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //(只允许申请该阅片人最后一次完成裁判的任务重阅)申请的时候做了限制 case ReadingCategory.Judge: - // 1、后续任务如果是访视任务、全局任务,均不处理; + // 1、后续任务如果是检查批次任务、全局任务,均不处理; //2、后续若有肿瘤学阅片,若肿瘤学阅片任务状态为阅片完成,则标记为重阅重置;若为阅片中则标记为失效,如为待阅片,则取消分配 //裁判的影响自己 和后续肿瘤学阅片(不是自己做的) @@ -2446,7 +2446,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //throw new BusinessValidationFailedException("仅允许PM 同意 IR 申请的任务"); } - //PM 影响所有阅片人 仅仅针对访视 SPM CPM 掉用 + //PM 影响所有阅片人 仅仅针对检查批次 SPM CPM 掉用 else if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.ProjectManager) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId == null)) @@ -2458,7 +2458,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { case ReadingCategory.Visit: - //访视影响当前以及当前之后的 两个阅片人的 + //检查批次影响当前以及当前之后的 两个阅片人的 filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum); break; @@ -2484,7 +2484,7 @@ namespace IRaCIS.Core.Application.Service.Allocation filterExpression = filterExpression.And(t => t.VisitTaskNum == filterObj.VisitTaskNum || t.VisitTaskNum == judegTaskNum); } - //throw new BusinessValidationFailedException("仅允许SPM CPM 同意 PM 申请的非 一致性分析的访视任务"); + //throw new BusinessValidationFailedException("仅允许SPM CPM 同意 PM 申请的非 一致性分析的检查批次任务"); } else { @@ -2496,7 +2496,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } - //退回影响 仅仅针对是访视类型的 影响多个标准的任务 + //退回影响 仅仅针对是检查批次类型的 影响多个标准的任务 else { @@ -2510,10 +2510,10 @@ namespace IRaCIS.Core.Application.Service.Allocation //有序 if (criterionConfig.IsReadingTaskViewInOrder) { - // 当前任务及其之后的所有访视任务 两个阅片人的 + // 当前任务及其之后的所有检查批次任务 两个阅片人的 - // 1.后续访视不处理 - //2.当前任务未完成,不会产生全局任务。后续任务均为访视任务,且均为待阅片,取消分配; + // 1.后续检查批次不处理 + //2.当前任务未完成,不会产生全局任务。后续任务均为检查批次任务,且均为待阅片,取消分配; filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum); @@ -2532,7 +2532,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } else { - throw new BusinessValidationFailedException("仅仅访视类型的任务支持PM退回"); + throw new BusinessValidationFailedException("仅仅检查批次类型的任务支持PM退回"); } } @@ -2589,7 +2589,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //有序 if (criterionConfig.IsReadingTaskViewInOrder) { - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //申请的检查批次 要不是重阅重置,要不就是失效 不会存在取消分配 if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) { if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) @@ -2637,10 +2637,10 @@ namespace IRaCIS.Core.Application.Service.Allocation //有序 if (criterionConfig.IsReadingTaskViewInOrder) { - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //申请的检查批次 要不是重阅重置,要不就是失效 不会存在取消分配 if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) { - //后续访视处理访视 + //后续检查批次处理检查批次 if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { influenceTask.OptType = ReReadingOrBackOptType.Return; @@ -2656,7 +2656,7 @@ namespace IRaCIS.Core.Application.Service.Allocation } else { - //申请的访视 全局肿瘤学 + //申请的检查批次 全局肿瘤学 if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index d1229f23..68a26e88 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Service.Common /// - /// 影像上传列表 只导出已上传状态的访视记录 + /// 影像上传列表 只导出已上传状态的检查批次记录 /// /// /// @@ -128,7 +128,7 @@ namespace IRaCIS.Core.Application.Service.Common /// - /// 受试者信息导出表 + /// 患者信息导出表 /// /// /// @@ -148,7 +148,7 @@ namespace IRaCIS.Core.Application.Service.Common .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex)) .WhereIf(param.Status != null, t => t.Status == param.Status) .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId) - // CRC 只负责他管理site的受试者 + // CRC 只负责他管理site的患者 .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Service.Common ///// - ///// 受试者 阅片期 进度表 导出 + ///// 患者 阅片期 进度表 导出 ///// ///// ///// @@ -735,7 +735,7 @@ namespace IRaCIS.Core.Application.Service.Common var subjectQuerybal = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct(); var allList = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) - .Where(t => (t.IsSelfAnalysis == true || t.IsSelfAnalysis == null)&& t.VisitTaskNum>0) //一致性分析的结果 + 正常任务的结果 + 仅仅访视的结果 +去除基线 + .Where(t => (t.IsSelfAnalysis == true || t.IsSelfAnalysis == null)&& t.VisitTaskNum>0) //一致性分析的结果 + 正常任务的结果 + 仅仅检查批次的结果 +去除基线 //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) @@ -763,7 +763,7 @@ namespace IRaCIS.Core.Application.Service.Common //To do 根据任务Id 找对评估结果,这里需要考虑标准 以及对应的翻译 - //基线和访视的评估结果翻译枚举 分别对应着 + //基线和检查批次的评估结果翻译枚举 分别对应着 foreach (var item in list) { @@ -771,11 +771,11 @@ namespace IRaCIS.Core.Application.Service.Common var selfAnalysisTask = allList.Where(t => t.IsSelfAnalysis == true && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName).FirstOrDefault(); - //因为基线的评估结果是 是否存在疾病 而 其他访视的结果是 整体肿瘤评估结果 是用不同的枚举翻译的 所以这里手动翻译 不把翻译逻辑耦合到通用的翻译代码里面 在此特殊处理 + //因为基线的评估结果是 是否存在疾病 而 其他检查批次的结果是 整体肿瘤评估结果 是用不同的枚举翻译的 所以这里手动翻译 不把翻译逻辑耦合到通用的翻译代码里面 在此特殊处理 item.AgainEvaluateResult = selfAnalysisTask?.EvaluateResult ?? String.Empty; - //将自身一致性分析的字段 赋值到访视任务这个字段 + //将自身一致性分析的字段 赋值到检查批次任务这个字段 item.IsAnalysisDiffToOriginalData = selfAnalysisTask?.IsAnalysisDiffToOriginalData; } @@ -817,7 +817,7 @@ namespace IRaCIS.Core.Application.Service.Common var subjectQuerybal = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == false).Select(t => t.SubjectId).Distinct(); var allList = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) - .Where(t => (t.IsSelfAnalysis == false || t.IsSelfAnalysis == null) && t.VisitTaskNum > 0) //一致性分析的结果 + 正常任务的结果 +仅仅访视的结果 + .Where(t => (t.IsSelfAnalysis == false || t.IsSelfAnalysis == null) && t.VisitTaskNum > 0) //一致性分析的结果 + 正常任务的结果 +仅仅检查批次的结果 //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) @@ -846,7 +846,7 @@ namespace IRaCIS.Core.Application.Service.Common var newList = new List(); - // 每个subject访视进行分组 + // 每个subject检查批次进行分组 foreach (var group in list.GroupBy(t => new { t.SubjectCode, t.VisitTaskNum, t.TaskName, t.ArmEnum }) .OrderBy(g => g.Key.SubjectCode) @@ -857,7 +857,7 @@ namespace IRaCIS.Core.Application.Service.Common var subjectVisitGroupList = group.ToList(); - //找到当前访视组间一致性分析的任务结果 + //找到当前检查批次组间一致性分析的任务结果 var groupTaskList = allList.Where(t => t.IsSelfAnalysis == false && t.SubjectCode == group.Key.SubjectCode && t.VisitTaskNum == group.Key.VisitTaskNum && t.TaskName == group.Key.TaskName).ToList(); diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs index cdd1685d..63c56d6a 100644 --- a/IRaCIS.Core.Application/Service/Common/MailService.cs +++ b/IRaCIS.Core.Application/Service/Common/MailService.cs @@ -192,7 +192,7 @@ namespace IRaCIS.Application.Services EventHandler sucessHandle = (sender, args) => { - var code = verificationCode.ToString(); + var code = verificationCode.ToString().Trim(); _ = _verificationCodeRepository.AddAsync(new VerificationCode() { CodeType = Core.Domain.Share.VerifyType.Email, diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 26c7ac38..2e76c7ab 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -436,7 +436,7 @@ namespace IRaCIS.Core.Application.Service if (businessScenarioEnum == CommonDocumentBusinessScenario.EnrollConfirmed) { - sendEmailConfig.TopicDescription = $"【入组确认报告】关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}受试者"; + sendEmailConfig.TopicDescription = $"【入组确认报告】关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}患者"; using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) { @@ -450,7 +450,7 @@ namespace IRaCIS.Core.Application.Service } else if (businessScenarioEnum == CommonDocumentBusinessScenario.PDConfirmed) { - sendEmailConfig.TopicDescription = $"【疾病进展确认报告】关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}受试者"; + sendEmailConfig.TopicDescription = $"【疾病进展确认报告】关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}患者"; using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) { @@ -540,10 +540,10 @@ namespace IRaCIS.Core.Application.Service { - //仲裁在访视上 就没有全局阅片 没有阅片期 + //仲裁在检查批次上 就没有全局阅片 没有阅片期 if (taskInfo.ArbitrationRule == ArbitrationRule.Visit) { - //找到 访视,裁判 所有有效任务(不可能有全局的) 访视和裁判任务的SourceSubjectVisitId 一样 + //找到 检查批次,裁判 所有有效任务(不可能有全局的) 检查批次和裁判任务的SourceSubjectVisitId 一样 var taskList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Judge)).ToListAsync(); @@ -581,11 +581,11 @@ namespace IRaCIS.Core.Application.Service //仲裁在阅片期 else if (taskInfo.ArbitrationRule == ArbitrationRule.Reading) { - //是访视任务 不可能是裁判任务(访视上不会生成裁判),也不会是全局任务(全局任务 SourceSubjectVisitId=null ) + //是检查批次任务 不可能是裁判任务(检查批次上不会生成裁判),也不会是全局任务(全局任务 SourceSubjectVisitId=null ) if (taskInfo.SourceSubjectVisitId != null) { - //访视类型的任务 根本就不需要发送邮件 + //检查批次类型的任务 根本就不需要发送邮件 isNeedSend = false; @@ -648,7 +648,7 @@ namespace IRaCIS.Core.Application.Service ////单重 //else if (taskInfo.ReadingType == ReadingMethod.Single) //{ - // //仲裁在访视上 或者在阅片期 + // //仲裁在检查批次上 或者在阅片期 // if (taskInfo.ArbitrationRule != ArbitrationRule.None) // { @@ -656,21 +656,21 @@ namespace IRaCIS.Core.Application.Service // } - // //要求PD 确认的访视 是截止访视 还是非截止访视(根据该访视有没有配置阅片期来判断) + // //要求PD 确认的检查批次 是截止检查批次 还是非截止检查批次(根据该检查批次有没有配置阅片期来判断) // if (taskInfo.ReadingCategory == ReadingCategory.Visit) // { - // //存在阅片期 那么就是截止访视 + // //存在阅片期 那么就是截止检查批次 // if (await _repository.Where(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.SubjectVisitId == taskInfo.SourceSubjectVisitId && t.ReadingSetType == ReadingSetType.ImageReading).AnyAsync()) // { // isNeedSend = false; // } - // else//非截止访视 在访视读完后,发送 + // else//非截止检查批次 在检查批次读完后,发送 // { // answer = await TranslatePdStateAsync(visitTaskId, ReadingCategory.Visit, taskInfo.CriterionType); // } // } - // //截止访视 在访视读完,并完成全局阅片后发送全局的结果 + // //截止检查批次 在检查批次读完,并完成全局阅片后发送全局的结果 // else if (taskInfo.ReadingCategory == ReadingCategory.Global) // { // answer = await TranslatePdStateAsync(visitTaskId, ReadingCategory.Global, taskInfo.CriterionType); @@ -715,10 +715,10 @@ namespace IRaCIS.Core.Application.Service // isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, new List() { visitTaskId }, minUserIdList); // } - // //双重 截止访视只在阅片期的时候存在 要求PD确认的访视 肯定是非截止访视 + // //双重 截止检查批次只在阅片期的时候存在 要求PD确认的检查批次 肯定是非截止检查批次 // else if (taskInfo.ReadingType == ReadingMethod.Double && taskInfo.ArbitrationRule == ArbitrationRule.Visit) // { - // //在两位阅片人读完访视后,如果有裁判者等裁判读完,如果无裁判则等第二个人的读完 + // //在两位阅片人读完检查批次后,如果有裁判者等裁判读完,如果无裁判则等第二个人的读完 // var taskList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect // && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Judge)).ToListAsync(); @@ -748,7 +748,7 @@ namespace IRaCIS.Core.Application.Service // } // else // { - // throw new BusinessValidationFailedException("无序阅片配置有误(应为单重无仲裁对象,双重针对访视仲裁),请核查!"); + // throw new BusinessValidationFailedException("无序阅片配置有误(应为单重无仲裁对象,双重针对检查批次仲裁),请核查!"); // } //} @@ -884,7 +884,7 @@ namespace IRaCIS.Core.Application.Service var trialConfig = await _subjectRepository.Where(t => t.Id == subjectId).Select(t => new { t.Trial.IsEnrollementQualificationConfirm, t.Trial.IsPDProgressView }).FirstNotNullAsync(); - //找到入组确认 或者Pd 进展 已生成任务的 访视 + //找到入组确认 或者Pd 进展 已生成任务的 检查批次 var subjectVisitList = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId & t.CheckState == CheckStateEnum.CVPassed && (t.IsEnrollmentConfirm == true || t.PDState == PDStateEnum.PDProgress)).ToListAsync(); if (businessScenarioEnum == CommonDocumentBusinessScenario.EnrollConfirmed) @@ -898,7 +898,7 @@ namespace IRaCIS.Core.Application.Service var exisitBaseline = subjectVisitList.FirstOrDefault(t => t.IsEnrollmentConfirm); if (exisitBaseline == null) { - return ResponseOutput.NotOk("不存在配置了入组确认的并且生成任务的基线访视"); + return ResponseOutput.NotOk("不存在配置了入组确认的并且生成任务的基线检查批次"); } else { @@ -949,13 +949,13 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.NotOk("项目未配置PD进展!"); } - //是否是截止访视 截止访视在全局发 否则就在当前访视发 + //是否是截止检查批次 截止检查批次在全局发 否则就在当前检查批次发 var pdSubjectVisitIdList = subjectVisitList.Where(t => t.PDState == PDStateEnum.PDProgress).OrderBy(t => t.VisitNum).Select(t => (Guid?)t.Id).ToList(); if (pdSubjectVisitIdList.Count == 0) { - return ResponseOutput.NotOk("不存在配置了PD进展的并且生成任务的访视"); + return ResponseOutput.NotOk("不存在配置了PD进展的并且生成任务的检查批次"); } @@ -967,10 +967,10 @@ namespace IRaCIS.Core.Application.Service // 项目双重 if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double && trialReadingCriterionConfig.IsReadingTaskViewInOrder) { - //仲裁在访视上面 + //仲裁在检查批次上面 if (trialReadingCriterionConfig.ArbitrationRule == ArbitrationRule.Visit) { - //在两位阅片人读完访视后,如果有裁判者等裁判读完,如果无裁判则等第二个人的读完 + //在两位阅片人读完检查批次后,如果有裁判者等裁判读完,如果无裁判则等第二个人的读完 var taskList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == currentLatestPdVisitId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Judge)).ToListAsync(); @@ -999,7 +999,7 @@ namespace IRaCIS.Core.Application.Service } else { - return ResponseOutput.NotOk("当前受试者最新PD访视阅片任务完成状态不符合发送条件"); + return ResponseOutput.NotOk("当前患者最新PD检查批次阅片任务完成状态不符合发送条件"); } } @@ -1011,7 +1011,7 @@ namespace IRaCIS.Core.Application.Service if (existReadModule == null) { - return ResponseOutput.NotOk("项目配置了阅片期仲裁,但是当前受试者最新PD访视没有影像学阅片期"); + return ResponseOutput.NotOk("项目配置了阅片期仲裁,但是当前患者最新PD检查批次没有影像学阅片期"); } else { @@ -1045,7 +1045,7 @@ namespace IRaCIS.Core.Application.Service else { - return ResponseOutput.NotOk("当前受试者最新PD访视阅片期任务完成状态不符合发送条件"); + return ResponseOutput.NotOk("当前患者最新PD检查批次阅片期任务完成状态不符合发送条件"); } } @@ -1058,7 +1058,7 @@ namespace IRaCIS.Core.Application.Service } #region 发送邮件屏蔽单重阅片情况 - //// 项目单重 判断最新的Pd 访视是否完成 是否有阅片期即可 + //// 项目单重 判断最新的Pd 检查批次是否完成 是否有阅片期即可 //else if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Single) //{ @@ -1070,11 +1070,11 @@ namespace IRaCIS.Core.Application.Service // if (task == null) // { - // return ResponseOutput.NotOk("当前受试者最新PD访视任务未阅片完成"); + // return ResponseOutput.NotOk("当前患者最新PD检查批次任务未阅片完成"); // } // else // { - // //存在阅片期 那么就是截止访视 + // //存在阅片期 那么就是截止检查批次 // var existReadModule = await _repository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectVisitId == currentLatestPdVisitId && t.ReadingSetType == ReadingSetType.ImageReading) // .FirstOrDefaultAsync(); @@ -1093,11 +1093,11 @@ namespace IRaCIS.Core.Application.Service // } // else // { - // return ResponseOutput.NotOk("当前受试者阅片期任务未阅片完成"); + // return ResponseOutput.NotOk("当前患者阅片期任务未阅片完成"); // } // } - // else//非截止访视 在访视读完后,发送 + // else//非截止检查批次 在检查批次读完后,发送 // { // var filePath = await BaseBusinessScenarioSendEmailAsync(task.Id, true, EmailStoreSendMode.OnlyStoreLocalNotSentEmail, string.Empty); @@ -1199,7 +1199,7 @@ namespace IRaCIS.Core.Application.Service //} else { - throw new BusinessValidationFailedException("不应有 除访视、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑"); + throw new BusinessValidationFailedException("不应有 除检查批次、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑"); } if (answer == OverallAssessment.PD.GetEnumInt()) @@ -1238,7 +1238,7 @@ namespace IRaCIS.Core.Application.Service //} else { - throw new BusinessValidationFailedException("不应有 除访视、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑"); + throw new BusinessValidationFailedException("不应有 除检查批次、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑"); } if (answer == VisitTumorEvaluation.PD.GetEnumInt()) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs index e16e0b16..2dfb1773 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs @@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Services if (imageShareCommand.StudyId == null) { - #region 上传不按照访视上传,基线没传,数据可能出错 + #region 上传不按照检查批次上传,基线没传,数据可能出错 //var subjectVisit1 = _subjectVisitRepository.FirstOrDefault(t => // t.TrialId == imageShareCommand.TrialId && t.SubjectId == imageShareCommand.SubjectId && diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 48e5f0fa..400cea96 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -345,8 +345,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc /// - /// 获取某个检查的关联检查列表(该受试者在这个想项目下的所有检查) - /// 点击检查检查列表中的一个检查获取对应的序列列表(调用之前的接口:/series/list/,根据StudyId,获取访视的序列列表) + /// 获取某个检查的关联检查列表(该患者在这个想项目下的所有检查) + /// 点击检查检查列表中的一个检查获取对应的序列列表(调用之前的接口:/series/list/,根据StudyId,获取检查批次的序列列表) /// /// [HttpGet("{subjectVisitId:guid}")] @@ -418,21 +418,21 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc if (trialInfo.IsVerifyVisitImageDate) { - //小于当前访视 最近的最晚拍片 + //小于当前检查批次 最近的最晚拍片 var before = visitList.Where(u => u.VisitNum < verifyInfo.VisitNum).Max(k => k.LatestScanDate); if (before != null && waitUploadItem.StudyDate != null && before > waitUploadItem.StudyDate) { - result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前访视检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); + result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前检查批次检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能早于前序检查批次检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); return; } - //大于当前访视 最近的最早拍片日期 + //大于当前检查批次 最近的最早拍片日期 var after = visitList.Where(u => u.VisitNum > verifyInfo.VisitNum).Min(k => k.EarliestScanDate); if (after != null && waitUploadItem.StudyDate != null && after < waitUploadItem.StudyDate) { - result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前访视检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); + result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前检查批次检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能晚于该检查批次之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); return; } } @@ -468,7 +468,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc result.AllowReUpload = false; result.StudyInstanceUid = studyInstanceUid; - result.ErrorMesseage = "受试者访视结束,不允许上传!"; + result.ErrorMesseage = "患者检查批次结束,不允许上传!"; return result; } @@ -489,12 +489,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc //数据库该项目有该检查 看是否支持重传 else { - //是同一个受试者 支持重传 + //是同一个患者 支持重传 if (verifyStudyInfo.SubjectId == SubjectId && verifyStudyInfo.SubjectVisitId == currentSubjectVisitId) { result.AllowReUpload = true; } - //不是同一个受试者 + //不是同一个患者 else { //有默认值,其实不用写,这里为了好理解 @@ -502,7 +502,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc result.AllowReUpload = false; - result.ErrorMesseage = $"此处不可以上传。当前影像检查已经上传给受试者{verifyStudyInfo.SubjectCode}的{verifyStudyInfo.VisitName}"; + result.ErrorMesseage = $"此处不可以上传。当前影像检查已经上传给患者{verifyStudyInfo.SubjectCode}的{verifyStudyInfo.VisitName}"; } } result.StudyInstanceUid = studyInstanceUid; diff --git a/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs b/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs index 1e4b7cb0..76583419 100644 --- a/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs +++ b/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs @@ -66,12 +66,12 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO public string SiteName { get; set; } = string.Empty; /// - /// 受试者Code + /// 患者Code /// public string SubjectCode { get; set; } = string.Empty; /// - /// 访视名称 + /// 检查批次名称 /// public string SubjectVisitName { get; set; } = string.Empty; @@ -100,7 +100,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO public string Identification { get; set; } = string.Empty; /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } @@ -302,7 +302,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO } #endregion - #region 受试者 + #region 患者 public class InsSubjectCommand : InspectionBase, IInspectionDTO, ISignDTO { public SubjectCommand OptCommand { get; set; } @@ -435,7 +435,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO public Guid? SiteId { get; set; } /// - /// 受试者 + /// 患者 /// public string SubjectInfo { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index fbbe9b11..d71822b7 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -498,10 +498,6 @@ namespace IRaCIS.Application.Services saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User)); - if (saveItem.IsZhiZhun) - { - saveItem.OrganizationName = AppSettings.DefaultInternalOrganizationName; - } saveItem.Password = MD5Helper.Md5("123456"); @@ -541,11 +537,6 @@ namespace IRaCIS.Application.Services _mapper.Map(model, user); - //if (user.IsZhiZhun) - //{ - // user.OrganizationName = AppSettings.DefaultInternalOrganizationName; - //} - var success = await _userRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs index 3404bc92..4f81bcef 100644 --- a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs @@ -9,7 +9,7 @@ using IRaCIS.Core.Application.Service; namespace IRaCIS.Core.Application.Contracts { /// - ///受试者临床信息 + ///患者临床信息 /// [ApiExplorerSettings(GroupName = "Image")] public class ClinicalDataService : BaseService, IClinicalDataService @@ -39,7 +39,7 @@ namespace IRaCIS.Core.Application.Contracts /// - /// 获取访视+受试者级别的数据 + /// 获取检查批次+患者级别的数据 /// /// /// diff --git a/IRaCIS.Core.Application/Service/QC/DTO/PreviousSurgeryViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/PreviousSurgeryViewModel.cs index 56841884..ac53d306 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/PreviousSurgeryViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/PreviousSurgeryViewModel.cs @@ -67,7 +67,7 @@ namespace IRaCIS.Core.Application.Contracts /// - /// 是否是访视 + /// 是否是检查批次 /// public bool? IsVisist { get; set; } @@ -92,7 +92,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid? SubjectId { get; set; } } @@ -108,7 +108,7 @@ namespace IRaCIS.Core.Application.Contracts public string FileName { get; set; } = string.Empty; /// - /// 是否是访视 + /// 是否是检查批次 /// public bool? IsVisist { get; set; } @@ -133,7 +133,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid? SubjectId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index e3979420..b98f594d 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -337,7 +337,7 @@ namespace IRaCIS.Core.Application.Contracts ///// - ///// 任务展示访视 读片任务显示是否顺序 + ///// 任务展示检查批次 读片任务显示是否顺序 ///// //public bool IsReadingTaskViewInOrder { get; set; } = true; } @@ -356,7 +356,7 @@ namespace IRaCIS.Core.Application.Contracts //审核状态 public AuditStateEnum AuditState { get; set; } - //阅片期或者访视名 + //阅片期或者检查批次名 public string ReadingPeriodName { get; set; } @@ -410,7 +410,7 @@ namespace IRaCIS.Core.Application.Contracts [Column(TypeName = "decimal(18,2)")] public decimal VisitTaskNum { get; set; } - //访视会有 + //检查批次会有 public bool? Inplan { get; set; } public bool? IsLostVisit { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/Interface/IQCOperationService.cs b/IRaCIS.Core.Application/Service/QC/Interface/IQCOperationService.cs index ad9244d1..3eeb4454 100644 --- a/IRaCIS.Core.Application/Service/QC/Interface/IQCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/Interface/IQCOperationService.cs @@ -40,6 +40,5 @@ namespace IRaCIS.Core.Application.Image.QA Task VerifyCanQCPassedOrFailed(Guid subjectVisitId); - Task ForwardSVDicomImage(Guid[] subjectVisitIdList); } } \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/QC/QCCommon.cs b/IRaCIS.Core.Application/Service/QC/QCCommon.cs index c414e915..3161a1bd 100644 --- a/IRaCIS.Core.Application/Service/QC/QCCommon.cs +++ b/IRaCIS.Core.Application/Service/QC/QCCommon.cs @@ -63,21 +63,21 @@ namespace IRaCIS.Core.Application.Service - //小于当前访视 最近的最晚拍片 + //小于当前检查批次 最近的最晚拍片 var before = visitList.Where(u => u.VisitNum < currentVisitNum).Max(k => k.LatestScanDate); if (before != null && before > imageDate) { - throw new BusinessValidationFailedException($"当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); + throw new BusinessValidationFailedException($"当前检查批次检查时间{imageDate.ToString("yyyy-MM-dd")}不能早于前序检查批次检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); } - //大于当前访视 最近的最早拍片日期 + //大于当前检查批次 最近的最早拍片日期 var after = visitList.Where(u => u.VisitNum > currentVisitNum).Min(k => k.EarliestScanDate); if (after != null && after < imageDate) { - throw new BusinessValidationFailedException($"当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); + throw new BusinessValidationFailedException($"当前检查批次检查时间{imageDate.ToString("yyyy-MM-dd")}不能晚于该检查批次之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); } } diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index e90ecef8..bf3b4261 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -44,7 +44,7 @@ namespace IRaCIS.Core.Application.Image.QA #region CRC上传、质疑页面 /// - /// CRC 访视上传列表 + /// CRC 检查批次上传列表 /// /// /// @@ -261,7 +261,7 @@ namespace IRaCIS.Core.Application.Image.QA } /// - /// QC 访视列表 + /// QC 检查批次列表 /// /// /// @@ -299,7 +299,7 @@ namespace IRaCIS.Core.Application.Image.QA //{ // var visitInfo = visitSearchDTO.VisitPlanInfo.Trim(); - // if (visitInfo.Contains('.')) // 包含小数点的是计划外访视 + // if (visitInfo.Contains('.')) // 包含小数点的是计划外检查批次 // { // subjectVisitLambda = subjectVisitLambda.And(t => t.VisitNum.ToString().Contains(".")); // } @@ -589,10 +589,10 @@ namespace IRaCIS.Core.Application.Image.QA #region QC 具体质控页面 各种列表 /// - /// 获取某次访视 QA界面所有信息 单独每一项都有接口(往下看),这里是一个大接口,方便第一次获取完整的所有的数据 + /// 获取某次检查批次 QA界面所有信息 单独每一项都有接口(往下看),这里是一个大接口,方便第一次获取完整的所有的数据 /// /// - /// 项目配置的针对访视检查是那种审核,0 不审,1 单审,2双审 + /// 项目配置的针对检查批次检查是那种审核,0 不审,1 单审,2双审 /// 当前 QC进入的是那种审核 1 单审,2复审 [HttpGet("{subjectVisitId:guid}/{trialQCProcess:int}/{currentQCType:int}")] @@ -666,11 +666,11 @@ namespace IRaCIS.Core.Application.Image.QA } /// - /// 获取某次访视 QC 问题核对答案 列表 初始化进去的时候是模板项,QC填写了就是对应的内容 + /// 获取某次检查批次 QC 问题核对答案 列表 初始化进去的时候是模板项,QC填写了就是对应的内容 /// /// /// - /// 项目配置的针对访视检查是那种审核,0 不审,1 单审,2双审 + /// 项目配置的针对检查批次检查是那种审核,0 不审,1 单审,2双审 /// 当前 QC进入的是那种审核 1 单审,2复审 [HttpGet("{trialId:guid}/{subjectVisitId:guid}/{trialQCProcess:int}/{currentQCType:int}")] @@ -699,7 +699,7 @@ namespace IRaCIS.Core.Application.Image.QA /// 获次QC 历史质疑列表 不分页 /// /// - /// 项目配置的针对访视检查是那种审核,0 不审,1 单审,2双审 + /// 项目配置的针对检查批次检查是那种审核,0 不审,1 单审,2双审 /// 当前 QC进入的是那种审核 1 单审,2复审 [HttpGet("{subjectVisitId:guid}/{trialQCProcess:int}/{currentQCType:int}")] @@ -715,7 +715,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 获取访视下的受试者访视、受试者、site信息 + /// 获取检查批次下的患者检查批次、患者、site信息 /// /// /// @@ -730,7 +730,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 访视下的Study 和Series列表 + /// 检查批次下的Study 和Series列表 /// /// /// @@ -748,7 +748,7 @@ namespace IRaCIS.Core.Application.Image.QA } /// - /// 访视下的检查列表 + /// 检查批次下的检查列表 /// /// /// @@ -786,7 +786,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// CRC/PM 看到某次访视下的所有质疑和聊天内容 包括初审和复审的 。 + /// CRC/PM 看到某次检查批次下的所有质疑和聊天内容 包括初审和复审的 。 /// /// /// @@ -856,7 +856,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 添加计划外访视 下拉框 选择上一次访视 + /// 添加计划外检查批次 下拉框 选择上一次检查批次 /// /// /// @@ -869,7 +869,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 上传界面 受试者 访视、site 基本信息 + /// 上传界面 患者 检查批次、site 基本信息 /// /// /// diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 138cb5c1..d16924b5 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -6,7 +6,6 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using System.Data; using Microsoft.AspNetCore.Authorization; -using WinSCP; using Newtonsoft.Json; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Application.Service.Inspection.DTO; @@ -100,7 +99,7 @@ namespace IRaCIS.Core.Application.Image.QA { if (await _qcChallengeRepository.AnyAsync(t => t.IsClosed == false && t.SubjectVisitId == qaQuestionCommand.SubjectVisitId && t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)) { - throw new BusinessValidationFailedException("当前访视未关闭的质疑已设置了同意CRC重传影像。请在CRC完成影像重传后,先关闭原质疑,再添加新的质疑。"); + throw new BusinessValidationFailedException("当前检查批次未关闭的质疑已设置了同意CRC重传影像。请在CRC完成影像重传后,先关闭原质疑,再添加新的质疑。"); } @@ -309,7 +308,7 @@ namespace IRaCIS.Core.Application.Image.QA if (sv.RequestBackState == RequestBackStateEnum.CRC_RequestBack) { - ResponseOutput.NotOk("当前访视处于申请回退状态, 不允许关闭质疑。"); + ResponseOutput.NotOk("当前检查批次处于申请回退状态, 不允许关闭质疑。"); } @@ -348,7 +347,7 @@ namespace IRaCIS.Core.Application.Image.QA if (sv.RequestBackState == RequestBackStateEnum.PM_AgressBack) { - ResponseOutput.NotOk("当前访视处于回退状态,不允许设置一致性核查通过"); + ResponseOutput.NotOk("当前检查批次处于回退状态,不允许设置一致性核查通过"); } if (sv.CheckChallengeState != CheckChanllengeTypeEnum.Closed && sv.AuditState == AuditStateEnum.QCPassed) @@ -386,7 +385,7 @@ namespace IRaCIS.Core.Application.Image.QA if (sv.CheckState == CheckStateEnum.CVPassed) { - return ResponseOutput.NotOk("当前访视已通过一致性核查,不允许申请回退"); + return ResponseOutput.NotOk("当前检查批次已通过一致性核查,不允许申请回退"); } var QCChallengeId = await _qcChallengeRepository.Where(x => x.SubjectVisitId == subjectVisitId).Select(x => x.Id).FirstOrDefaultAsync(); @@ -464,7 +463,7 @@ namespace IRaCIS.Core.Application.Image.QA if (sv.CheckState == CheckStateEnum.CVPassed || sv.CheckState == CheckStateEnum.ToCheck) { - return ResponseOutput.NotOk("当前访视还未进行核查或者核查已通过,不允许设置回退。"); + return ResponseOutput.NotOk("当前检查批次还未进行核查或者核查已通过,不允许设置回退。"); } //sv.CheckChallengeState = (int)CheckChanllengeTypeEnum.None; @@ -723,7 +722,7 @@ namespace IRaCIS.Core.Application.Image.QA if (await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.IsClosed == false)) { - return ResponseOutput.NotOk("当前访视有质疑未关闭,不允许该操作"); + return ResponseOutput.NotOk("当前检查批次有质疑未关闭,不允许该操作"); } return ResponseOutput.Ok(); } @@ -860,7 +859,7 @@ namespace IRaCIS.Core.Application.Image.QA if (dbSubjectVisit.CurrentActionUserId == null && dbSubjectVisit.IsTake == false) { - return ResponseOutput.NotOk("当前访视的影像质控任务已被原领取人释放。您可以通过“领取”获得", ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk("当前检查批次的影像质控任务已被原领取人释放。您可以通过“领取”获得", ApiResponseCodeEnum.NeedTips); } @@ -902,9 +901,9 @@ namespace IRaCIS.Core.Application.Image.QA { if (dbSubjectVisit.CurrentActionUserId != null && dbSubjectVisit.IsTake) { - //throw new BusinessValidationFailedException("当前访视已被领取,不允许领取"); + //throw new BusinessValidationFailedException("当前检查批次已被领取,不允许领取"); - return ResponseOutput.NotOk("当前访视的影像质控任务已被其他QC领取,不允许领取", ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk("当前检查批次的影像质控任务已被其他QC领取,不允许领取", ApiResponseCodeEnum.NeedTips); } @@ -921,7 +920,7 @@ namespace IRaCIS.Core.Application.Image.QA // )) //{ - // return ResponseOutput.NotOk("您已经领取了其他受试者,完成后才允许领取新的受试者"); + // return ResponseOutput.NotOk("您已经领取了其他患者,完成后才允许领取新的患者"); //} #region 处理验证 @@ -1011,7 +1010,7 @@ namespace IRaCIS.Core.Application.Image.QA else { - return ResponseOutput.NotOk("当前访视影像质控任务没有当前领取人,不能释放。"); + return ResponseOutput.NotOk("当前检查批次影像质控任务没有当前领取人,不能释放。"); } } else if (trialConfig.QCProcessEnum == TrialQCProcess.DoubleAudit) @@ -1030,7 +1029,7 @@ namespace IRaCIS.Core.Application.Image.QA else { - return ResponseOutput.NotOk("当前访视影像质控任务没有当前领取人, 不能释放"); + return ResponseOutput.NotOk("当前检查批次影像质控任务没有当前领取人, 不能释放"); } } @@ -1064,7 +1063,7 @@ namespace IRaCIS.Core.Application.Image.QA if (nameList.Count() > 0) { - return ResponseOutput.NotOk($"当前访视要求进行疾病进展确认。请在提交当前访视前,先处理未提交的前序访视:{string.Join('、', nameList)}。", 1, ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk($"当前检查批次要求进行疾病进展确认。请在提交当前检查批次前,先处理未提交的前序检查批次:{string.Join('、', nameList)}。", 1, ApiResponseCodeEnum.NeedTips); } } else @@ -1072,7 +1071,7 @@ namespace IRaCIS.Core.Application.Image.QA if (nameList.Count() > 0) { - return ResponseOutput.NotOk($"在提交当前访视后,请尽快处理尚未提交的前序访视:{string.Join('、', nameList)}。", 0, ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk($"在提交当前检查批次后,请尽快处理尚未提交的前序检查批次:{string.Join('、', nameList)}。", 0, ApiResponseCodeEnum.NeedTips); } } } @@ -1120,17 +1119,17 @@ namespace IRaCIS.Core.Application.Image.QA if (dbSubjectVisitList.Any(t => t.SubmitState == SubmitStateEnum.None)) { - return ResponseOutput.NotOk("有访视未上传任何Dicom/非Dicom影像数据,不允许提交"); + return ResponseOutput.NotOk("有检查批次未上传任何Dicom/非Dicom影像数据,不允许提交"); } //单个提交提示信息 if (dbSubjectVisitList.Count() == 1 && dbSubjectVisitList.First().SubmitState == SubmitStateEnum.Submitted) { - return ResponseOutput.NotOk("当前访视的影像数据,已经由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk("当前检查批次的影像数据,已经由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips); } else if (dbSubjectVisitList.Any(t => t.SubmitState == SubmitStateEnum.Submitted)) { - return ResponseOutput.NotOk("当前批量提交访视的影像数据,其中部分已由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk("当前批量提交检查批次的影像数据,其中部分已由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips); } //获取确认的临床数据配置 @@ -1143,7 +1142,7 @@ namespace IRaCIS.Core.Application.Image.QA //基线不验证 if (trialConfig.IsHaveFirstGiveMedicineDate && !dbSubjectVisit.IsBaseLine && dbSubjectVisit.Subject.FirstGiveMedicineTime == null) { - return ResponseOutput.NotOk("项目配置了需要填写访视基准日期。但是受试者没有填写访视基准日期,不允许提交"); + return ResponseOutput.NotOk("项目配置了需要填写检查批次基准日期。但是患者没有填写检查批次基准日期,不允许提交"); } //基线 且配置了临床数据 @@ -1215,7 +1214,7 @@ namespace IRaCIS.Core.Application.Image.QA var maxVisit = await _subjectVisitRepository.Where(t => t.SubjectId == dbSubjectVisit.SubjectId && t.SubmitState == SubmitStateEnum.Submitted) .OrderByDescending(t => t.VisitNum).Select(t => new { t.Id, t.VisitNum }).FirstOrDefaultAsync(); - //修改受试者最新访视 + //修改患者最新检查批次 dbSubjectVisit.Subject.LatestSubjectVisitId = maxVisit == null ? dbSubjectVisit.Id : maxVisit.VisitNum < dbSubjectVisit.VisitNum ? dbSubjectVisit.Id : maxVisit.Id; //var maxVisitNum = maxVisit == null ? dbSubjectVisit.VisitNum : maxVisit.VisitNum < dbSubjectVisit.VisitNum ? dbSubjectVisit.VisitNum : maxVisit.VisitNum; @@ -1223,7 +1222,7 @@ namespace IRaCIS.Core.Application.Image.QA ////判断是否有缺失影像 //dbSubjectVisit.Subject.IsMissingImages = await _subjectVisitRepository.AnyAsync(t => (t.VisitNum < maxVisitNum && t.SubmitState != SubmitStateEnum.Submitted && t.IsLostVisit == false)); - //项目或者Subject IsUrgent 提交时 访视也设置为紧急 + //项目或者Subject IsUrgent 提交时 检查批次也设置为紧急 if (trialConfig.IsUrgent || dbSubjectVisit.Subject.IsUrgent || (dbSubjectVisit.PDState == PDStateEnum.PDProgress && !dbSubjectVisit.IsBaseLine) || (dbSubjectVisit.IsEnrollmentConfirm && dbSubjectVisit.IsBaseLine)) { if (dbSubjectVisit.PDState == PDStateEnum.PDProgress) @@ -1237,7 +1236,7 @@ namespace IRaCIS.Core.Application.Image.QA await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId)&& x.SubjectId == dbSubjectVisit.SubjectId&& - dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的访视 全局 裁判 及之前 全都加急 + dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急 && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask() { @@ -1247,13 +1246,13 @@ namespace IRaCIS.Core.Application.Image.QA }); await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId - && x.VisitTaskNum < dbSubjectVisit.VisitNum // 当前的访视 全局 裁判 及之前 全都加急 + && x.VisitTaskNum < dbSubjectVisit.VisitNum // 当前的检查批次 全局 裁判 及之前 全都加急 && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask() { IsUrgent = true, TaskUrgentType = TaskUrgentType.Other, - TaskUrgentRemake= "后续访视设为pd", + TaskUrgentRemake= "后续检查批次设为pd", IsCanEditUrgentState = false, }); } @@ -1265,7 +1264,7 @@ namespace IRaCIS.Core.Application.Image.QA }); await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && - x.VisitTaskNum>= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的访视 全局 裁判 全都加急 + x.VisitTaskNum>= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急 && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask() { @@ -1277,7 +1276,7 @@ namespace IRaCIS.Core.Application.Image.QA else { await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && - x.VisitTaskNum >= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的访视 全局 裁判 全都加急 + x.VisitTaskNum >= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急 && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask() { @@ -1289,7 +1288,7 @@ namespace IRaCIS.Core.Application.Image.QA dbSubjectVisit.IsUrgent = true; - //PD确认的紧急会把前面所有未QC完成的访视均标记为紧急 + //PD确认的紧急会把前面所有未QC完成的检查批次均标记为紧急 var previosSVlist = await _subjectVisitRepository.Where(t => t.SubjectId == dbSubjectVisit.SubjectId && t.VisitNum < dbSubjectVisit.VisitNum && t.IsUrgent == false && t.SubmitState == SubmitStateEnum.Submitted, true).ToListAsync(); @@ -1346,7 +1345,7 @@ namespace IRaCIS.Core.Application.Image.QA dbSubjectVisit.AuditState = AuditStateEnum.ToAudit; } - //非基线设置为PD的话 或者设置为末次访视 根据配置自动生成阅片期 + //非基线设置为PD的话 或者设置为末次检查批次 根据配置自动生成阅片期 if (!dbSubjectVisit.IsBaseLine && (dbSubjectVisit.PDState == PDStateEnum.PDProgress || dbSubjectVisit.IsFinalVisit) ) { @@ -1413,7 +1412,7 @@ namespace IRaCIS.Core.Application.Image.QA //判断质疑是否都关闭了 if (await _repository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.IsClosed == false)) { - return ResponseOutput.NotOk("当前访视有影像质控质疑未关闭,不能进行此操作。"); + return ResponseOutput.NotOk("当前检查批次有影像质控质疑未关闭,不能进行此操作。"); } } @@ -1487,7 +1486,7 @@ namespace IRaCIS.Core.Application.Image.QA } else { - return ResponseOutput.NotOk("项目配置影像质控为单审,当前访视影像质控任务不能从当前审核状态变更到 审核通过。"); + return ResponseOutput.NotOk("项目配置影像质控为单审,当前检查批次影像质控任务不能从当前审核状态变更到 审核通过。"); } @@ -1617,7 +1616,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 设置、取消 访视紧急 + /// 设置、取消 检查批次紧急 /// /// /// @@ -1689,7 +1688,7 @@ namespace IRaCIS.Core.Application.Image.QA if (await _qcChallengeRepository.CountAsync(t => t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload && t.SubjectVisitId == qcChallenge.SubjectVisitId && t.IsClosed == false) >= 1) { - return ResponseOutput.NotOk("当前访视,有一个未关闭的质疑 QC设置了同意重传,CRC还未完成上传,当前不允许再次设置"); + return ResponseOutput.NotOk("当前检查批次,有一个未关闭的质疑 QC设置了同意重传,CRC还未完成上传,当前不允许再次设置"); } @@ -1869,7 +1868,7 @@ namespace IRaCIS.Core.Application.Image.QA /// - /// 上传界面 更新受试者访视基准日期 是否入组确认,以及访视 是否PD进展 + /// 上传界面 更新患者检查批次基准日期 是否入组确认,以及检查批次 是否PD进展 /// /// /// @@ -1887,13 +1886,13 @@ namespace IRaCIS.Core.Application.Image.QA if (await _subjectVisitRepository.Where(t => t.Id == command.SubjectVisitId) .AnyAsync(t => t.SubmitState == SubmitStateEnum.Submitted && t.IsEnrollmentConfirm != command.IsEnrollmentConfirm)) { - return ResponseOutput.NotOk("该访视已提交,不能修改入组确认状态"); + return ResponseOutput.NotOk("该检查批次已提交,不能修改入组确认状态"); } if (await _subjectVisitRepository.Where(t => t.Id == command.SubjectVisitId) .AnyAsync(t => t.IsEnrollmentConfirm != command.IsEnrollmentConfirm && t.RequestBackState == RequestBackStateEnum.PM_AgressBack)) { - return ResponseOutput.NotOk("该访视为回退访视,不允许修改PD确认状态"); + return ResponseOutput.NotOk("该检查批次为回退检查批次,不允许修改PD确认状态"); } dbSubjectVisit.IsEnrollmentConfirm = command.IsEnrollmentConfirm.Value; @@ -1911,108 +1910,6 @@ namespace IRaCIS.Core.Application.Image.QA - [HttpPost("{trialId:guid}")] - [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] - public async Task ForwardSVDicomImage(Guid[] subjectVisitIdList) - { - - bool isSuccess = false; - - - foreach (var subjectVisitId in subjectVisitIdList) - { - - - var info = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - - - var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName; - - var path = FileStoreHelper.GetSubjectVisitDicomFolderPhysicalPath(_hostEnvironment, info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId); - - try - { - // 主机及端口信息后面可以改到 配置文件 - SessionOptions sessionOptions = new SessionOptions - { - Protocol = Protocol.Sftp, - PortNumber = 8022, - HostName = "CS-690-sftp.mint-imaging.com", - UserName = "zdong", - Password = "Everest@2021", - SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo=" - }; - - using (Session session = new Session()) - { - var studyFolders = (new DirectoryInfo(path)).GetDirectories(); - - session.Open(sessionOptions); - - if (!session.FileExists(targetPath)) - { - session.CreateDirectory(targetPath); - } - - - foreach (var studyFolder in studyFolders) - { - var targetFolder = Path.Combine(targetPath, studyFolder.Name); - - if (!session.FileExists(targetFolder)) - { - session.CreateDirectory(targetFolder); - } - - foreach (var file in studyFolder.GetFiles()) - { - if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase)) - { - string remoteFilePath = - RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetFolder); - - var result = session.PutFiles(file.FullName, remoteFilePath, false); - - if (!result.IsSuccess) - { - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); - - return ResponseOutput.NotOk("转发影像失败。" + result.Failures.ToString() + result.ToJson()); - } - } - } - } - - } - await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now }); - - isSuccess = true; - - } - catch (Exception e) - { - - await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); - - - return ResponseOutput.NotOk("转发影像失败: " + e.Message); - } - - - } - - - - await _subjectVisitRepository.SaveChangesAsync(); - - return isSuccess ? ResponseOutput.Ok() : ResponseOutput.NotOk("转发影像失败。"); - } - - - - + } } diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 772b0abc..68409a9b 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -326,14 +326,14 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap().ReverseMap(); - //受试者临床数据 添加编辑 + //患者临床数据 添加编辑 CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); - // 受试者临床数据 视图映射 + // 患者临床数据 视图映射 Guid subjectVisitId = Guid.Empty; CreateMap() .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code)) @@ -423,7 +423,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)); - //QC 界面 受试者 site 基本信息 展平的属性 比如 SubjectAge => Subject.Age + //QC 界面 患者 site 基本信息 展平的属性 比如 SubjectAge => Subject.Age CreateMap().IncludeMembers(t => t.Subject) .ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.SubjectName, u => u.MapFrom(s => s.Subject.ShortName)) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 8ac891b4..3b632d39 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -87,7 +87,7 @@ namespace IRaCIS.Application.Services } var clinicalDataTrialSet = (await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.ClinicalDataTrialSetId).FirstOrDefaultAsync()).IfNullThrowException(); - //subject 或者访视级别的 都是在访视传 + //subject 或者检查批次级别的 都是在检查批次传 indto.IsVisit = clinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || clinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit; if (indto.Id == null) @@ -337,7 +337,7 @@ namespace IRaCIS.Application.Services if (needSignCount == haveSignedCount /*&& needSignCount != 0*/) { - //将该标准 该subject 该访视 任务临床数据状态变更 + //将该标准 该subject 该检查批次 任务临床数据状态变更 await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SourceSubjectVisitId == readingId, u => new VisitTask() { IsClinicalDataSign = true @@ -495,7 +495,7 @@ namespace IRaCIS.Application.Services /// - /// 获取访视 阅片或任务临床数据 + /// 获取检查批次 阅片或任务临床数据 /// /// /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index db77c367..d864d83f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -195,12 +195,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } /// - /// 访视或者阅片ID + /// 检查批次或者阅片ID /// public Guid VisitOrReadId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index 4118d655..fb390eb6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -20,7 +20,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string? TrialSiteCode { get; set; } /// - /// 受试者Code + /// 患者Code /// public string? SubjectCode { get; set; } @@ -63,7 +63,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public ReadingSetType ReadingSetType { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -81,17 +81,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public DateTime? ExpirationDate { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -124,12 +124,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } /// - /// 受试者Id + /// 患者Id /// public Guid SubjectId { get; set; } /// - /// 访视Id + /// 检查批次Id /// public Guid SubjectVisitId { get; set; } @@ -162,13 +162,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public ModuleTypeEnum ModuleType { get; set; } /// - /// 访视ID + /// 检查批次ID /// public Guid? SubjectVisitId { get; set; } /// - /// 访视名称 + /// 检查批次名称 /// public string SubjectVisitName { get; set; } @@ -297,7 +297,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class SubjectVisitPlanView { /// - /// Id(阅片期Id 或者 访视ID) + /// Id(阅片期Id 或者 检查批次ID) /// public Guid Id { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/PreviousPDFViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/PreviousPDFViewModel.cs index 99f29a55..5704da1f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/PreviousPDFViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/PreviousPDFViewModel.cs @@ -16,12 +16,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } /// - /// 访视或者阅片ID + /// 检查批次或者阅片ID /// public Guid VisitOrReadId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs index 71fb881d..7bab26a3 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs @@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public decimal PresentSod { get; set; } /// - /// 是否存在靶病灶 (当前访视 至少一个靶病灶的状态为存在) + /// 是否存在靶病灶 (当前检查批次 至少一个靶病灶的状态为存在) /// public bool ExistsTargetLesion { get; set; } @@ -60,22 +60,22 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool SODPercentLess30 { get; set; } /// - /// SOD 百分比 整体访视期间SOD最低点SOD相比增加<20% + /// SOD 百分比 整体检查批次期间SOD最低点SOD相比增加<20% /// public bool LowSODPercentLess20 { get; set; } /// - /// SOD 百分比 比整体访视期间最低点SOD增加≥20% + /// SOD 百分比 比整体检查批次期间最低点SOD增加≥20% /// public bool LowSODPercentBigger20 { get; set; } /// - /// SOD 变化值 比整体访视期间最低点SOD绝对增加值<5 mm + /// SOD 变化值 比整体检查批次期间最低点SOD绝对增加值<5 mm /// public bool LowSODChangeLess5 { get; set; } /// - /// 比整体访视期间最低点SOD绝对增加值≥5 mm + /// 比整体检查批次期间最低点SOD绝对增加值≥5 mm /// public bool LowSODChangeBigger5 { get; set; } @@ -85,12 +85,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool ExixtsNETargetLesion { get; set; } /// - /// 上次访视点整体肿瘤评估 + /// 上次检查批次点整体肿瘤评估 /// public string LastTargetLesionEvaluate { get; set; } /// - /// 当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 + /// 当前检查批次点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 /// public bool CurrentMajoreBigger0 { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 6ec1ee08..a962ce59 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -21,7 +21,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -36,7 +36,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid ClinicalDataTrialSetId { get; set; } /// - /// 是否是访视 + /// 是否是检查批次 /// public bool IsVisit { get; set; } @@ -188,7 +188,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } /// - /// 获取访视列表 + /// 获取检查批次列表 /// public class GetReadingClinicalDataListIndto { @@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } /// - /// 是否是访视 + /// 是否是检查批次 /// public bool IsVisit { get; set; } @@ -241,7 +241,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string FileName { get; set; } /// - /// 是否为访视 + /// 是否为检查批次 /// public bool IsVisit { get; set; } @@ -271,7 +271,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string FileName { get; set; } /// - /// 是否为访视 + /// 是否为检查批次 /// public bool IsVisit { get; set; } } @@ -301,7 +301,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// - /// 访视Id 或者模块Id + /// 检查批次Id 或者模块Id /// public Guid ReadingId { get; set; } @@ -443,7 +443,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid? SubjectId { get; set; } /// - /// 是否是访视 + /// 是否是检查批次 /// public bool IsVisit { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index f8cbfe13..8a21c17d 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -574,7 +574,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public decimal TaskNum { get; set; } /// - /// 任务盲态名称 和访视盲态一样 + /// 任务盲态名称 和检查批次盲态一样 /// public string BlindName { get; set; } @@ -1275,7 +1275,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsReadingShowPreviousResults { get; set; } = false; /// - /// 任务展示访视 读片任务显示是否顺序 + /// 任务展示检查批次 读片任务显示是否顺序 /// public bool IsReadingTaskViewInOrder { get; set; } = true; diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index fe286c9a..d11057b6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -157,13 +157,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public ReadingTool? ReadingTool { get; set; } /// - /// 任务展示访视 读片任务显示是否顺序 + /// 任务展示检查批次 读片任务显示是否顺序 /// public bool IsReadingTaskViewInOrder { get; set; } = true; /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs index 9f3c9f68..2e86e3ca 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs @@ -38,12 +38,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public DateTime? ExpirationDate { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } @@ -70,7 +70,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid ReadingPeriodSetId { get; set; } /// - /// 访视ID + /// 检查批次ID /// public List SubjectVisitIds { get; set; } } @@ -107,12 +107,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public DateTime? ExpirationDate { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } @@ -145,17 +145,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string TrialSiteCode { get; set; } /// - /// 访视Id + /// 检查批次Id /// public Guid SubjectVisitId { get; set; } /// - /// 受试者Id + /// 患者Id /// public Guid SubjectId { get; set; } /// - /// 受试者名称 + /// 患者名称 /// public string SubjectCode { get; set; } @@ -221,12 +221,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public DateTime? ExpirationDate { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } @@ -322,7 +322,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index acb1a7b0..20f2d120 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -274,7 +274,7 @@ namespace IRaCIS.Core.Application.Service var taskIds = medicalReviewInfo.TaskList.Select(x => x.TaskId).ToList(); - // 找访视 + // 找检查批次 var visitTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId) && x.ReadingQuestionTrial.IsJudgeQuestion).Select(x => new JudgeQuestionAnswerInfo { Answer = x.Answer, diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs index a46afeba..492ff324 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs @@ -258,7 +258,7 @@ namespace IRaCIS.Application.Services var globalReadingQuestion = await _readingGlobalTaskInfoRepository.Where(x => x.GlobalTaskId == inDto.VisitTaskId).ToListAsync(); var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == taskInfo.TrialReadingCriterionId).Select(x => x.CriterionType).FirstOrDefaultAsync(); - // Before的Answer取自于 上一次全局阅片的结果, 如果没有上一次全局阅片的结果 取访视的答案 + // Before的Answer取自于 上一次全局阅片的结果, 如果没有上一次全局阅片的结果 取检查批次的答案 var lastGlobalTask = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Global && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 9b3669e3..73f0003d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -438,7 +438,7 @@ namespace IRaCIS.Application.Services } /// - /// 获取阅片的受试者信息 + /// 获取阅片的患者信息 /// /// /// @@ -473,7 +473,7 @@ namespace IRaCIS.Application.Services /// - /// 验证是否为基线访视任务 + /// 验证是否为基线检查批次任务 /// /// /// @@ -519,7 +519,7 @@ namespace IRaCIS.Application.Services #endregion - #region 访视任务 - Dicom 阅片 表格问题相关查询 + #region 检查批次任务 - Dicom 阅片 表格问题相关查询 /// @@ -1038,7 +1038,7 @@ namespace IRaCIS.Application.Services - #region 访视任务 - Dicom 阅片 表格问题 病灶的拆分与合并 + #region 检查批次任务 - Dicom 阅片 表格问题 病灶的拆分与合并 /// @@ -1152,7 +1152,7 @@ namespace IRaCIS.Application.Services - #region 访视任务 - Dicom 阅片 提交、修改 + #region 检查批次任务 - Dicom 阅片 提交、修改 /// /// 保存影像质量 @@ -1375,12 +1375,12 @@ namespace IRaCIS.Application.Services switch (taskinfo.TrialReadingCriterion.CriterionType) { // 对于非靶病灶,如果状态选择为显著增大,请验证: - // 1) 对于非淋巴结病灶,验证当前访视该病灶的长径 > 上一访视该病灶的长径。 - // 约束条件:两次访视该病灶的长径有测量值。 - // 提示语:当前访视该非淋巴结病灶的长径小于上一访视的值,不能设置为显著增大。 - // 2) 对于淋巴结病灶,验证当前访视该病灶的短径 > 上一访视该病灶的短径。 - // 约束条件:两次访视该病灶的短径有测量值。 - // 提示语:当前访视该淋巴结病灶的短径小于上一访视的值,不能设置为显著增大。 + // 1) 对于非淋巴结病灶,验证当前检查批次该病灶的长径 > 上一检查批次该病灶的长径。 + // 约束条件:两次检查批次该病灶的长径有测量值。 + // 提示语:当前检查批次该非淋巴结病灶的长径小于上一检查批次的值,不能设置为显著增大。 + // 2) 对于淋巴结病灶,验证当前检查批次该病灶的短径 > 上一检查批次该病灶的短径。 + // 约束条件:两次检查批次该病灶的短径有测量值。 + // 提示语:当前检查批次该淋巴结病灶的短径小于上一检查批次的值,不能设置为显著增大。 case CriterionType.RECIST1Pointt1: var lastTaskinfo = await _visitTaskRepository .Where(x => x.IsAnalysisCreate == taskinfo.IsAnalysisCreate && @@ -1875,7 +1875,7 @@ namespace IRaCIS.Application.Services /// - /// 验证访视提交 + /// 验证检查批次提交 /// /// /// @@ -2315,7 +2315,7 @@ namespace IRaCIS.Application.Services { // ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********//// #region 建立关系 - // 访视阅完产生 全局 + // 检查批次阅完产生 全局 Dictionary typeChangeDic = new Dictionary(); typeChangeDic.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit); typeChangeDic.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index e94290fb..8422e915 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -124,7 +124,7 @@ namespace IRaCIS.Application.Services { case ReadingCategory.Visit: - // 判断是否是全局访视任务 + // 判断是否是全局检查批次任务 if (await VerifyIsGlobalVisitTask(taskList[0].Id)) { @@ -308,7 +308,7 @@ namespace IRaCIS.Application.Services if (criterionType != CriterionType.PCWG3) { - // 加全局是否更新 和访视点注释 PCWG3不要 + // 加全局是否更新 和检查批次点注释 PCWG3不要 judgeReadingQuestion.JudgeQuestionList.Add(new JudgeQuestion() { Answer = item.AfterQuestionList.Any(x => x.IsHaveChange), @@ -349,7 +349,7 @@ namespace IRaCIS.Application.Services if (criterionType != CriterionType.PCWG3) { - // 加全局是否更新 和访视点注释 + // 加全局是否更新 和检查批次点注释 rTwoJudge.JudgeQuestionList.Add(new JudgeQuestion() { Answer = twoItem.AfterQuestionList.Any(x => x.IsHaveChange), @@ -458,7 +458,7 @@ namespace IRaCIS.Application.Services } /// - /// 判断任务是否是全局访视任务 + /// 判断任务是否是全局检查批次任务 /// /// private async Task VerifyIsGlobalVisitTask(Guid visitTaskId) @@ -572,11 +572,11 @@ namespace IRaCIS.Application.Services { switch (visitTask.ReadingCategory) { - // 访视 + // 检查批次 case ReadingCategory.Visit: - // 判断是单访视裁判还是全局访视裁判 - // 查找两个 访视的阅片答案 + // 判断是单检查批次裁判还是全局检查批次裁判 + // 查找两个 检查批次的阅片答案 if (await VerifyIsGlobalVisitTask(visitTask.Id)) { // 找到所有的的任务 @@ -798,7 +798,7 @@ namespace IRaCIS.Application.Services (visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Visit) || (visitTask.SouceReadModuleId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading) - // 全局访视任务仲裁 + // 全局检查批次任务仲裁 || (visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading && criterionInfo.IsReadingPeriod && !criterionInfo.IsGlobalReading) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs index 4328fa62..2365fede 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Application.Services public partial class ReadingImageTaskService : BaseService, IReadingImageTaskService { /// - /// 提交访视阅片问题 + /// 提交检查批次阅片问题 /// /// /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs index 6a784f08..5e47b9ae 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs @@ -92,7 +92,7 @@ namespace IRaCIS.Application.Services }); - // 找到对应的访视 + // 找到对应的检查批次 List oncologyVisits = await _visitTaskRepository.Where(x => x.TrialId == taskInfo.TrialId && x.SubjectId == taskInfo.SubjectId && diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs index f35bfbe9..d2282882 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs @@ -215,7 +215,7 @@ namespace IRaCIS.Application.Services } /// - /// 添加阅片的时候 获取访视 //标准参数必传 + /// 添加阅片的时候 获取检查批次 //标准参数必传 /// /// /// @@ -271,7 +271,7 @@ namespace IRaCIS.Application.Services if (await _readModuleRepository.AnyAsync(x => x.SubjectVisitId == visit.Id&&x.ModuleType== moduleType && x.TrialReadingCriterionId == dto.TrialReadingCriterionId)) { - throw new BusinessValidationFailedException($"当前访视已经添加过阅片期"); + throw new BusinessValidationFailedException($"当前检查批次已经添加过阅片期"); } var readModuleData = new ReadModule() { @@ -391,7 +391,7 @@ namespace IRaCIS.Application.Services } else { - return ResponseOutput.NotOk("未找到符合要求的访视"); + return ResponseOutput.NotOk("未找到符合要求的检查批次"); } @@ -421,7 +421,7 @@ namespace IRaCIS.Application.Services //增加标准 if (readModule.ModuleType==ModuleTypeEnum.Global&&(await _readModuleRepository.AnyAsync(x=>x.ModuleType==ModuleTypeEnum.Oncology&&x.SubjectVisitId== readModule.SubjectVisitId && x.TrialReadingCriterionId==readModule.TrialReadingCriterionId))) { - throw new BusinessValidationFailedException("当前访视存在肿瘤学阅片,请先删除肿瘤学阅片"); + throw new BusinessValidationFailedException("当前检查批次存在肿瘤学阅片,请先删除肿瘤学阅片"); } if (await _visitTaskRepository.AnyAsync(x => readModuleId==x.SouceReadModuleId)) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs index 7a84f7bf..249f84d2 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs @@ -422,7 +422,7 @@ namespace IRaCIS.Application.Services pageList.CurrentPageData.ForEach(x => { - x.SubjectVisitName = x.IsGlobal ? "末次访视" : x.SubjectVisitName; + x.SubjectVisitName = x.IsGlobal ? "末次检查批次" : x.SubjectVisitName; }); return pageList; } @@ -441,7 +441,7 @@ namespace IRaCIS.Application.Services } /// - /// 获取阅片期配置的截至访视的下拉框 (增加标准搜索,已修改) + /// 获取阅片期配置的截至检查批次的下拉框 (增加标准搜索,已修改) /// /// /// @@ -492,7 +492,7 @@ namespace IRaCIS.Application.Services .WhereIf(inDto.ReadingScope == ReadingScopeEnum.Site, x => inDto.SiteIds.Contains(x.SiteId)) .Where(x=>!x.IsBaseLine);// 排除基线 - // 已经存在的访视 需要排除 + // 已经存在的检查批次 需要排除 var existsBubjectVisitsQuery = _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Select(x => x.SubjectVisitId); visitQuery = visitQuery.Where(x => !existsBubjectVisitsQuery.Contains(x.Id)) diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs index 81250081..fe881189 100644 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs +++ b/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs @@ -9,7 +9,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid TUId { get; set; } public int LesionType { get; set; } //病灶类型 public string STUDYID { get; set; } = string.Empty; // 项目ID - public string USUBJID { get; set; } = string.Empty;// 受试者ID + public string USUBJID { get; set; } = string.Empty;// 患者ID public int TUSEQ { get; set; } // 病灶序号 // 病灶分组,主要是用于将分裂或者结合在一起的已经被标识的肿瘤分类 @@ -49,7 +49,7 @@ namespace IRaCIS.Core.Application.Contracts public string TUEVALID { get; set; } = string.Empty;//这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息 public string TUACPTFL { get; set; } = string.Empty; - // 访视信息 + // 检查批次信息 public decimal VISITNUM { get; set; } = 0; public string VISIT { get; set; } = string.Empty; public int VISITDY { get; set; } @@ -102,7 +102,7 @@ namespace IRaCIS.Core.Application.Contracts } public class VisitLesionInfo { - //基线病灶信息及本次访视测量信息 + //基线病灶信息及本次检查批次测量信息 public IList BLLesionList { get; set; } = new List(); // public IList BLVisitLesionList { get; set; } = new List(); //public IList CurrentVisitLesionList { get; set; } = new List(); diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs index 42569650..24f5227e 100644 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs +++ b/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs @@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.Contracts //IList GetBLLesion(string trialCode, string subjectCode); /// - /// 获取访视病灶信息 + /// 获取检查批次病灶信息 /// VisitLesionInfo GetVisitLineLesion(string trialCode, string subjectCode, decimal visitNum,string tpCode); diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs index 396cadbb..8320b17a 100644 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs +++ b/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs @@ -177,7 +177,7 @@ // return result; // } -// /// 获取其他访视病灶信息 +// /// 获取其他检查批次病灶信息 // [AllowAnonymous] // [HttpGet, Route("getVisitLineLesion/{trialCode}/{subjectCode}/{visitNum:decimal}/{tpCode}")] // public VisitLesionInfo GetVisitLineLesion(string trialCode, string subjectCode, decimal visitNum, string tpCode) @@ -230,7 +230,7 @@ // tempLesion.TUSEQ = tempLesion.CurrentLesion.TUSEQ; // visitLesionInfo.BLLesionList.Add(tempLesion); // } -// // 以往新病灶,病灶类型为5,且访视编号小于当前访视,且不是基线 +// // 以往新病灶,病灶类型为5,且检查批次编号小于当前检查批次,且不是基线 // var previousLesion = list.Where(u => u.VISITNUM < visitNum && u.VISITNUM != 1 && u.LesionType == 5).ToList(); // foreach (var item in previousLesion) // { @@ -308,7 +308,7 @@ // [HttpPost("{tpId:guid}")] // public bool SubmiteReport(Guid tpId) // { -// // 提交报告 同时查询VisitStage(项目访视计划,看是否需要添加全局) +// // 提交报告 同时查询VisitStage(项目检查批次计划,看是否需要添加全局) // var query = from workloadTp in _workloadTPRepository.Where(u => u.Id == tpId) // join subjectVisit in _subjectVisitRepository.AsQueryable() @@ -371,7 +371,7 @@ // Status = (int)WorkloadStatus.Reading // }); -// //序号按照每个项目、每个受试者、每个评估者,一条记录 +// //序号按照每个项目、每个患者、每个评估者,一条记录 // TU lastTu = _tURepository.Where(u => u.STUDYID == addedLesion.STUDYID && u.USUBJID == addedLesion.USUBJID // && u.TUEVAL == addedLesion.TUEVAL).OrderByDescending("TUSEQ").FirstOrDefault(); // int tuSeq = 101; @@ -529,7 +529,7 @@ // } // /// -// /// 添加访视报告信息 +// /// 添加检查批次报告信息 // /// LesionInformation 为新病灶及测量信息(包括分裂及合并产生的) // /// TRList 已经存在的病灶的测量信息 // /// RSList 疗效信息 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs index f790f5ac..bab13fb9 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Dto/CriterionCalculateDto.cs @@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.ViewModel public class VisitStudyTime { /// - /// 访视Id + /// 检查批次Id /// public Guid SubjectVisitId { get; set; } @@ -24,7 +24,7 @@ namespace IRaCIS.Core.Application.ViewModel public class SiteVisitForTumor { /// - /// 访视Id + /// 检查批次Id /// public Guid VisitTaskId { get; set; } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/ICriterionCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/ICriterionCalculateService.cs index bda18fd4..f11afcfb 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/ICriterionCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/ICriterionCalculateService.cs @@ -19,14 +19,14 @@ namespace IRaCIS.Core.Application.Service Task CalculateTask(CalculateTaskInDto inDto); /// - /// 验证访视提交 + /// 验证检查批次提交 /// /// /// Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto); /// - /// 将上一次的访视病灶添加到这一次 + /// 将上一次的检查批次病灶添加到这一次 /// /// /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IReadingCalculateService.cs index ffe22c60..b1dee544 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IReadingCalculateService.cs @@ -18,14 +18,14 @@ namespace IRaCIS.Core.Application.Service Task CalculateTask(CalculateTaskInDto inDto); /// - /// 验证访视提交 + /// 验证检查批次提交 /// /// /// Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto); /// - /// 将上一次的访视病灶添加到这一次 + /// 将上一次的检查批次病灶添加到这一次 /// /// /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs index 3a3bd28b..193cd288 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs @@ -555,13 +555,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 既往新病灶 new ReadingCalculateData (){QuestionType=QuestionType.AlwaysNewLesionsCount,GetIntFun=GetAlwaysNewLesionsCount}, - // 自治疗后第二个访视点以来持续的新骨病变数量 + // 自治疗后第二个检查批次点以来持续的新骨病变数量 new ReadingCalculateData (){QuestionType=QuestionType.NewBoneLesionsCount,GetIntFun=GetNewBoneLesionCount}, // 间隔天数 new ReadingCalculateData (){QuestionType=QuestionType.DaysBetween,GetIntFun=GetNumberOfDaysBetween}, - // 访视点肿瘤评估 + // 检查批次点肿瘤评估 new ReadingCalculateData (){QuestionType=QuestionType.SiteVisitForTumorEvaluation,GetStringFun=GetSiteVisitForTumorEvaluation}, @@ -758,9 +758,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion - #region 自治疗后第二个访视点以来持续的新骨病变数量 + #region 自治疗后第二个检查批次点以来持续的新骨病变数量 /// - /// 自治疗后第二个访视点以来持续的新骨病变数量 + /// 自治疗后第二个检查批次点以来持续的新骨病变数量 /// /// /// @@ -837,9 +837,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate - #region 访视点肿瘤评估 + #region 检查批次点肿瘤评估 /// - /// 访视点肿瘤评估 + /// 检查批次点肿瘤评估 /// /// /// @@ -876,7 +876,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } /// - /// 修改上一次访视结果 + /// 修改上一次检查批次结果 /// /// /// @@ -894,24 +894,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (lastTask != null) { - #region 1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个; - //1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个; + #region 1、基线后第一个检查批次:新病灶计数≥ 2个;2、基线后第二个检查批次(应满足检查批次间隔6周以上,否则顺延)新病灶≥ 2个; + //1、基线后第一个检查批次:新病灶计数≥ 2个;2、基线后第二个检查批次(应满足检查批次间隔6周以上,否则顺延)新病灶≥ 2个; var firstVisit = taskList.FirstOrDefault(); if (baseLineTask.StudyTime != null) { - //基线后第二个访视(应满足访视间隔6周以上,否则顺延) + //基线后第二个检查批次(应满足检查批次间隔6周以上,否则顺延) var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.StudyTime >= baseLineTask.StudyTime.Value.AddDays(42)).FirstOrDefault(); if (secondVisit != null) { var firstTaskNewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstVisit.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); - // 第二访视数量 + // 第二检查批次数量 var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); - // 判断是否是当前访视 当前访视还未入库 + // 判断是否是当前检查批次 当前检查批次还未入库 if (secondVisit.VisitTaskId == inDto.VisitTaskId) { secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0(); @@ -963,7 +963,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion /// - /// 获取访视日期信息 + /// 获取检查批次日期信息 /// /// /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index d0f28b2d..91717301 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -402,22 +402,22 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate //与基线SOD相比变化量(mm) new ReadingCalculateData (){QuestionType=QuestionType.SODChange,GetDecimalNullFun=GetSODChange}, - //与基线访视相比SOD变化百分比 + //与基线检查批次相比SOD变化百分比 new ReadingCalculateData (){QuestionType=QuestionType.SODPercent,GetDecimalNullFun=GetSODPercent}, - //与整个访视期间SOD最低点相比增加的值(mm) //其他任务需要改 + //与整个检查批次期间SOD最低点相比增加的值(mm) //其他任务需要改 new ReadingCalculateData (){QuestionType=QuestionType.LowestIncrease,GetDecimalNullFun=GetLowestIncrease,/*ChangeAllTaskFun=ChangeAllLowestIncrease*/}, - //与整个访视期间SOD最低点相比增加的百分比 //其他任务需要改 + //与整个检查批次期间SOD最低点相比增加的百分比 //其他任务需要改 new ReadingCalculateData (){QuestionType=QuestionType.LowPercent,GetDecimalNullFun=GetLowPercent,/*ChangeAllTaskFun=ChangeAllLowPercent*/}, - //整个访视期间SOD最低点访视名称 //其他任务需要改 + //整个检查批次期间SOD最低点检查批次名称 //其他任务需要改 new ReadingCalculateData (){QuestionType=QuestionType.LowVisit,GetStringFun=GetLowVisit,/*ChangeAllTaskFun=ChangeAllLowVisitName*/}, //是否存在非淋巴结靶病灶 new ReadingCalculateData (){QuestionType=QuestionType.IsLymphTarget,GetStringFun=GetIsLymphTarget}, - //是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 + //是否存在淋巴结靶病灶且该病灶比上一检查批次短径增加5MM以上 new ReadingCalculateData (){QuestionType=QuestionType.IsAddFive,GetStringFun=GetIsAddFive}, //被评估为NE的单个靶病灶 @@ -626,7 +626,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } /// - /// 验证访视提交 + /// 验证检查批次提交 /// /// /// @@ -701,10 +701,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate - #region 将上一次的访视病灶添加到这一次 + #region 将上一次的检查批次病灶添加到这一次 /// - /// 将上一次的访视病灶添加到这一次 + /// 将上一次的检查批次病灶添加到这一次 /// /// /// @@ -905,9 +905,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 与基线访视相比SOD变化百分比 + #region 与基线检查批次相比SOD变化百分比 /// - /// 与基线访视相比SOD变化百分比 + /// 与基线检查批次相比SOD变化百分比 /// /// /// @@ -933,9 +933,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 与整个访视期间SOD最低点相比增加的值(mm) + #region 与整个检查批次期间SOD最低点相比增加的值(mm) /// - /// 与整个访视期间SOD最低点相比增加的值(mm) + /// 与整个检查批次期间SOD最低点相比增加的值(mm) /// /// /// @@ -955,9 +955,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 与整个访视期间SOD最低点相比增加的百分比 + #region 与整个检查批次期间SOD最低点相比增加的百分比 /// - /// 与整个访视期间SOD最低点相比增加的百分比 + /// 与整个检查批次期间SOD最低点相比增加的百分比 /// /// /// @@ -987,9 +987,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 整个访视期间SOD最低点访视名称 + #region 整个检查批次期间SOD最低点检查批次名称 /// - /// 整个访视期间SOD最低点访视名称 + /// 整个检查批次期间SOD最低点检查批次名称 /// /// /// @@ -1038,9 +1038,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 + #region 是否存在淋巴结靶病灶且该病灶比上一检查批次短径增加5MM以上 /// - /// 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 + /// 是否存在淋巴结靶病灶且该病灶比上一检查批次短径增加5MM以上 /// /// /// @@ -1058,7 +1058,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } /// - /// 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶 + /// 获取存在淋巴结靶病灶且该病灶比上一检查批次短径增加5MM以上的病灶 /// /// /// @@ -1155,10 +1155,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #region 修改其他标准 - #region 修改与整个访视期间SOD最低点相比增加的值(mm) + #region 修改与整个检查批次期间SOD最低点相比增加的值(mm) /// - /// 修改与整个访视期间SOD最低点相比增加的值(mm) + /// 修改与整个检查批次期间SOD最低点相比增加的值(mm) /// /// /// @@ -1180,10 +1180,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion - #region 修改整个访视期间SOD最低点相比增加的百分比 + #region 修改整个检查批次期间SOD最低点相比增加的百分比 /// - /// 修改整个访视期间SOD最低点相比增加的百分比 + /// 修改整个检查批次期间SOD最低点相比增加的百分比 /// /// /// @@ -1222,7 +1222,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// public async Task ChangeAllLowVisitName(ChangeAllTaskDto inDto) { - // 找到所有访视任务的Id + // 找到所有检查批次任务的Id var visitTaskIds = await _visitTaskRepository.Where(x => x.IsAnalysisCreate == inDto.IsAnalysisCreate && x.ReadingCategory == ReadingCategory.Visit && @@ -1241,9 +1241,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #region 通用方法 - #region 修改所有访视任务的答案 + #region 修改所有检查批次任务的答案 /// - /// 修改所有访视任务的答案 + /// 修改所有检查批次任务的答案 /// /// /// @@ -1314,9 +1314,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate return taskAnswerList.OrderBy(x => x.SOD).ToList(); } - #region 获取访视任务信息 + #region 获取检查批次任务信息 /// - /// 获取访视任务信息 + /// 获取检查批次任务信息 /// /// /// @@ -1361,18 +1361,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion /// - /// 获取上一个访视任务Id + /// 获取上一个检查批次任务Id /// /// private async Task GetLastVisitTaskId(ReadingCalculateDto inDto) { - // 拿到这一个访视 + // 拿到这一个检查批次 var thisNum = await _subjectVisitRepository.Where(x => x.Id == inDto.SubjectVisitId).Select(x => x.VisitNum).FirstOrDefaultAsync(); - // 先找到上一个访视 + // 先找到上一个检查批次 var lastVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == inDto.SubjectId && !x.IsLostVisit && x.VisitNum < thisNum).OrderByDescending(x => x.VisitNum).Select(x => x.Id).FirstOrDefaultAsync(); - // 找到访视任务Id + // 找到检查批次任务Id var LastVisitTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && @@ -1420,7 +1420,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// ///if (最低点SOD > 0) ///{ - /// if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm) + /// if(比整体检查批次期间最低点SOD增加≥20 % 且与整个检查批次期间最低点相比增加的值≥5 mm) /// { /// 靶病灶疗效为 PD /// @@ -1429,21 +1429,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate ///else ///{ /// //进入该分支最低点SOD=0 - /// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm) + /// if (当前检查批次SOD > 0 且与整个检查批次期间最低点相比增加的值≥5 mm) /// { /// 靶病灶疗效为PD /// /// } ///} /// - ///if(上次访视点评估是CR) + ///if(上次检查批次点评估是CR) /// { - /// if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm) + /// if (当前检查批次点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm) /// { /// 靶病灶疗效为 PD /// /// } - /// if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。) + /// if (当前检查批次点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。) /// { /// 靶病灶疗效为 PD /// @@ -1490,28 +1490,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) > -30, - // SOD 百分比 整体访视期间SOD最低点SOD相比增加<20% + // SOD 百分比 整体检查批次期间SOD最低点SOD相比增加<20% LowSODPercentLess20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 20, - // SOD 百分比 比整体访视期间SOD最低点SOD增加≥20% + // SOD 百分比 比整体检查批次期间SOD最低点SOD增加≥20% LowSODPercentBigger20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20, - // SOD 变化值 比整体访视期间SOD最低点SOD绝对增加值<5 mm + // SOD 变化值 比整体检查批次期间SOD最低点SOD绝对增加值<5 mm LowSODChangeLess5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 5, - // 比整体访视期间SOD最低点SOD绝对增加值≥5 mm + // 比整体检查批次期间SOD最低点SOD绝对增加值≥5 mm LowSODChangeBigger5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5, // 被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶 ExixtsNETargetLesion = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate)), - //// 上次访视点整体肿瘤评估 + //// 上次检查批次点整体肿瘤评估 LastTargetLesionEvaluate = string.Empty, - // 当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm + // 当前检查批次点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm CurrentMajoreBigger0 = false, - // 当前访视点淋巴结病灶, 至少一个淋巴结靶病灶短径≥10 mm + // 当前检查批次点淋巴结病灶, 至少一个淋巴结靶病灶短径≥10 mm CurrenShortBigger10 = false, // 靶病灶短径增加值有5mm的Index @@ -1559,7 +1559,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && !x.Answer.EqEnum(YesOrNoOrNa.Yes))) { - // 当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径 + // 当前检查批次点非淋巴结病灶至少一个非淋巴结靶病灶的长径 resultData.CurrentMajoreBigger0 = resultData.CurrentMajoreBigger0 || (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.MajorAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() > 0; } } @@ -1603,7 +1603,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate //if (最低点SOD > 0) if (resultData.LowSod > 0) { - // if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm) + // if(比整体检查批次期间最低点SOD增加≥20 % 且与整个检查批次期间最低点相比增加的值≥5 mm) if (resultData.LowSODPercentBigger20 && resultData.LowSODChangeBigger5) { // 靶病灶疗效为 PD @@ -1613,24 +1613,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate else { //进入该分支最低点SOD=0 - // if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm) + // if (当前检查批次SOD > 0 且与整个检查批次期间最低点相比增加的值≥5 mm) if (resultData.PresentSod > 0 && resultData.LowSODChangeBigger5) { // 靶病灶疗效为PD result = TargetAssessment.PD; } } - //if(上次访视点评估是CR) + //if(上次检查批次点评估是CR) if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR)) { - //if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm) + //if (当前检查批次点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm) // 换句话说 就是 短径≥10 的病灶 和 短径增加值≥5的病灶 的交集数量大于0 if (resultData.ShortBigger10Indexs.Intersect(resultData.AddFiveIndexs).ToList().Count() > 0) { //靶病灶疗效为 PD result = TargetAssessment.PD; } - //if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。) + //if (当前检查批次点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。) if (resultData.CurrentMajoreBigger0) { //靶病灶疗效为 PD @@ -1781,7 +1781,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate - // 当前访视存在至少一个明确新病灶 + // 当前检查批次存在至少一个明确新病灶 if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist))) { result = NewLesionAssessment.Yes; @@ -1791,7 +1791,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { result = NewLesionAssessment.NE; } - //当前访视不存在明确新病灶且存在至少一个疑似新病灶 + //当前检查批次不存在明确新病灶且存在至少一个疑似新病灶 else if (!tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Exist)) && tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewLesionState.Suspected)) ) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/ReadingCalculateService.cs index 6331b401..9a9311f5 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/ReadingCalculateService.cs @@ -101,7 +101,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } /// - /// 验证访视提交 + /// 验证检查批次提交 /// /// /// @@ -116,7 +116,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } /// - /// 将上一次的访视病灶添加到这一次 + /// 将上一次的检查批次病灶添加到这一次 /// /// /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs index 7b8c8a8f..f8c2809e 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs @@ -362,7 +362,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion /// - /// 将上一次的访视病灶添加到这一次 + /// 将上一次的检查批次病灶添加到这一次 /// /// /// diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index db323d43..3a30814d 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -13,7 +13,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid TrialId { get; set; } /// - /// 受试者编号具体规则 + /// 患者编号具体规则 /// public string SubjectCodeRule { get; set; } = string.Empty; @@ -27,7 +27,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsVerifyVisitImageDate { get; set; } = false; /// - /// 是否 提醒受试者编号规则 + /// 是否 提醒患者编号规则 /// public bool IsNoticeSubjectCodeRule { get; set; } = true; @@ -37,7 +37,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsHaveFirstGiveMedicineDate { get; set; } = true; /// - /// 是否有 受试者年龄 + /// 是否有 患者年龄 /// public bool IsHaveSubjectAge { get; set; } = false; @@ -45,7 +45,7 @@ namespace IRaCIS.Core.Application.Contracts /// - /// 出组后计划外访视名称 + /// 出组后计划外检查批次名称 /// public string OutEnrollmentVisitName { get; set; } = "EOT"; @@ -142,7 +142,7 @@ namespace IRaCIS.Core.Application.Contracts /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; @@ -227,7 +227,7 @@ namespace IRaCIS.Core.Application.Contracts //public ReadingMethod ReadingType { get; set; } /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } @@ -261,7 +261,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsReadingTaskViewInOrder { get; set; } = true; /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } @@ -384,7 +384,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsImageIabeled { get; set; } /// - /// IR阅片是否显示受试者信息 + /// IR阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; @@ -854,7 +854,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsReadingTaskViewInOrder { get; set; } = true; /// - /// IR阅片是否显示受试者信息 + /// IR阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index c27f01b9..019be16a 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -837,14 +837,14 @@ namespace IRaCIS.Core.Application var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException(); - //项目紧急 当前所有已提交,但未完成的访视,设置为加急。后续提交的访视也设置为加急 (在提交的时候,回去判断 项目加急,Subject加急,是否入组确认,是否Pd,从而设置访视是否加急) + //项目紧急 当前所有已提交,但未完成的检查批次,设置为加急。后续提交的检查批次也设置为加急 (在提交的时候,回去判断 项目加急,Subject加急,是否入组确认,是否Pd,从而设置检查批次是否加急) if (trialConfig.IsUrgent) { await _repository.BatchUpdateAsync(t => t.TrialId == trialInfo.Id && t.SubmitState == SubmitStateEnum.Submitted && t.ForwardState < ForwardStateEnum.Forwarded, s => new SubjectVisit() { IsUrgent = trialConfig.IsUrgent }); } - else //之前设置为加急的访视状态不变。后续提交的访视,为不加急。 + else //之前设置为加急的检查批次状态不变。后续提交的检查批次,为不加急。 { } @@ -862,7 +862,7 @@ namespace IRaCIS.Core.Application var canOPt = await _trialRepository.AnyAsync(trial => trial.Id == trialId && trial.IsTrialBasicLogicConfirmed && trial.IsTrialProcessConfirmed && trial.IsTrialUrgentConfirmed && trial.VisitPlanConfirmed); - return ResponseOutput.Ok(canOPt, msg: canOPt ? "" : "该项目的项目配置(基础配置、流程配置、加急配置) 、访视管理,有配置未确认,不能设置项目状态为启动。"); + return ResponseOutput.Ok(canOPt, msg: canOPt ? "" : "该项目的项目配置(基础配置、流程配置、加急配置) 、检查批次管理,有配置未确认,不能设置项目状态为启动。"); } /// @@ -889,7 +889,7 @@ namespace IRaCIS.Core.Application } else { - return ResponseOutput.NotOk("无法变更项目状态。该项目的项目配置、访视管理中,有未确认项"); + return ResponseOutput.NotOk("无法变更项目状态。该项目的项目配置、检查批次管理中,有未确认项"); } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs index 52f97b95..e1f1fcb3 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs @@ -248,7 +248,7 @@ namespace IRaCIS.Application.Services // 添加扩展信息表记录 await _repository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id }); - //添加访视 + //添加检查批次 await _repository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 0, BlindName = "B" + 0.ToString("D3"), VisitDay = 0, VisitName = "Batch 1", IsBaseLine = true,IsConfirmed=true,IsHaveFirstConfirmed=true ,VisitWindowLeft=-3,VisitWindowRight=28 }); await _repository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 1, BlindName = "B" + 10.ToString("D3"), VisitDay = 30, VisitName = "Batch 2", IsConfirmed = true, IsHaveFirstConfirmed = true, VisitWindowLeft = -3, VisitWindowRight = 3 }); await _repository.AddAsync(new VisitStage { TrialId = trial.Id, VisitNum = 2, BlindName = "B" + 20.ToString("D3"), VisitDay = 60, VisitName = "Batch 3", IsConfirmed = true, IsHaveFirstConfirmed = true, VisitWindowLeft = -3, VisitWindowRight = 3 }); @@ -433,7 +433,7 @@ namespace IRaCIS.Application.Services //if (trial.VisitPlanConfirmed) //{ - // return ResponseOutput.NotOk("Trial访视计划已经确认,无法删除"); + // return ResponseOutput.NotOk("Trial检查批次计划已经确认,无法删除"); //} //if (await _repository.AnyAsync(u => u.TrialId == trialId)) diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs index 7c16abe9..9c790307 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs @@ -21,9 +21,9 @@ namespace IRaCIS.Application.Services } /// - /// 添加或更新受试者信息[New] + /// 添加或更新患者信息[New] /// - /// state:1-访视中,2-出组。0-全部 + /// state:1-检查批次中,2-出组。0-全部 /// [TrialAudit(AuditType.SubjectAudit, AuditOptType.AddOrUpdateSubject)] @@ -33,13 +33,13 @@ namespace IRaCIS.Application.Services var svlist = new List(); if (await _repository.AnyAsync(t => t.Id == subjectCommand.TrialId && !t.VisitPlanConfirmed)) { - return ResponseOutput.NotOk("项目访视计划没有确认。请联系项目经理确认项目访视计划后,再添加受试者。"); + return ResponseOutput.NotOk("项目检查批次计划没有确认。请联系项目经理确认项目检查批次计划后,再添加患者。"); } var verifyExp1 = new EntityVerifyExp() { VerifyExp = u => u.Code == subjectCommand.Code && u.TrialId == subjectCommand.TrialId, - VerifyMsg = "已存在具有相关受试者编号的受试者。" + VerifyMsg = "已存在具有相关患者编号的患者。" }; @@ -88,7 +88,7 @@ namespace IRaCIS.Application.Services if (await _subjectVisitRepository.AnyAsync(u => u.SubjectId == id && u.VisitExecuted == VisitExecutedEnum.Executed)) { - return ResponseOutput.NotOk("该受试者已经有访视已经上传影像,不允许删除。"); + return ResponseOutput.NotOk("该患者已经有检查批次已经上传影像,不允许删除。"); } await _subjectRepository.UpdatePartialFromQueryAsync(id, x => new Subject @@ -105,8 +105,8 @@ namespace IRaCIS.Application.Services return ResponseOutput.Result(isSuccess); } - /// 分页获取受试者列表[New] - /// /// state:1-访视中,2-出组。0-全部 + /// 分页获取患者列表[New] + /// /// state:1-检查批次中,2-出组。0-全部 [HttpPost] public async Task, TrialSubjectConfig>> GetSubjectList(SubjectQueryParam param) { @@ -117,7 +117,7 @@ namespace IRaCIS.Application.Services .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex)) .WhereIf(param.Status != null, t => t.Status == param.Status) .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId) - // CRC 只负责他管理site的受试者 + // CRC 只负责他管理site的患者 .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .ProjectTo(_mapper.ConfigurationProvider); @@ -133,7 +133,7 @@ namespace IRaCIS.Application.Services /// - /// 计划外访视 获取受试者选择下拉框列表 + /// 计划外检查批次 获取患者选择下拉框列表 /// [HttpGet("{siteId:guid}/{trialId:guid}")] public List GetSubjectListBySiteId(Guid siteId, Guid trialId) diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index fa9cc006..258fc6c0 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -68,20 +68,20 @@ namespace IRaCIS.Core.Application.Services var verifyExp1 = new EntityVerifyExp() { VerifyExp = t => t.VisitNum == svCommand.VisitNum && t.SubjectId == svCommand.SubjectId, - VerifyMsg = "该受试者的访视计划中已经包含一个具有相同访视号的访视。" + VerifyMsg = "该患者的检查批次计划中已经包含一个具有相同检查批次号的检查批次。" }; var verifyExp2 = new EntityVerifyExp() { VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.IsFinalVisit, - VerifyMsg = "该受试者已经有访视设置为末次访视,不允许将当前访视设置为末次访视。", + VerifyMsg = "该患者已经有检查批次设置为末次检查批次,不允许将当前检查批次设置为末次检查批次。", IsVerify = svCommand.IsFinalVisit }; var verifyExp3 = new EntityVerifyExp() { VerifyExp = t => t.SubjectId == svCommand.SubjectId && t.VisitName == svCommand.VisitName, - VerifyMsg = "该受试者的访视计划中已经包含一个具有相同访视名称的访视。" + VerifyMsg = "该患者的检查批次计划中已经包含一个具有相同检查批次名称的检查批次。" }; @@ -96,17 +96,17 @@ namespace IRaCIS.Core.Application.Services if (svCommand.Id == null) { - //设置末次评估后,不允许添加计划外访视 + //设置末次评估后,不允许添加计划外检查批次 if (svCommand.InPlan == false) { if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == svCommand.SubjectId && t.IsFinalVisit)) { - throw new BusinessValidationFailedException("设置末次评估后,不允许添加计划外访视。"); + throw new BusinessValidationFailedException("设置末次评估后,不允许添加计划外检查批次。"); } if (await _repository.AnyAsync(t => t.SubjectId == svCommand.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum > svCommand.VisitNum && t.SignTime != null && t.TrialReadingCriterion.IsReadingTaskViewInOrder)) { - throw new BusinessValidationFailedException("该受试者后续访视已有任务完成阅片(有序阅片标准),不允许在此添加,如果确实需要,请回退"); + throw new BusinessValidationFailedException("该患者后续检查批次已有任务完成阅片(有序阅片标准),不允许在此添加,如果确实需要,请回退"); } } @@ -138,19 +138,19 @@ namespace IRaCIS.Core.Application.Services if (svCommand.PDState != dbBeforeEntity.PDState && dbBeforeEntity.SubmitState == SubmitStateEnum.Submitted) { - throw new BusinessValidationFailedException("当前访视影像提交后,不允许修改PD确认状态。"); + throw new BusinessValidationFailedException("当前检查批次影像提交后,不允许修改PD确认状态。"); } if (svCommand.PDState != dbBeforeEntity.PDState && dbBeforeEntity.RequestBackState == RequestBackStateEnum.PM_AgressBack) { - throw new BusinessValidationFailedException("当前访视为回退的访视,不允许修改PD确认状态。"); + throw new BusinessValidationFailedException("当前检查批次为回退的检查批次,不允许修改PD确认状态。"); } if (svCommand.IsLostVisit) { if (await _subjectVisitRepository.AnyAsync(t => t.Id == svCommand.Id && t.SubmitState == SubmitStateEnum.ToSubmit)) { - throw new BusinessValidationFailedException("当前访视已经有有影像上传,不允许设置为失访。"); + throw new BusinessValidationFailedException("当前检查批次已经有有影像上传,不允许设置为失访。"); } } @@ -158,7 +158,7 @@ namespace IRaCIS.Core.Application.Services } - //更新受试者 访视基准日期 是否入组确认 + //更新患者 检查批次基准日期 是否入组确认 if (svCommand.SubjectFirstGiveMedicineTime != null && svCommand.IsBaseLine) { @@ -197,15 +197,15 @@ namespace IRaCIS.Core.Application.Services { if (await _repository.AnyAsync(t => t.SubjectVisitId == id)) { - return ResponseOutput.NotOk("当前访视已经有影像上传,不允许删除。"); + return ResponseOutput.NotOk("当前检查批次已经有影像上传,不允许删除。"); } if (await _subjectVisitRepository.AnyAsync(t => t.Id == id && t.InPlan)) { - return ResponseOutput.NotOk("计划内的访视不允许删除。"); + return ResponseOutput.NotOk("计划内的检查批次不允许删除。"); } if (await _subjectVisitRepository.AnyAsync(t => t.OutPlanPreviousVisitId == id)) { - return ResponseOutput.NotOk("当前访视已经被设置为另一访视的上一访视,不允许删除。"); + return ResponseOutput.NotOk("当前检查批次已经被设置为另一检查批次的上一检查批次,不允许删除。"); } await _subjectVisitRepository.DeleteFromQueryAsync(s => s.Id == id, true); @@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application.Services /// - /// 获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的 + /// 获取检查批次下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的 /// /// /// @@ -295,7 +295,7 @@ namespace IRaCIS.Core.Application.Services } /// - /// 获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的 + /// 获取检查批次下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的 /// /// /// @@ -538,7 +538,7 @@ namespace IRaCIS.Core.Application.Services /// - /// 设置受试者访视已执行 也就是将studyUploaded状态置为true 为了那些没有影像 人工设置准备 + /// 设置患者检查批次已执行 也就是将studyUploaded状态置为true 为了那些没有影像 人工设置准备 /// /// /// diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index ddcc327a..bc4e2634 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -38,7 +38,7 @@ namespace IRaCIS.Application.Services ///暂时不用 - /// 获取项目访视计划 + /// 获取项目检查批次计划 [HttpPost] public async Task> GetTrialVisitStageList(VisitPlanQueryDTO param) { @@ -51,7 +51,7 @@ namespace IRaCIS.Application.Services } - /// 根据项目Id,获取项目访视计划(不分页)[New] + /// 根据项目Id,获取项目检查批次计划(不分页)[New] [HttpGet("{trialId:guid}")] public async Task GetVisitStageList(Guid trialId) { @@ -86,7 +86,7 @@ namespace IRaCIS.Application.Services } /// - /// 获取访视计划下拉框列表 + /// 获取检查批次计划下拉框列表 /// /// /// @@ -100,7 +100,7 @@ namespace IRaCIS.Application.Services } - /// 添加或更新访视计划某项 + /// 添加或更新检查批次计划某项 [UnitOfWork] [HttpPost] [Authorize(Policy = IRaCISPolicy.PM_APM)] @@ -128,7 +128,7 @@ namespace IRaCIS.Application.Services //比当前 visitNum小的 visitDay的最大值 还小 不允许添加 if (visitPlan.VisitDay <= visitPlanList.Where(t => t.VisitNum < visitPlan.VisitNum).Select(t => t.VisitDay).Max()) { - throw new BusinessValidationFailedException("访视计划中,访视号大的访视,其访视间隔也应该比访视号小的访视大。"); + throw new BusinessValidationFailedException("检查批次计划中,检查批次号大的检查批次,其检查批次间隔也应该比检查批次号小的检查批次大。"); } } @@ -137,7 +137,7 @@ namespace IRaCIS.Application.Services { if (visitPlan.VisitDay >= visitPlanList.Where(t => t.VisitNum > visitPlan.VisitNum).Select(t => t.VisitDay).Min()) { - throw new BusinessValidationFailedException("访视计划中,访视号大的计划访视,其访视间隔也应该比访视号小的计划访视大。"); + throw new BusinessValidationFailedException("检查批次计划中,检查批次号大的计划检查批次,其检查批次间隔也应该比检查批次号小的计划检查批次大。"); } } @@ -148,12 +148,12 @@ namespace IRaCIS.Application.Services if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum), true)) { - throw new BusinessValidationFailedException("访视计划中已经存在具有项目访视名称或者访视号的计划访视模板。"); + throw new BusinessValidationFailedException("检查批次计划中已经存在具有项目检查批次名称或者检查批次号的计划检查批次模板。"); } if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine, true) && visitPlan.IsBaseLine) { - throw new BusinessValidationFailedException("访视计划中已经存在基线。"); + throw new BusinessValidationFailedException("检查批次计划中已经存在基线。"); } //不用前端传递的值 @@ -171,12 +171,12 @@ namespace IRaCIS.Application.Services if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id, true)) { - throw new BusinessValidationFailedException("访视计划中已经存在具有项目访视名称或者访视号的计划访视模板。"); + throw new BusinessValidationFailedException("检查批次计划中已经存在具有项目检查批次名称或者检查批次号的计划检查批次模板。"); } if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id, true) && visitPlan.IsBaseLine) { - throw new BusinessValidationFailedException("访视计划中已经存在基线。"); + throw new BusinessValidationFailedException("检查批次计划中已经存在基线。"); } visitPlan.IsConfirmed = false; @@ -189,7 +189,7 @@ namespace IRaCIS.Application.Services { if (await _repository.Where(t => t.TrialId == visitPlan.TrialId).AnyAsync(v => v.IsBaseLine && v.SubmitState >= SubmitStateEnum.ToSubmit)) { - throw new BusinessValidationFailedException("有受试者的基线已经上传了影像数据,不允许修改基线访视。"); + throw new BusinessValidationFailedException("有患者的基线已经上传了影像数据,不允许修改基线检查批次。"); } } @@ -223,7 +223,7 @@ namespace IRaCIS.Application.Services if (!await _trialRepository.AnyAsync(t => t.Id == trialId && t.IsTrialBasicLogicConfirmed && t.IsTrialProcessConfirmed && t.IsTrialUrgentConfirmed)) { - return ResponseOutput.NotOk("项目配置未确认,不允许确认访视计划"); + return ResponseOutput.NotOk("项目配置未确认,不允许确认检查批次计划"); } var svList = await _visitStageRepository.Where(t => t.TrialId == trialId).Select(u => new { u.VisitDay, u.IsBaseLine }).ToListAsync(); @@ -234,7 +234,7 @@ namespace IRaCIS.Application.Services } - //更新项目访视计划状态为已确认 必定生成更新的sql 通过状态改变 触发操作 + //更新项目检查批次计划状态为已确认 必定生成更新的sql 通过状态改变 触发操作 //await _trialRepository.UpdatePartialNowNoQueryAsync(trialId, t => new Trial() { VisitPlanConfirmed = true }); @@ -246,9 +246,9 @@ namespace IRaCIS.Application.Services trial.VisitPlanConfirmed = true; - #region 统一给Subject 增加访视任务 + #region 统一给Subject 增加检查批次任务 - //首次确认时 IsHaveFirstConfirmed都为false 不需要给Subject 加访视 + //首次确认时 IsHaveFirstConfirmed都为false 不需要给Subject 加检查批次 if (initTrialVisitPlanConfirmed) { List subjectVisits = new List(); @@ -269,7 +269,7 @@ namespace IRaCIS.Application.Services svItem.SiteId = subject.SiteId; svItem.SubjectId = subject.SubjectId; - //设置了末次访视,那么加访视计划的时候,设置为不可用 + //设置了末次检查批次,那么加检查批次计划的时候,设置为不可用 if (subjectSVS.Any(t => t.SubjectId == svItem.SubjectId && t.IsFinalVisit)) { svItem.VisitExecuted = VisitExecutedEnum.Unavailable; @@ -295,9 +295,9 @@ namespace IRaCIS.Application.Services - #region 访视计划修改 影响检查 + #region 检查批次计划修改 影响检查 - //找到访视计划修改的Item + //找到检查批次计划修改的Item var changedList = await _visitStageRepository.Where(t => t.TrialId == trial.Id && t.IsConfirmed == false) .Select(t => new { @@ -320,7 +320,7 @@ namespace IRaCIS.Application.Services foreach (var changedItem in changedList) { - //找到该项目 访视已经执行,并且配置了有首次给药日期 并且更新后超窗的访视,要把超窗之前的值也要查询出来 + //找到该项目 检查批次已经执行,并且配置了有首次给药日期 并且更新后超窗的检查批次,要把超窗之前的值也要查询出来 var qcPassedVisitList = await _subjectVisitRepository.Where(t => t.TrialId == trialId && t.VisitExecuted == VisitExecutedEnum.Executed && t.AuditState == AuditStateEnum.QCPassed @@ -432,7 +432,7 @@ namespace IRaCIS.Application.Services - //变更某一访视计划Item 受试者访视相关字段 + //变更某一检查批次计划Item 患者检查批次相关字段 await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.VisitStageId == changedItem.Id, k => new SubjectVisit() { IsBaseLine = changedItem.IsBaseLine, @@ -451,7 +451,7 @@ namespace IRaCIS.Application.Services - //访视计划 整体状态变更为 确认 + //检查批次计划 整体状态变更为 确认 await _visitStageRepository.UpdatePartialFromQueryAsync(u => u.TrialId == trialId && u.IsConfirmed == false, t => new VisitStage() { IsConfirmed = true, IsHaveFirstConfirmed = true }); await _visitStageRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs index e7bb0555..468eddfc 100644 --- a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs @@ -6,7 +6,7 @@ using MassTransit; namespace IRaCIS.Core.Application.Triggers { /// - /// 添加访视计划 要给改项目下的所有Subject 添加该访视 + /// 添加检查批次计划 要给改项目下的所有Subject 添加该检查批次 /// public class AddSubjectTrigger : IBeforeSaveTrigger { @@ -40,7 +40,7 @@ namespace IRaCIS.Core.Application.Triggers - //添加受试者的时候,获取访视计划列表,添加到受试者访视表。 + //添加患者的时候,获取检查批次计划列表,添加到患者检查批次表。 var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == subject.TrialId && t.IsConfirmed).ToListAsync(); var svList = _mapper.Map>(visitPlanList); @@ -67,8 +67,8 @@ namespace IRaCIS.Core.Application.Triggers await _subjectVisitRepository.SaveChangesAsync(); - #region 在f访视计划确认的时候处理 给subject添加访视计划 - ////已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录 + #region 在f检查批次计划确认的时候处理 给subject添加检查批次计划 + ////已添加患者 都不存在该新增的计划名称 那么该项目所有患者都增加一个检查批次记录 //if (!await _subjectVisitRepository.AnyAsync(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId)) //{ // var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId, t.IsFinalVisit }).Distinct().ToListAsync(); @@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Triggers // svItem.SubjectId = subject.SubjectId; // svItem.Id = NewId.NextGuid(); - // //设置了末次访视,那么加访视计划的时候,设置为不可用 + // //设置了末次检查批次,那么加检查批次计划的时候,设置为不可用 // if (subjectSVS.Any(t => t.SubjectId == svItem.SubjectId && t.IsFinalVisit)) // { // svItem.VisitExecuted = VisitExecutedEnum.Unavailable; diff --git a/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs b/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs index 24431b77..1ec912f0 100644 --- a/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs @@ -4,7 +4,7 @@ using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Triggers { - //访视 质疑状态 触发修改 + //检查批次 质疑状态 触发修改 public class ChallengeStateTrigger : IAfterSaveTrigger { private readonly IRepository _repository; diff --git a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs index 7983ca9d..e00a5cdf 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs @@ -43,13 +43,13 @@ namespace IRaCIS.Core.Application.Triggers #region 废弃 - ////如果访视结束了 需要删除计划外未执行的访视 + ////如果检查批次结束了 需要删除计划外未执行的检查批次 //if (mapedSubject.Status == SubjectStatus.EndOfVisit) //{ // await _repository.DeleteFromQueryAsync(t => t.VisitExecuted == VisitExecutedEnum.UnExecuted && t.SubjectId == mapedSubject.Id && t.InPlan == false); //} - ////如果是出组了 将受试者未执行的 设置为不可用 + ////如果是出组了 将患者未执行的 设置为不可用 //if (mapedSubject.Status == SubjectStatus.OutOfEnrollment) //{ // await _repository.UpdateFromQueryAsync(t => t.SubjectId == mapedSubject.Id && t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); @@ -67,7 +67,7 @@ namespace IRaCIS.Core.Application.Triggers { throw new BusinessValidationFailedException( - "该受试者已经有访视被设置为末次访视,不允许将当前访视设置为末次访视。"); + "该患者已经有检查批次被设置为末次检查批次,不允许将当前检查批次设置为末次检查批次。"); } var sv = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == dbSubject.FinalSubjectVisitId).IfNullThrowException(); @@ -76,14 +76,14 @@ namespace IRaCIS.Core.Application.Triggers { throw new BusinessValidationFailedException( - "该受试者当前访视后有访视的影像已上传,当前访视不允许设置为末次访视。"); + "该患者当前检查批次后有检查批次的影像已上传,当前检查批次不允许设置为末次检查批次。"); } sv.IsFinalVisit = true; await _subjectVisitRepository.SaveChangesAsync(); - //末次访视后的 访视设置为不可用 + //末次检查批次后的 检查批次设置为不可用 await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == dbSubject.Id && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); } } diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs index 4cd05bdc..1cea4851 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs @@ -9,7 +9,7 @@ using IRaCIS.Core.Infrastructure; namespace IRaCIS.Core.Application.Triggers { /// - /// 处理 访视 末次评估 会影响Subject 状态 + /// 处理 检查批次 末次评估 会影响Subject 状态 /// public class SubjectVisitCheckPassedTrigger : IBeforeSaveTrigger { diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs index 4f966504..f79b2a61 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs @@ -8,7 +8,7 @@ using MassTransit; namespace IRaCIS.Core.Application.Triggers { /// - /// 处理 访视 末次评估 会影响Subject 状态 + /// 处理 检查批次 末次评估 会影响Subject 状态 /// public class SubjectVisitFinalVisitTrigger : IAfterSaveTrigger { @@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Triggers } /// - /// 处理生成阅片期 以及后续访视状态 + /// 处理生成阅片期 以及后续检查批次状态 /// /// /// @@ -94,12 +94,12 @@ namespace IRaCIS.Core.Application.Triggers u => new Subject() { Status = SubjectStatus.OutOfVisit, FinalSubjectVisitId = subjectVisit.Id }); - //末次访视后的 访视设置为不可用 + //末次检查批次后的 检查批次设置为不可用 await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); - #region 末次访视生成阅片器和任务 + #region 末次检查批次生成阅片器和任务 var trialId = subjectVisit.TrialId; @@ -180,7 +180,7 @@ namespace IRaCIS.Core.Application.Triggers if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && (t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted))) { - throw new BusinessValidationFailedException("该受试者已有后续访视已上传影像或已提交,当前访视不允许设置为末次访视。"); + throw new BusinessValidationFailedException("该患者已有后续检查批次已上传影像或已提交,当前检查批次不允许设置为末次检查批次。"); } } diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs index 979c1f77..51d1bede 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs @@ -4,7 +4,7 @@ using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Triggers { /// - /// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 + /// 处理 检查批次 1、提交状态 2、执行状态 3、最早最晚 拍片日期 /// public class SubjectVisitTrigger : IAfterSaveTrigger, IAfterSaveTrigger, IAfterSaveTrigger { @@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Triggers public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId) { - //一个访视下面有多个检查,所以需要检测 没有的时候才清空 非dicom 是检查文件 不是表记录 + //一个检查批次下面有多个检查,所以需要检测 没有的时候才清空 非dicom 是检查文件 不是表记录 if (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.StudyList).CountAsync() == 0 && await _subjectVisitRepository.Where(t => t.Id == subjectVisitId) .SelectMany(t => t.NoneDicomStudyList).SelectMany(u => u.NoneDicomFileList).CountAsync() == 0) diff --git a/IRaCIS.Core.Application/_MediatR/CommandAndQueries/ConsistencyVerificationRequest.cs b/IRaCIS.Core.Application/_MediatR/CommandAndQueries/ConsistencyVerificationRequest.cs index 9e17b0f9..95b00b13 100644 --- a/IRaCIS.Core.Application/_MediatR/CommandAndQueries/ConsistencyVerificationRequest.cs +++ b/IRaCIS.Core.Application/_MediatR/CommandAndQueries/ConsistencyVerificationRequest.cs @@ -77,14 +77,14 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries public string SiteCode { get; set; } = string.Empty; - //[Required(ErrorMessage = "受试者筛选号不能为空")] - [ImporterHeader(Name = "受试者筛选号", AutoTrim = true)] - [ExcelColumnName("受试者筛选号")] + //[Required(ErrorMessage = "患者筛选号不能为空")] + [ImporterHeader(Name = "患者筛选号", AutoTrim = true)] + [ExcelColumnName("患者筛选号")] public string SubjectCode { get; set; } = string.Empty; - //[Required(ErrorMessage = "访视名称不能为空")] - [ImporterHeader(Name = "访视名称", AutoTrim = true)] - [ExcelColumnName("访视名称")] + //[Required(ErrorMessage = "检查批次名称不能为空")] + [ImporterHeader(Name = "检查批次名称", AutoTrim = true)] + [ExcelColumnName("检查批次名称")] public string VisitName { get; set; } = string.Empty; @@ -141,10 +141,10 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries [ExporterHeader(DisplayName = "中心编号")] public string TrialSiteCode { get; set; } = string.Empty; - [ExporterHeader(DisplayName = "受试者")] + [ExporterHeader(DisplayName = "患者")] public string SubjectCode { get; set; } = string.Empty; - [ExporterHeader(DisplayName = "访视名称")] + [ExporterHeader(DisplayName = "检查批次名称")] public string VisitName { get; set; } = string.Empty; [ExporterHeader(DisplayName = "检查时间", Format = "yyyy-mm-dd hh:mm:ss")] diff --git a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs index 927ecf90..110cfc1d 100644 --- a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs +++ b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs @@ -88,11 +88,11 @@ namespace IRaCIS.Core.Application.MediatR.Handlers var dbCheckList = _mapper.Map>(dbList); - ////按照数据库数据访视分组 按照数据库的数据 一个个的访视对比 + ////按照数据库数据检查批次分组 按照数据库的数据 一个个的检查批次对比 //var svGroup = dbList.GroupBy(t => new { t.SubjectVisitId, t.SiteCode, t.SubjectCode, t.VisitName }) // .Select(g => new { g.Key.SubjectCode, g.Key.VisitName, g.Key.SiteCode, g.Key.SubjectVisitId, StudyList = g.ToList() }).ToList(); - //按照Excel数据访视分组 按照数据库的数据 一个个的访视对比 + //按照Excel数据检查批次分组 按照数据库的数据 一个个的检查批次对比 var svExcelGroup = etcList.GroupBy(t => new { t.SiteCode, t.SubjectCode, t.VisitName }) .Select(g => new { g.Key.SubjectCode, g.Key.VisitName, g.Key.SiteCode, ExcelStudyList = g.ToList() }).ToList(); @@ -100,7 +100,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers foreach (var sv in svExcelGroup) { - //Excel 的数据 在IRC 中可以找到该访视 + //Excel 的数据 在IRC 中可以找到该检查批次 if (dbCheckList.Any(t => t.SubjectCode == sv.SubjectCode && t.SiteCode == sv.SiteCode && t.VisitName == sv.VisitName)) { @@ -112,7 +112,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers StringBuilder dialogMsg = new StringBuilder(); - dialogMsg.Append("您好,根据本系统自动识别,该受试者当前访视在IRC系统中已提交的影像检查情况如下:"); + dialogMsg.Append("您好,根据本系统自动识别,该患者当前检查批次在IRC系统中已提交的影像检查情况如下:"); var num = 0; List paramInfoList = new List(); foreach (var item in dbVisitStudyList) @@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers var dbSV = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException(); #region 更换核对的顺序 以Excel 数据为准 注释 - //// 该访视 在EDC Excel中没有任何数据 + //// 该检查批次 在EDC Excel中没有任何数据 //if (etcVisitStudyList.Count == 0) //{ // dialogMsg.AppendLine($"
"); @@ -143,9 +143,9 @@ namespace IRaCIS.Core.Application.MediatR.Handlers // } // dialogMsg.AppendLine($"
"); - // dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。"); + // dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该检查批次正确的影像检查情况。"); - // dbSV.CheckResult = "当前访视在EDC表中未找到数据,请核对 SubjectCode、 SiteCode 、VisitName 是否和EDC系统保持一致"; + // dbSV.CheckResult = "当前检查批次在EDC表中未找到数据,请核对 SubjectCode、 SiteCode 、VisitName 是否和EDC系统保持一致"; // dbSV.CheckState = CheckStateEnum.CVIng; // dbSV.ForwardState = ForwardStateEnum.ToForward; // dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply; @@ -178,7 +178,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers dialogMsg.AppendLine($"核对EDC数据,完全一致, 审核通过"); - // dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。"); + // dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该检查批次正确的影像检查情况。"); dbSV.CheckState = CheckStateEnum.CVPassed; dbSV.CheckUserId = _userInfo.Id; dbSV.CheckPassedTime = DateTime.Now; @@ -218,9 +218,9 @@ namespace IRaCIS.Core.Application.MediatR.Handlers } dialogMsg.AppendLine($"
"); - dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。"); + dialogMsg.AppendLine(@$"
说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该检查批次正确的影像检查情况。"); - dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | " + dbSV.CheckResult = "根据导入的一致性核查数据,请确认本检查批次以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | " + String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}")); //新增一致性核查质疑记录 diff --git a/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs b/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs index 2d0cc209..52885dd9 100644 --- a/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs +++ b/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs @@ -4,7 +4,7 @@ namespace IRaCIS.Core.Domain.Share { public enum ReadingCategory { - //访视 + //检查批次 Visit = 1, ////阅片周期 @@ -28,7 +28,7 @@ namespace IRaCIS.Core.Domain.Share public enum GenerateTaskCategory { - //访视 + //检查批次 Visit = 1, ////阅片周期 @@ -238,7 +238,7 @@ namespace IRaCIS.Core.Domain.Share None = 0, /// - /// 访视 + /// 检查批次 /// Visit=1, @@ -265,10 +265,10 @@ namespace IRaCIS.Core.Domain.Share public enum ReadingTaskViewMethod { - //受试者 + //患者 Subject = 0, - //访视/阅片期 + //检查批次/阅片期 ReadingPeriodOrVisit = 2, } @@ -316,7 +316,7 @@ namespace IRaCIS.Core.Domain.Share PDProgress=2, /// - /// 访视加急 + /// 检查批次加急 /// VisitUrgent=3, diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 07ad8123..4b1db2f4 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -20,7 +20,7 @@ namespace IRaCIS.Core.Domain.Share public enum RelevanceType { /// - /// 关联的访视任务ID (当前任务是访视任务的话会有自己)集合 + /// 关联的检查批次任务ID (当前任务是检查批次任务的话会有自己)集合 /// Related = 0, @@ -686,12 +686,12 @@ namespace IRaCIS.Core.Domain.Share public enum ModuleTypeEnum { /// - /// 计划内访视 + /// 计划内检查批次 /// InPlanSubjectVisit = 0, /// - /// 计划外访视 + /// 计划外检查批次 /// OutPlanSubjectVisit = 1, @@ -914,15 +914,15 @@ namespace IRaCIS.Core.Domain.Share public enum ClinicalLevel { /// - /// 受试者 + /// 患者 /// - [DisplayAttribute(Name = "受试者")] + [DisplayAttribute(Name = "患者")] Subject = 0, /// - /// 访视 + /// 检查批次 /// - [DisplayAttribute(Name = "访视")] + [DisplayAttribute(Name = "检查批次")] SubjectVisit = 1, /// @@ -1039,22 +1039,22 @@ namespace IRaCIS.Core.Domain.Share SODChange = 2, /// - /// 与基线访视相比SOD变化百分比 + /// 与基线检查批次相比SOD变化百分比 /// SODPercent = 3, /// - /// 与整个访视期间SOD最低点相比增加的值(mm) 其他任务需要改 + /// 与整个检查批次期间SOD最低点相比增加的值(mm) 其他任务需要改 /// LowestIncrease = 4, /// - /// 与整个访视期间SOD最低点相比增加的百分比 其他任务需要改 + /// 与整个检查批次期间SOD最低点相比增加的百分比 其他任务需要改 /// LowPercent = 5, /// - /// 整个访视期间SOD最低点访视名称 其他任务需要改 + /// 整个检查批次期间SOD最低点检查批次名称 其他任务需要改 /// LowVisit = 6, @@ -1064,7 +1064,7 @@ namespace IRaCIS.Core.Domain.Share IsLymphTarget = 7, /// - /// 是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上 + /// 是否存在淋巴结靶病灶且该病灶比上一检查批次短径增加5MM以上 /// IsAddFive = 8, @@ -1094,7 +1094,7 @@ namespace IRaCIS.Core.Domain.Share Tumor = 13, /// - /// 访视点备注 --注册证环境 评估总结 + /// 检查批次点备注 --注册证环境 评估总结 /// /// AdjustReason = 14, @@ -1120,7 +1120,7 @@ namespace IRaCIS.Core.Domain.Share AlwaysNewLesionsCount = 18, /// - /// 自治疗后第二个访视点以来持续的新骨病变数量 + /// 自治疗后第二个检查批次点以来持续的新骨病变数量 /// NewBoneLesionsCount = 19, @@ -1130,7 +1130,7 @@ namespace IRaCIS.Core.Domain.Share TherapeuticEffectEvaluationGroup=20, /// - /// 访视点肿瘤评估 + /// 检查批次点肿瘤评估 /// SiteVisitForTumorEvaluation = 21, @@ -1143,7 +1143,7 @@ namespace IRaCIS.Core.Domain.Share } /// - /// 访视点肿瘤评估 + /// 检查批次点肿瘤评估 /// public enum VisitTumorEvaluation { @@ -1190,7 +1190,7 @@ namespace IRaCIS.Core.Domain.Share GlobalChange = 2, /// - /// 访视点注释 + /// 检查批次点注释 /// VisitRemark = 3, } diff --git a/IRaCIS.Core.Domain/Abandon/WorkloadDistribution.cs b/IRaCIS.Core.Domain/Abandon/WorkloadDistribution.cs index d5972cc0..4fed63af 100644 --- a/IRaCIS.Core.Domain/Abandon/WorkloadDistribution.cs +++ b/IRaCIS.Core.Domain/Abandon/WorkloadDistribution.cs @@ -25,7 +25,7 @@ namespace IRaCIS.Core.Domain.Models public string VisitName { get; set; } - // 项目Id,受试者Id,num 共同决定 Global 关联的所有study, + // 项目Id,患者Id,num 共同决定 Global 关联的所有study, // 暂定设计成这样,后期如有需要,爱用中间表 关联。 public Guid TrialId { get; set; } public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Allocation/SubjectTaskCategory.cs b/IRaCIS.Core.Domain/Allocation/SubjectTaskCategory.cs index b0ff5410..9f3aa4e8 100644 --- a/IRaCIS.Core.Domain/Allocation/SubjectTaskCategory.cs +++ b/IRaCIS.Core.Domain/Allocation/SubjectTaskCategory.cs @@ -23,7 +23,7 @@ namespace IRaCIS.Core.Domain.Models public string TaskBlindName { get; set; } = string.Empty; - //任务来源访视Id 方便回更访视读片状态 + //任务来源检查批次Id 方便回更检查批次读片状态 public Guid? SourceSubjectVisitId { get; set; } [JsonIgnore] diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 6017ca94..e9e705b9 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -23,7 +23,7 @@ namespace IRaCIS.Core.Domain.Models public string TaskBlindName { get; set; } = string.Empty; - //任务来源访视Id 方便回更访视读片状态 + //任务来源检查批次Id 方便回更检查批次读片状态 public Guid? SourceSubjectVisitId { get; set; } public Guid? SouceReadModuleId { get; set; } @@ -170,7 +170,7 @@ namespace IRaCIS.Core.Domain.Models - //随访任务号 取访视的号 计划外是 访视+0.1 裁判任务在访视任务上+0.002 全局任务在截止访视号上+0.03 肿瘤待定 + //随访任务号 取检查批次的号 计划外是 检查批次+0.1 裁判任务在检查批次任务上+0.002 全局任务在截止检查批次号上+0.03 肿瘤待定 public decimal VisitTaskNum { get; set; } @@ -191,12 +191,12 @@ namespace IRaCIS.Core.Domain.Models public bool IsReadClinicalData { get; set; } = false; /// - /// 关联的访视任务ID (当前任务是访视任务的话会有自己) + /// 关联的检查批次任务ID (当前任务是检查批次任务的话会有自己) /// public string RelatedVisitTaskIds { get; set; } = "[]"; /// - /// 关联的访视任务ID (当前任务是访视任务的话会有自己)集合 + /// 关联的检查批次任务ID (当前任务是检查批次任务的话会有自己)集合 /// [NotMapped] public List RelatedVisitTaskIdList @@ -344,7 +344,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] - //对于全局任务而言 才可以用的 关联的访视阅片结果 + //对于全局任务而言 才可以用的 关联的检查批次阅片结果 public List GlobalVisitResultList { get; set; } = new List(); diff --git a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs index f3365058..f471319f 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs @@ -61,7 +61,7 @@ namespace IRaCIS.Core.Domain.Models public bool IsCopyOrigenalForms { get; set; } - //仅仅包括全局和访视 + //仅仅包括全局和检查批次 public bool IsCopyFollowForms { get; set; } diff --git a/IRaCIS.Core.Domain/Management/User.cs b/IRaCIS.Core.Domain/Management/User.cs index ede2ff58..c91ed7e4 100644 --- a/IRaCIS.Core.Domain/Management/User.cs +++ b/IRaCIS.Core.Domain/Management/User.cs @@ -45,7 +45,7 @@ namespace IRaCIS.Core.Domain.Models // ڲû ⲿû - public bool IsZhiZhun { get; set; } + public bool? IsZhiZhun { get; set; } public UserTypeEnum UserTypeEnum { get; set; } diff --git a/IRaCIS.Core.Domain/QC/ClinicalData/PreviousPDF.cs b/IRaCIS.Core.Domain/QC/ClinicalData/PreviousPDF.cs index 00645826..f695ad7a 100644 --- a/IRaCIS.Core.Domain/QC/ClinicalData/PreviousPDF.cs +++ b/IRaCIS.Core.Domain/QC/ClinicalData/PreviousPDF.cs @@ -50,7 +50,7 @@ namespace IRaCIS.Core.Domain.Models /// - /// 是否是访视 + /// 是否是检查批次 /// public bool? IsVisist { get; set; } @@ -75,7 +75,7 @@ namespace IRaCIS.Core.Domain.Models public Guid? TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid? SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs index 2cbed9d3..47f97378 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs @@ -20,12 +20,12 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } /// - /// 访视Id 或者模块Id + /// 检查批次Id 或者模块Id /// public Guid ReadingId { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -35,7 +35,7 @@ namespace IRaCIS.Core.Domain.Models public Guid ClinicalDataTrialSetId { get; set; } /// - /// 是否为访视 + /// 是否为检查批次 /// xiu public bool IsVisit { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs index f867001c..afce4ce5 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs @@ -139,7 +139,7 @@ namespace IRaCIS.Core.Domain.Models /// - /// 阅片是否显示受试者信息 + /// 阅片是否显示患者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = true; @@ -197,7 +197,7 @@ namespace IRaCIS.Core.Domain.Models public bool IsOncologyReading { get; set; } /// - /// 任务展示访视 读片任务显示是否顺序 + /// 任务展示检查批次 读片任务显示是否顺序 /// public bool IsReadingTaskViewInOrder { get; set; } = true; @@ -206,7 +206,7 @@ namespace IRaCIS.Core.Domain.Models public TaskAllocateObj TaskAllocateObjEnum { get; set; } - //后续访视任务自动分配 + //后续检查批次任务自动分配 public bool IsFollowVisitAutoAssign { get; set; } = true; //后续全局自动分配 @@ -216,7 +216,7 @@ namespace IRaCIS.Core.Domain.Models public TaskAllocateDefaultState FollowJudgeTaskAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; - //后续访视自动分配默认状态 + //后续检查批次自动分配默认状态 public TaskAllocateDefaultState FollowVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; //后续全局自动分配默认状态 diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingJudgeInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingJudgeInfo.cs index 668ffabd..5cd55777 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingJudgeInfo.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingJudgeInfo.cs @@ -49,7 +49,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } /// - /// 受试者ID + /// 患者ID /// [Required] public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingOncologyTaskInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingOncologyTaskInfo.cs index 1bd73fab..70852209 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingOncologyTaskInfo.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingOncologyTaskInfo.cs @@ -10,7 +10,7 @@ using System.ComponentModel.DataAnnotations.Schema; namespace IRaCIS.Core.Domain.Models { /// - /// 阅片肿瘤学 针对访视任务 添加了一个结果 + /// 阅片肿瘤学 针对检查批次任务 添加了一个结果 /// [Table("ReadingOncologyTaskInfo")] public class ReadingOncologyTaskInfo : Entity, IAuditAdd @@ -22,7 +22,7 @@ namespace IRaCIS.Core.Domain.Models public Guid OncologyTaskId { get; set; } /// - /// 产生肿瘤学阅片任务的 访视类型的阅片任务Id + /// 产生肿瘤学阅片任务的 检查批次类型的阅片任务Id /// public Guid VisitTaskId { get; set; } @@ -52,7 +52,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } /// - /// 受试者Id + /// 患者Id /// public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs index 38c8fdff..3cba08fc 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionAnswer.cs @@ -30,7 +30,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } /// - /// 受试者Id + /// 患者Id /// public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs index aa09506c..4939466d 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs @@ -23,7 +23,7 @@ namespace IRaCIS.Core.Domain.Models public List ModuleTaskList { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -45,7 +45,7 @@ namespace IRaCIS.Core.Domain.Models public bool? IsUrgent { get; set; } /// - /// 访视ID + /// 检查批次ID /// public Guid SubjectVisitId { get; set; } @@ -98,7 +98,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] /// - /// 受试者 + /// 患者 /// [ForeignKey("SubjectId")] @@ -113,7 +113,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] /// - /// 访视 + /// 检查批次 /// [ForeignKey("SubjectVisitId")] public SubjectVisit SubjectVisit { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodPlan.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodPlan.cs index b82efd57..4dbcd56e 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodPlan.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodPlan.cs @@ -20,12 +20,12 @@ namespace IRaCIS.Core.Domain.Models public Guid ReadingPeriodSetId { get; set; } /// - /// 访视 + /// 检查批次 /// public Guid SubjectVisitId { get; set; } /// - /// 访视 + /// 检查批次 /// [ForeignKey("SubjectVisitId")] [JsonIgnore] diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSet.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSet.cs index d191a632..b8e08faa 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSet.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSet.cs @@ -38,18 +38,18 @@ namespace IRaCIS.Core.Domain.Models public DateTime? ExpirationDate { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public decimal? ExpirationVisitNum { get; set; } /// - /// 访视计划ID + /// 检查批次计划ID /// public Guid? VisitStageId { get; set; } [JsonIgnore] /// - /// 访视模板 + /// 检查批次模板 /// [ForeignKey("VisitStageId")] public VisitStage VisitStage { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs index 5c968799..86962eb5 100644 --- a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs +++ b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs @@ -10,7 +10,7 @@ namespace IRaCIS.Core.Domain.Models public class ReadModuleView: Entity { /// - /// Id(阅片期Id 或者 访视ID) + /// Id(阅片期Id 或者 检查批次ID) /// public new Guid Id { get; set; } @@ -26,7 +26,7 @@ namespace IRaCIS.Core.Domain.Models public string Name { get; set; } /// - /// 受试者ID + /// 患者ID /// public Guid SubjectId { get; set; } @@ -41,25 +41,25 @@ namespace IRaCIS.Core.Domain.Models public bool? IsUrgent { get; set; } /// - /// 访视ID + /// 检查批次ID /// public Guid SubjectVisitId { get; set; } /// - /// 访视名称 + /// 检查批次名称 /// public string SubjectVisitName { get; set; } /// - /// 截止访视 + /// 截止检查批次 /// public Guid? CutOffVisitId { get; set; } /// - /// 截止访视名称 + /// 截止检查批次名称 /// public string? CutOffVisitName { get; set; } @@ -81,7 +81,7 @@ namespace IRaCIS.Core.Domain.Models public DateTime CreateTime { get; set; } /// - /// 受试者Code + /// 患者Code /// public string SubjectCode { get; set; } @@ -96,17 +96,17 @@ namespace IRaCIS.Core.Domain.Models public string TrialSiteCode { get; set; } /// - /// 是否为末次访视 + /// 是否为末次检查批次 /// public bool IsFinalVisit { get; set; } = false; /// - /// 上一访视 + /// 上一检查批次 /// public Guid? OutPlanPreviousVisitId { get; set; } /// - /// 上一访视名称 + /// 上一检查批次名称 /// public string OutPlanPreviousVisitName { get; set; } @@ -116,12 +116,12 @@ namespace IRaCIS.Core.Domain.Models public Guid SiteId { get; set; } /// - /// 是否为访视 + /// 是否为检查批次 /// public bool IsVisit { get; set; } /// - /// 访视Num + /// 检查批次Num /// public decimal? VisitNum { get; set; } diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql index 8c0052b9..ae25ec14 100644 --- a/IRaCIS.Core.Domain/SQLFile/Test.sql +++ b/IRaCIS.Core.Domain/SQLFile/Test.sql @@ -55,8 +55,8 @@ select * from VisitTask where TrialReadingCriterionId is null update Site set SiteCode= 'S'+ RIGHT('0000'+CAST(Site.Code as varchar(10)),4) --不用同步 -update FrontAuditConfig set ValueCN='任务名称' where Value='TaskName' and ValueCN='访视/阅片期名称' and Code='TaskName' -update FrontAuditConfig set ValueCN='任务盲态标识' where Value='TaskBlindName' and ValueCN='访视盲态名称' and Code='TaskBlindName' +update FrontAuditConfig set ValueCN='任务名称' where Value='TaskName' and ValueCN='检查批次/阅片期名称' and Code='TaskName' +update FrontAuditConfig set ValueCN='任务盲态标识' where Value='TaskBlindName' and ValueCN='检查批次盲态名称' and Code='TaskBlindName' -----------------------------------------之前的------------------------------------------------------------- @@ -208,7 +208,7 @@ inner join Hospital on Hospital.HospitalName=Site.SiteName ---2023 -1-10 ---处理访视 +--处理检查批次 --基线 update VisitTask set IsNeedClinicalDataSign =1 from VisitTask inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId @@ -270,7 +270,7 @@ inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id -----处理 是否所有临床数据都签名的字段 ---处理访视 +--处理检查批次 --基线 update VisitTask set IsClinicalDataSign =1 from VisitTask inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId @@ -308,7 +308,7 @@ inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=V inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1 - -- 非基线 可能只有CRC 访视级别 PM 没有 + -- 非基线 可能只有CRC 检查批次级别 PM 没有 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1 and UploadRole=1 ) =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id @@ -320,7 +320,7 @@ inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=V inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =1 and VisitTask.IsNeedClinicalDataSign=1 - -- 非基线 可能只有CRC 访视级别 PM 没有 + -- 非基线 可能只有CRC 检查批次级别 PM 没有 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1 and UploadRole=1 ) !=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id @@ -399,7 +399,7 @@ WHERE EXISTS ( update ReadingClinicalData set IsVisit=1 from ReadingClinicalData INNER JOIN ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId = ClinicalDataTrialSet.Id where ClinicalDataTrialSet.ClinicalDataLevel in (0,1) and ReadingClinicalData.IsVisit=0 update VisitTask set IsClinicalDataSign=0 where IsNeedClinicalDataSign=0 and IsClinicalDataSign=1 - -- 判断 访视 和阅片期 是否有脏数据吧 + -- 判断 检查批次 和阅片期 是否有脏数据吧 --查询确认 select V.SubjectId, V.SourceSubjectVisitId, V.TrialReadingCriterionId,V.IsSelfAnalysis, v.DoctorUserId,V.ArmEnum,Count(*) as EffectCount,max(v.CreateTime),max(v.Id) as Id from VisitTask V join ReadingQuestionCriterionTrial on V.TrialReadingCriterionId = ReadingQuestionCriterionTrial.Id @@ -433,7 +433,7 @@ where ReadingQuestionTrial.ReadingQuestionSystemId is not null and ReadingTableQ --------------------维护访视任务 IsSelfAnalysis 为 null 的 ------------------------ +-------------------维护检查批次任务 IsSelfAnalysis 为 null 的 ------------------------ update VisitTask set RelatedVisitTaskIds= iif(STUFF((SELECT ',' + '"'+ CONVERT(nvarchar(80),Id) +'"' FROM VisitTask vt where @@ -560,7 +560,7 @@ where ReadingQuestionTrial.ReadingQuestionSystemId is not null and ReadingTableQ - -----------------------------------维护访视 IsSelfAnalysis 不为null 的 ------------------------ + -----------------------------------维护检查批次 IsSelfAnalysis 不为null 的 ------------------------ diff --git a/IRaCIS.Core.Domain/Trial/DataInspection.cs b/IRaCIS.Core.Domain/Trial/DataInspection.cs index cb7b8320..79316820 100644 --- a/IRaCIS.Core.Domain/Trial/DataInspection.cs +++ b/IRaCIS.Core.Domain/Trial/DataInspection.cs @@ -39,12 +39,12 @@ namespace IRaCIS.Core.Domain.Models public Guid? SiteId { get; set; } /// - /// 受试者 + /// 患者 /// public Guid? SubjectId { get; set; } /// - /// 访视 + /// 检查批次 /// public Guid? SubjectVisitId { get; set; } diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index e1aa4ee3..059d3203 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -148,18 +148,18 @@ namespace IRaCIS.Core.Domain.Models /// - /// ߱Ź + /// ߱Ź /// public bool IsNoticeSubjectCodeRule { get; set; } = false; /// - /// ߱Ÿʽ + /// ߱Ÿʽ /// public string SubjectCodeRule { get; set; } = "5λɣǰ2λΪıţ3λΪ˳ţEDC¼ıűһ"; /// - /// ߵڶ + /// ߵڶ /// public bool IsSubjectSecondCodeView { get; set; } = false; @@ -170,19 +170,19 @@ namespace IRaCIS.Core.Domain.Models public bool IsVerifyVisitImageDate { get; set; } = false; /// - ///ӻ׼ Ƿ л׼ʱ䣨״θҩʱ䣩 + ///λ׼ Ƿ л׼ʱ䣨״θҩʱ䣩 /// public bool IsHaveFirstGiveMedicineDate { get; set; } = false; /// - /// Ƿ + /// Ƿ /// public bool IsHaveSubjectAge { get; set; } = true; public bool IsSubjectSexView { get; set; } = true; /// - /// ƻĩη + /// ƻĩμ /// public string OutEnrollmentVisitName { get; set; } = "EOT"; @@ -238,7 +238,7 @@ namespace IRaCIS.Core.Domain.Models ///
public bool IsEnrollementQualificationConfirm { get; set; } = false; - //PD չǷʾ ÷ Ƿʾ PDչ (Ӷ״̬) + //PD չǷʾ ü Ƿʾ PDչ (Ӷ״̬) public bool IsPDProgressView { get; set; } = false; @@ -414,7 +414,7 @@ namespace IRaCIS.Core.Domain.Models //// //public TaskAllocateObj TaskAllocateObjEnum { get; set; } - ////Զ + ////Զ //public bool IsFollowVisitAutoAssign { get; set; } = true; ////ȫԶ @@ -424,7 +424,7 @@ namespace IRaCIS.Core.Domain.Models //public TaskAllocateDefaultState FollowJudgeTaskAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; - ////ԶĬ״̬ + ////ԶĬ״̬ //public TaskAllocateDefaultState FollowVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; ////ȫԶĬ״̬ @@ -438,7 +438,7 @@ namespace IRaCIS.Core.Domain.Models //public bool IsReadingTaskViewInOrder { get; set; } = true; ///// - ///// ƬǷʾϢ + ///// ƬǷʾϢ ///// //public bool IsReadingShowSubjectInfo { get; set; } = false; diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs index 3dc6ef9a..03f12b2d 100644 --- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs +++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs @@ -36,7 +36,7 @@ namespace IRaCIS.Core.Domain.Models /// - /// Site 下面有多个访视记录 + /// Site 下面有多个检查批次记录 /// [JsonIgnore] public List SubjectVisitList { get; set; } diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index 3fbd74f0..4a643453 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -7,7 +7,7 @@ using Newtonsoft.Json; namespace IRaCIS.Core.Domain.Models { /// - /// 受试者 + /// 患者 /// [Table("Subject")] public class Subject : Entity, IAuditAdd, IAuditUpdate, ISoftDelete @@ -66,7 +66,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } = Guid.Empty; public string MedicalNo { get; set; } = string.Empty; - public SubjectStatus Status { get; set; } = SubjectStatus.OnVisit;//1 访视中,2 出组 3 访视结束 + public SubjectStatus Status { get; set; } = SubjectStatus.OnVisit;//1 检查批次中,2 出组 3 检查批次结束 public string Reason { get; set; } = string.Empty; public bool IsEnrollment { get; set; } diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index 2b36d9fe..c4127411 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -9,7 +9,7 @@ namespace IRaCIS.Core.Domain.Models [Table("SubjectVisit")] public class SubjectVisit : Entity, IAuditUpdate, IAuditAdd, ISoftDelete { - //一个访视 对应有对应Site的 TrialSiteCode 所以 fluentApi中配置 TrialSite 连表用TrialId SiteId 双字段 + //一个检查批次 对应有对应Site的 TrialSiteCode 所以 fluentApi中配置 TrialSite 连表用TrialId SiteId 双字段 [JsonIgnore] public TrialSite TrialSite { get; set; } public Guid TrialId { get; set; } @@ -117,7 +117,7 @@ namespace IRaCIS.Core.Domain.Models public DateTime? CheckPassedTime { get; set; } /// - /// 上一访视 + /// 上一检查批次 /// public Guid? OutPlanPreviousVisitId { get; set; } @@ -199,10 +199,10 @@ namespace IRaCIS.Core.Domain.Models public Subject Subject { get; set; } - //// 一个访视可以被多个参与者 查看 + //// 一个检查批次可以被多个参与者 查看 //public List TrialUsers { get; set; } - ////一个访视 对应该Site下的多个CRC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名 + ////一个检查批次 对应该Site下的多个CRC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名 //public List TrialSiteUserList { get; set; } [JsonIgnore] diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs index 41f9c6de..94b3ef32 100644 --- a/IRaCIS.Core.Domain/_Config/_StaticData.cs +++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs @@ -19,7 +19,7 @@ public static class StaticData public static class Folder { - public static readonly string IRaCISDataFolder = "IRaCISData"; + public static readonly string IRaCISDataFolder = "EIImageViewerData"; public static readonly string TrialDataFolder = "TrialData"; diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index f8ebf7ca..17283add 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -1416,7 +1416,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - // 受试者 + // 患者 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Subject))) { var type = GetEntityAuditOpt(item); @@ -1444,7 +1444,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common }); } - // 访视计划 + // 检查批次计划 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(VisitStage))) { @@ -1476,7 +1476,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - // 访视 + // 检查批次 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SubjectVisit))) { @@ -1891,7 +1891,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common //保存影像质量 多条记录,只记录一条稽查 if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer))) { - // 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 + // 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存检查批次阅片结果 if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer" || _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality" || _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions" @@ -2196,7 +2196,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common { extraIdentification = "/PCWG3"; - //获取访视的评估结果 也要记录稽查 + //获取检查批次的评估结果 也要记录稽查 var visitAnswerList = await _dbContext.ReadingTaskQuestionAnswer.Where(t => t.VisitTaskId == group.Key &&t.ReadingQuestionTrial.GlobalReadingShowType != GlobalReadingShowType.NotShow).Select(u => new { TaskBlindName = u.VisitTask.TaskBlindName, @@ -2226,7 +2226,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common } else { - //获取访视的评估结果 也要记录稽查 + //获取检查批次的评估结果 也要记录稽查 var visitAnswerList = await _dbContext.ReadingTaskQuestionAnswer.Where(t => t.VisitTaskId == group.Key && questionIdList.Contains(t.ReadingQuestionTrialId)).Select(u => new { TaskBlindName = u.VisitTask.TaskBlindName, @@ -2293,10 +2293,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common var obj = new object() { }; - //访视任务-- 非Dicom 阅片 + //检查批次任务-- 非Dicom 阅片 if (_userInfo.RequestUrl == "ReadingImageTask/SubmitVisitTaskQuestions" && entity.ReadingTaskState != ReadingTaskState.HaveSigned && type == AuditOpt.Update) { - //提交访视任务的时候 会多次更新同一个记录 只记录最后一次 + //提交检查批次任务的时候 会多次更新同一个记录 只记录最后一次 return; } @@ -2735,7 +2735,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common - #region 访视相关 + #region 检查批次相关 // 对话消息区分用户类型 case nameof(CheckChallengeDialog): diff --git a/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs b/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs index 9aad9d97..4f589b95 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs @@ -132,17 +132,17 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto public string SiteName { get; set; } /// - /// 受试者名称 + /// 患者名称 /// public string SubjectCode { get; set; } /// - /// 访视名称 + /// 检查批次名称 /// public string SubjectVisitName { get; set; } /// - /// 盲态访视名 + /// 盲态检查批次名 /// public string BlindName { get; set; } = string.Empty; @@ -171,12 +171,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto public Guid? SiteId { get; set; } /// - /// 受试者 + /// 患者 /// public Guid? SubjectId { get; set; } /// - /// 访视 + /// 检查批次 /// public Guid? SubjectVisitId { get; set; } @@ -200,12 +200,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto /// - /// 受试者名称 + /// 患者名称 /// public string SubjectCode { get; set; } /// - /// 访视名称 + /// 检查批次名称 /// public string SubjectVisitName { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs index f43da123..d10f2f35 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs @@ -18,14 +18,14 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration //.HasForeignKey(s => new { s.TrialId, s.SiteId }) //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - // 受试者 在项目中只有一个site 获取 TrialSiteCode 用两个键 + // 患者 在项目中只有一个site 获取 TrialSiteCode 用两个键 builder .HasOne(s => s.TrialSite) .WithMany(c => c.SubjectList) .HasForeignKey(s => new { s.TrialId, s.SiteId }) .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - //不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置 + //不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如患者 最新的检查批次 在这里要显示配置 builder.HasOne(s => s.LatestSubjectVisit); builder.HasOne(s => s.FinalSubjectVisit); builder.HasMany(s => s.SubjectVisitList).WithOne(sv => sv.Subject); diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs index efe8d6a2..6348b99d 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs @@ -19,7 +19,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加受试者的时候,批量添加访视的时候,siteId trialId 会重复 所以不能这样搞 + // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加患者的时候,批量添加检查批次的时候,siteId trialId 会重复 所以不能这样搞 // modelBuilder.Entity() //.HasMany(s => s.TrialSiteUserList) //.WithOne(c => c.SubjectVisit) diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs index 9e812f19..4b4babdd 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs @@ -19,7 +19,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加受试者的时候,批量添加访视的时候,siteId trialId 会重复 所以不能这样搞 + // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加患者的时候,批量添加检查批次的时候,siteId trialId 会重复 所以不能这样搞 // modelBuilder.Entity() //.HasMany(s => s.TrialSiteUserList) //.WithOne(c => c.SubjectVisit) diff --git a/Install/Install.csproj b/Install/Install.csproj new file mode 100644 index 00000000..466c94be --- /dev/null +++ b/Install/Install.csproj @@ -0,0 +1,15 @@ + + + + Exe + net6.0 + enable + enable + open-box.ico + + + + + + + diff --git a/Install/Program.cs b/Install/Program.cs new file mode 100644 index 00000000..6402a707 --- /dev/null +++ b/Install/Program.cs @@ -0,0 +1,23 @@ +// See https://aka.ms/new-console-template for more information +using System.Diagnostics; + +string currentDir = Directory.GetCurrentDirectory(); +DirectoryInfo dirInfo = new DirectoryInfo(currentDir); + +foreach (var subdir in dirInfo.GetDirectories()) +{ + FileInfo[] files = subdir.GetFiles(); + + foreach (FileInfo file in files) + { + if (file.Name == "Start.exe") + { + string startPath = Path.Combine(subdir.FullName, "Start.exe"); + Process.Start(startPath); + return; + } + } +} + +Console.WriteLine("当前目录子文件中未找到Start.exe,程序即将退出..."); +Console.ReadLine(); \ No newline at end of file diff --git a/Install/open-box.ico b/Install/open-box.ico new file mode 100644 index 00000000..7abae7a6 Binary files /dev/null and b/Install/open-box.ico differ diff --git a/Setup/Setup.vdproj b/Setup/Setup.vdproj index 628e0b8e..3af2f835 100644 --- a/Setup/Setup.vdproj +++ b/Setup/Setup.vdproj @@ -13,12 +13,6 @@ "SccProvider" = "8:" "Hierarchy" { - "Entry" - { - "MsmKey" = "8:_8951F4492AF14911B26719BF10D679D5" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } } "Configurations" { @@ -53,6 +47,22 @@ "PrivateKeyFile" = "8:" "TimeStampServer" = "8:" "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:FALSE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" + { + "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 和 x64)" + "ProductCode" = "8:.NETFramework,Version=v4.7.2" + } + } + } } } "Deployable" @@ -70,6 +80,24 @@ { "LaunchCondition" { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_82AF8F8B74E245D4ABFA965071D1D4BD" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_9BBAA0CBBBA347BBBC95686B1095EBAE" + { + "Name" = "8:.NET Core" + "Message" = "8:[VSDNETCOREMSG]" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:https://dotnet.microsoft.com/download/dotnet-core/[NetCoreVerMajorDotMinor]" + "IsNETCore" = "11:TRUE" + "Architecture" = "2:0" + "Runtime" = "2:0" + } } } "File" @@ -131,7 +159,7 @@ "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Setup" "ProductCode" = "8:{64317A3E-23E9-40DF-AD1E-1B6C40D76413}" - "PackageCode" = "8:{12F65B82-BA56-4E4E-9ACA-7CC999C93D5F}" + "PackageCode" = "8:{B24EEDEC-B603-4438-92D9-A278FEB65C7A}" "UpgradeCode" = "8:{132CFAC4-0C5E-446B-A2CE-52656960C587}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" @@ -251,20 +279,6 @@ } "Shortcut" { - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_4581C39A4B9746EA8119BDFC3F9DE52F" - { - "Name" = "8:IRaCIS" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_8951F4492AF14911B26719BF10D679D5" - "Folder" = "8:_B44A76B96ACA4E0AAC6741E90A0CBAC9" - "WorkingFolder" = "8:_6E9287D3322D4BEBAEB7649868E0D282" - "Icon" = "8:" - "Feature" = "8:" - } } "UserInterface" { @@ -664,9 +678,9 @@ } "ProjectOutput" { - "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8951F4492AF14911B26719BF10D679D5" + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_29F0BA7E33EF4A3280289EB0189C3BA5" { - "SourcePath" = "8:..\\Start\\obj\\Release\\net6.0-windows\\apphost.exe" + "SourcePath" = "8:" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_6E9287D3322D4BEBAEB7649868E0D282" @@ -684,9 +698,37 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" "ProjectOutputGroupRegister" = "3:1" - "OutputConfiguration" = "8:" + "OutputConfiguration" = "8:Release|Any CPU" "OutputGroupCanonicalName" = "8:PublishItems" - "OutputProjectGuid" = "8:{D96F4B52-359C-43C9-8110-BAD1437F9280}" + "OutputProjectGuid" = "8:{F15CE209-6039-46A6-AE7F-E81ADA795F28}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_690ED380518A4FA08422BC680CE5986E" + { + "SourcePath" = "8:" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6E9287D3322D4BEBAEB7649868E0D282" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:Release|Any CPU" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{F15CE209-6039-46A6-AE7F-E81ADA795F28}" "ShowKeyOutput" = "11:TRUE" "ExcludeFilters" { diff --git a/Start/Main.Designer.cs b/Start/Main.Designer.cs index 83a39d3b..590760b0 100644 --- a/Start/Main.Designer.cs +++ b/Start/Main.Designer.cs @@ -28,6 +28,7 @@ ///
private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); groupBox1 = new GroupBox(); connectButton = new Button(); passwordTextBox = new TextBox(); @@ -77,16 +78,16 @@ groupBox1.Controls.Add(label3); groupBox1.Controls.Add(label2); groupBox1.Controls.Add(label1); - groupBox1.Location = new Point(24, 25); + groupBox1.Location = new Point(11, 12); groupBox1.Name = "groupBox1"; - groupBox1.Size = new Size(570, 230); + groupBox1.Size = new Size(547, 205); groupBox1.TabIndex = 0; groupBox1.TabStop = false; groupBox1.Text = "第一步:验证数据库"; // // connectButton // - connectButton.Location = new Point(195, 168); + connectButton.Location = new Point(195, 150); connectButton.Name = "connectButton"; connectButton.Size = new Size(128, 40); connectButton.TabIndex = 6; @@ -96,7 +97,7 @@ // // passwordTextBox // - passwordTextBox.Location = new Point(154, 129); + passwordTextBox.Location = new Point(154, 113); passwordTextBox.Name = "passwordTextBox"; passwordTextBox.PasswordChar = '*'; passwordTextBox.Size = new Size(271, 23); @@ -105,7 +106,7 @@ // // usernameTextBox // - usernameTextBox.Location = new Point(156, 82); + usernameTextBox.Location = new Point(156, 73); usernameTextBox.Name = "usernameTextBox"; usernameTextBox.Size = new Size(271, 23); usernameTextBox.TabIndex = 4; @@ -113,7 +114,7 @@ // // serverTextBox // - serverTextBox.Location = new Point(156, 37); + serverTextBox.Location = new Point(156, 33); serverTextBox.Name = "serverTextBox"; serverTextBox.Size = new Size(271, 23); serverTextBox.TabIndex = 3; @@ -122,7 +123,7 @@ // label3 // label3.AutoSize = true; - label3.Location = new Point(107, 131); + label3.Location = new Point(107, 113); label3.Name = "label3"; label3.Size = new Size(32, 17); label3.TabIndex = 2; @@ -131,7 +132,7 @@ // label2 // label2.AutoSize = true; - label2.Location = new Point(101, 83); + label2.Location = new Point(101, 73); label2.Name = "label2"; label2.Size = new Size(44, 17); label2.TabIndex = 1; @@ -140,7 +141,7 @@ // label1 // label1.AutoSize = true; - label1.Location = new Point(95, 38); + label1.Location = new Point(95, 33); label1.Name = "label1"; label1.Size = new Size(56, 17); label1.TabIndex = 0; @@ -162,9 +163,9 @@ groupBox2.Controls.Add(nginxPortTBox); groupBox2.Controls.Add(label4); groupBox2.Controls.Add(label5); - groupBox2.Location = new Point(24, 280); + groupBox2.Location = new Point(12, 223); groupBox2.Name = "groupBox2"; - groupBox2.Size = new Size(570, 418); + groupBox2.Size = new Size(546, 379); groupBox2.TabIndex = 1; groupBox2.TabStop = false; groupBox2.Text = "第二步: 部署参数配置"; @@ -172,7 +173,7 @@ // confimDeployBtn // confimDeployBtn.Enabled = false; - confimDeployBtn.Location = new Point(195, 353); + confimDeployBtn.Location = new Point(195, 319); confimDeployBtn.Name = "confimDeployBtn"; confimDeployBtn.Size = new Size(128, 40); confimDeployBtn.TabIndex = 19; @@ -182,7 +183,7 @@ // // serviceDisplayNameTBox // - serviceDisplayNameTBox.Location = new Point(152, 303); + serviceDisplayNameTBox.Location = new Point(152, 274); serviceDisplayNameTBox.Name = "serviceDisplayNameTBox"; serviceDisplayNameTBox.Size = new Size(259, 23); serviceDisplayNameTBox.TabIndex = 16; @@ -190,7 +191,7 @@ // // serviceNameTBox // - serviceNameTBox.Location = new Point(152, 248); + serviceNameTBox.Location = new Point(152, 228); serviceNameTBox.Name = "serviceNameTBox"; serviceNameTBox.Size = new Size(259, 23); serviceNameTBox.TabIndex = 15; @@ -199,7 +200,7 @@ // label11 // label11.AutoSize = true; - label11.Location = new Point(11, 304); + label11.Location = new Point(11, 277); label11.Name = "label11"; label11.Size = new Size(128, 17); label11.TabIndex = 14; @@ -208,7 +209,7 @@ // label10 // label10.AutoSize = true; - label10.Location = new Point(35, 250); + label10.Location = new Point(35, 231); label10.Name = "label10"; label10.Size = new Size(104, 17); label10.TabIndex = 13; @@ -219,7 +220,7 @@ selectPathBtn.Enabled = false; selectPathBtn.Location = new Point(429, 43); selectPathBtn.Name = "selectPathBtn"; - selectPathBtn.Size = new Size(118, 27); + selectPathBtn.Size = new Size(95, 27); selectPathBtn.TabIndex = 12; selectPathBtn.Text = "选择"; selectPathBtn.UseVisualStyleBackColor = true; @@ -228,7 +229,7 @@ // folderPathTbox // folderPathTbox.Enabled = false; - folderPathTbox.Location = new Point(152, 43); + folderPathTbox.Location = new Point(152, 44); folderPathTbox.Name = "folderPathTbox"; folderPathTbox.Size = new Size(259, 23); folderPathTbox.TabIndex = 11; @@ -236,7 +237,7 @@ // label9 // label9.AutoSize = true; - label9.Location = new Point(83, 43); + label9.Location = new Point(83, 48); label9.Name = "label9"; label9.Size = new Size(56, 17); label9.TabIndex = 10; @@ -244,7 +245,7 @@ // // dbNameTBox // - dbNameTBox.Location = new Point(152, 191); + dbNameTBox.Location = new Point(152, 182); dbNameTBox.Name = "dbNameTBox"; dbNameTBox.Size = new Size(259, 23); dbNameTBox.TabIndex = 9; @@ -253,7 +254,7 @@ // label8 // label8.AutoSize = true; - label8.Location = new Point(47, 197); + label8.Location = new Point(47, 185); label8.Name = "label8"; label8.Size = new Size(92, 17); label8.TabIndex = 8; @@ -261,7 +262,7 @@ // // apiPortTBox // - apiPortTBox.Location = new Point(152, 146); + apiPortTBox.Location = new Point(152, 136); apiPortTBox.Name = "apiPortTBox"; apiPortTBox.Size = new Size(259, 23); apiPortTBox.TabIndex = 5; @@ -269,7 +270,7 @@ // // nginxPortTBox // - nginxPortTBox.Location = new Point(152, 98); + nginxPortTBox.Location = new Point(152, 90); nginxPortTBox.Name = "nginxPortTBox"; nginxPortTBox.Size = new Size(259, 23); nginxPortTBox.TabIndex = 4; @@ -278,7 +279,7 @@ // label4 // label4.AutoSize = true; - label4.Location = new Point(11, 153); + label4.Location = new Point(11, 140); label4.Name = "label4"; label4.Size = new Size(128, 17); label4.TabIndex = 3; @@ -287,7 +288,7 @@ // label5 // label5.AutoSize = true; - label5.Location = new Point(35, 100); + label5.Location = new Point(35, 93); label5.Name = "label5"; label5.Size = new Size(104, 17); label5.TabIndex = 2; @@ -302,18 +303,18 @@ groupBox3.Controls.Add(machineCodeLB); groupBox3.Controls.Add(label6); groupBox3.Controls.Add(label7); - groupBox3.Location = new Point(24, 713); + groupBox3.Location = new Point(14, 615); groupBox3.Name = "groupBox3"; - groupBox3.Size = new Size(570, 221); + groupBox3.Size = new Size(544, 221); groupBox3.TabIndex = 2; groupBox3.TabStop = false; groupBox3.Text = "第三步:激活与部署"; // // btnCopy // - btnCopy.Location = new Point(429, 51); + btnCopy.Location = new Point(429, 39); btnCopy.Name = "btnCopy"; - btnCopy.Size = new Size(118, 27); + btnCopy.Size = new Size(93, 27); btnCopy.TabIndex = 13; btnCopy.Text = "复制"; btnCopy.UseVisualStyleBackColor = true; @@ -322,7 +323,7 @@ // activeBtn // activeBtn.Enabled = false; - activeBtn.Location = new Point(195, 146); + activeBtn.Location = new Point(195, 139); activeBtn.Name = "activeBtn"; activeBtn.Size = new Size(128, 40); activeBtn.TabIndex = 9; @@ -332,14 +333,14 @@ // // KeySecreteTextBox // - KeySecreteTextBox.Location = new Point(152, 101); + KeySecreteTextBox.Location = new Point(152, 92); KeySecreteTextBox.Name = "KeySecreteTextBox"; KeySecreteTextBox.Size = new Size(259, 23); KeySecreteTextBox.TabIndex = 8; // // machineTextBox // - machineTextBox.Location = new Point(152, 51); + machineTextBox.Location = new Point(152, 42); machineTextBox.Name = "machineTextBox"; machineTextBox.ReadOnly = true; machineTextBox.Size = new Size(259, 23); @@ -348,7 +349,7 @@ // machineCodeLB // machineCodeLB.AutoSize = true; - machineCodeLB.Location = new Point(163, 51); + machineCodeLB.Location = new Point(163, 44); machineCodeLB.Name = "machineCodeLB"; machineCodeLB.Size = new Size(0, 17); machineCodeLB.TabIndex = 6; @@ -356,7 +357,7 @@ // label6 // label6.AutoSize = true; - label6.Location = new Point(95, 101); + label6.Location = new Point(95, 94); label6.Name = "label6"; label6.Size = new Size(44, 17); label6.TabIndex = 5; @@ -365,7 +366,7 @@ // label7 // label7.AutoSize = true; - label7.Location = new Point(95, 51); + label7.Location = new Point(95, 44); label7.Name = "label7"; label7.Size = new Size(44, 17); label7.TabIndex = 4; @@ -374,9 +375,9 @@ // groupBox4 // groupBox4.Controls.Add(logTBox); - groupBox4.Location = new Point(618, 25); + groupBox4.Location = new Point(570, 11); groupBox4.Name = "groupBox4"; - groupBox4.Size = new Size(391, 890); + groupBox4.Size = new Size(391, 825); groupBox4.TabIndex = 4; groupBox4.TabStop = false; groupBox4.Text = "部署日志"; @@ -385,7 +386,7 @@ // logTBox.Location = new Point(6, 22); logTBox.Name = "logTBox"; - logTBox.Size = new Size(359, 862); + logTBox.Size = new Size(359, 797); logTBox.TabIndex = 0; logTBox.Text = ""; // @@ -393,13 +394,14 @@ // AutoScaleDimensions = new SizeF(7F, 17F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1021, 946); + ClientSize = new Size(977, 847); Controls.Add(groupBox4); Controls.Add(groupBox3); Controls.Add(groupBox2); Controls.Add(groupBox1); + Icon = (Icon)resources.GetObject("$this.Icon"); Name = "Main"; - Text = "EI Image Viewer"; + Text = "EI Image Viewer V1"; Load += Main_Load; groupBox1.ResumeLayout(false); groupBox1.PerformLayout(); diff --git a/Start/Main.cs b/Start/Main.cs index 9af147b2..2483800f 100644 --- a/Start/Main.cs +++ b/Start/Main.cs @@ -27,6 +27,8 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolBar; using System.Data.SqlTypes; using Serilog; using System.Xml.Linq; +using System.IO; +using Microsoft.Win32; namespace Start { @@ -45,6 +47,8 @@ namespace Start { InitializeComponent(); + this.MaximizeBox = false; + var physicalAddressList = NetworkInterface.GetAllNetworkInterfaces().Select(t => t.GetPhysicalAddress().ToString()); this.machineTextBox.Text = physicalAddressList.FirstOrDefault()?.ToString(); @@ -61,38 +65,40 @@ namespace Start private void connectButton_Click(object sender, EventArgs e) { string connectionString = $"Server={serverTextBox.Text};User Id={usernameTextBox.Text};Password={passwordTextBox.Text};"; - SqlConnection connection = new SqlConnection(connectionString); + - try + using (SqlConnection connection = new SqlConnection(connectionString)) { - connection.Open(); + try + { + connection.Open(); - WinformLog("数据库连接测试成功!", Color.Green); + WinformLog("数据库连接测试成功!", Color.Green); - isCanDBConfig = false; - serverTextBox.Enabled = isCanDBConfig; - usernameTextBox.Enabled = isCanDBConfig; - passwordTextBox.Enabled = isCanDBConfig; - connectButton.Enabled = false; + isCanDBConfig = false; + serverTextBox.Enabled = isCanDBConfig; + usernameTextBox.Enabled = isCanDBConfig; + passwordTextBox.Enabled = isCanDBConfig; + connectButton.Enabled = false; - selectPathBtn.Enabled = true; - //portBtn.Enabled = true; - //testDBBtn.Enabled = true; - //testServicebtn.Enabled = true; + selectPathBtn.Enabled = true; + //portBtn.Enabled = true; + //testDBBtn.Enabled = true; + //testServicebtn.Enabled = true; + } + catch (Exception ex) + { + + WinformLog($"数据库连接测试失败:{ex.Message}", Color.Red); + + } } - catch (Exception ex) - { - WinformLog($"数据库连接测试失败:{ex.Message}", Color.Red); - } - finally - { - connection.Close(); - } + } private void portBtn_Click(object sender, EventArgs e) @@ -266,6 +272,15 @@ namespace Start await process.StandardInput.WriteLineAsync(cmd); await process.StandardInput.FlushAsync(); + //while (!process.StandardOutput.EndOfStream) + //{ + // var output = await process.StandardOutput.ReadLineAsync(); + // if (string.IsNullOrWhiteSpace(output)) + // { + // break; + // } + //} + } private async void activeBtn_Click(object sender, EventArgs e) @@ -286,19 +301,22 @@ namespace Start var deployFoder = this.folderPathTbox.Text; - string nginxExtractName = "nginx-1.20.1"; - string apiExtractName = "APIPublish"; + string nginxExtractName = "EIImageViewerWeb"; + string apiExtractName = "EIImageViewerService"; + + string dataExtraName = "EIImageViewerData"; string nginxStartPath = Path.Combine(deployFoder, @$"{nginxExtractName}\"); var nginxConfigPath = Path.Combine(nginxStartPath, @$"conf\nginx.conf"); - var apiBinPath = Path.Combine(deployFoder, "APIPublish/IRacIS.Core.API.exe"); - var apiJsonConfigPath = Path.Combine(deployFoder, "APIPublish/appsettings.CertificateApply.json"); + var apiBinPath = Path.Combine(deployFoder, "EIImageViewerService/EI_Image_Viewer.exe"); + var apiJsonConfigPath = Path.Combine(deployFoder, "EIImageViewerService/appsettings.CertificateApply.json"); - string nginxRarFilePath = Path.Combine(AppContext.BaseDirectory, $@"deploy\nginx-1.20.1.rar"); // 要解压缩的RAR文件路径 - string apiRarFilePath = Path.Combine(AppContext.BaseDirectory, "deploy/net6.0.rar"); // 要解压缩的RAR文件路径 + string nginxRarFilePath = Path.Combine(AppContext.BaseDirectory, $@"Resource\EIImageViewerWeb.rar"); // 要解压缩的RAR文件路径 + string apiRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIImageViewerService.rar"); // 要解压缩的RAR文件路径 + string dataRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIImageViewerData.rar"); @@ -310,6 +328,7 @@ namespace Start startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; + // 创建新进程并启动 var process = new Process(); process.StartInfo = startInfo; @@ -319,13 +338,13 @@ namespace Start - #region 解压nginx 和前端部署的文件 - - WinformLog($"开始解压 nginx 及前端部署 RAR文件", Color.Green); - - await Task.Run(() => { + + #region 解压nginx 和前端部署的文件 + + WinformLog($"开始解压 nginx 及前端部署压缩文件...", Color.Green); + string extractPath = Path.Combine(deployFoder, nginxExtractName); if (!Directory.Exists(extractPath)) { @@ -349,25 +368,55 @@ namespace Start } - WinformLog($"nginx 及前端部署 RAR文件已成功解压缩到: + {extractPath}", Color.Green); + WinformLog($"nginx 及前端部署压缩文件已成功解压缩到: {extractPath}", Color.Green); + #endregion }); + await Task.Run( () => + { + #region 解压后端部署的文件 - #endregion + WinformLog($"开始解压后端部署压缩文件...", Color.Green); + + string apiExtractPath = Path.Combine(deployFoder, apiExtractName); + + if (!Directory.Exists(apiExtractPath)) + { + Directory.CreateDirectory(apiExtractPath); + } + using (var archive = RarArchive.Open(apiRarFilePath)) + { + foreach (var entry in archive.Entries) + { + if (!entry.IsDirectory) + { + entry.WriteToDirectory(apiExtractPath, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true }); + } + else + { + string directoryPath = Path.Combine(apiExtractPath, entry.Key); + Directory.CreateDirectory(directoryPath); + } + } + } - #region 解压后端部署的文件 - WinformLog($"开始解压 后端部署 RAR文件", Color.Green); + WinformLog($"后端部署压缩文件已成功解压缩到: {apiExtractPath}", Color.Green); + + #endregion + }); await Task.Run(() => { - string extractPath = Path.Combine(deployFoder, apiExtractName); + #region 解压模板文件 + WinformLog($"开始解压部署依赖模板压缩文件...", Color.Green); + string extractPath = Path.Combine(deployFoder, dataExtraName); if (!Directory.Exists(extractPath)) { @@ -375,7 +424,7 @@ namespace Start } - using (var archive = RarArchive.Open(apiRarFilePath)) + using (var archive = RarArchive.Open(dataRarFilePath)) { foreach (var entry in archive.Entries) { @@ -387,195 +436,289 @@ namespace Start } - WinformLog($"后端部署 RAR文件已成功解压缩到: + {extractPath}", Color.Green); + WinformLog($"依赖模板压缩文件已成功解压缩到: {extractPath}", Color.Green); + #endregion + #region 文档等资源文件 + + var otherFileFolder = Path.Combine(AppContext.BaseDirectory, $@"Resource"); + + if (Directory.Exists(otherFileFolder)) + { + // 获取源目录下所有文件 + string[] files = Directory.GetFiles(otherFileFolder); + + foreach (string file in files) + { + // 筛选掉文件夹 + if (!File.GetAttributes(file).HasFlag(FileAttributes.Directory)) + { + string extension = Path.GetExtension(file); + if (extension != ".zip" && extension != ".rar" && extension != ".7z" && extension != ".tar" && extension != ".gz") + { + + // 获取文件名 + string fileName = Path.GetFileName(file); + + // 拷贝文件到目标目录 + File.Copy(file, Path.Combine(deployFoder, fileName), true); + } + + + } + } + } + WinformLog($"文档资源释放成功", Color.Green); + + #endregion + }); + + + + await Task.Run(() => + { + + + #region 修改 nginx 配置文件 启动nginx + + if (!File.Exists(nginxConfigPath)) + { + WinformLog("预设路径不存在nginx", Color.Red); + } + + WinformLog("准备写入nginx配置...", Color.Green); + + var nginxConfig = File.ReadAllText(nginxConfigPath); + + nginxConfig = nginxConfig.Replace("9520", vuePort.ToString()); + nginxConfig = nginxConfig.Replace("7100", apiPort.ToString()); + + File.WriteAllText(nginxConfigPath, nginxConfig); + + WinformLog("nginx部署配置写入完成", Color.Green); + + + + + + // 获取nginx.exe所在的目录 + + // 创建ProcessStartInfo对象,指定要启动的可执行文件及其参数 + ProcessStartInfo psi = new ProcessStartInfo(nginxStartPath + "nginx.exe"); + // 指定工作目录,即进入nginx.exe所在的目录 + psi.WorkingDirectory = nginxStartPath; + + WinformLog(" 开始启动 nginx 服务...", Color.Green); + // 启动可执行文件 + Process.Start(psi); + + + + + if (Process.GetProcesses().Any(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxStartPath))) + { + WinformLog(" nginx 服务启动成功", Color.Green); + } + else + { + WinformLog(" nginx 服务启动失败", Color.Red); + return; + } + #endregion + + #region 激活 + + try + { + string directoryPath = @"C:\ProgramData\.xingcang"; + if (!Directory.Exists(directoryPath)) + { + Directory.CreateDirectory(directoryPath); + } + + var configObj = new + { + key = this.machineTextBox.Text, + value = this.KeySecreteTextBox.Text.Trim(), + user = usernameTextBox.Text, + server = serverTextBox.Text, + password = passwordTextBox.Text, + dbName = dbNameTBox.Text, + deployFolder = deployFoder, + nginxPath = Path.Combine(nginxStartPath, "nginx.exe"), + apiPath = apiBinPath, + serviceName = serviceName, + }; + + File.WriteAllText(Path.Combine(directoryPath, "config.json"), JsonConvert.SerializeObject(configObj)); + + WinformLog("写入激活秘钥完成", Color.Green); + } + catch (Exception ex) + { + WinformLog("写入激活秘钥失败,请用管理员方式启动该程序,保证程序可以", Color.Red); + } + + #endregion }); - #endregion - - #region 修改 nginx 配置文件 启动nginx + await Task.Run(async () =>{ + #region 创建服务 - if (!File.Exists(nginxConfigPath)) - { - WinformLog("预设路径不存在nginx", Color.Red); - } + WinformLog($"开始创建服务{serviceName}...", Color.Green); - var nginxConfig = File.ReadAllText(nginxConfigPath); + var createStr = $@"sc create {serviceName} binPath= ""{apiBinPath} --urls=""http://127.0.0.1:{apiPort}"" --env CertificateApply"" DisplayName= ""{serviceDisplayName}"" start= auto"; - nginxConfig = nginxConfig.Replace("9520", vuePort.ToString()); - nginxConfig = nginxConfig.Replace("7100", apiPort.ToString()); + // 执行 sc create 命令来创建服务 + await ProcessStandardInputAsync(process, createStr); + WinformLog($"服务{serviceName}创建执行结束", Color.Green); - - File.WriteAllText(nginxConfigPath, nginxConfig); - - - - // 获取nginx.exe所在的目录 - - // 创建ProcessStartInfo对象,指定要启动的可执行文件及其参数 - ProcessStartInfo psi = new ProcessStartInfo(nginxStartPath + "nginx.exe"); - // 指定工作目录,即进入nginx.exe所在的目录 - psi.WorkingDirectory = nginxStartPath; - - WinformLog(" 开始启动 nginx 服务...", Color.Green); - // 启动可执行文件 - Process.Start(psi); + #endregion - if (Process.GetProcesses().Any(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxStartPath))) - { - WinformLog(" nginx 服务启动成功", Color.Green); - } - else - { - WinformLog(" nginx 服务启动失败", Color.Red); - return; - } - #endregion + #region 初始化数据库脚本 - var configObj = new - { - key = this.machineTextBox.Text, - value = this.KeySecreteTextBox.Text.Trim(), - user = usernameTextBox.Text, - server = serverTextBox.Text, - password = passwordTextBox.Text, - dbName = dbNameTBox.Text, - }; - - File.WriteAllText($@"C:\ProgramData\.xingcang\config.json", JsonConvert.SerializeObject(configObj)); - - WinformLog("写入激活秘钥完成", Color.Green); + WinformLog($"执行初始化数据库脚本...", Color.Green); + //执行数据库脚本 - #region 部署网站配置文件写入 + await ProcessStandardInputAsync(process, $@" SQLCMD -v dbName = ""{dbNameTBox.Text}"" -i ""{AppContext.BaseDirectory}Resource\Data\dbo.sql"" "); - WinformLog("开始写入部署网站服务配置文件...", Color.Green); - - var appsettingsJson = File.ReadAllText(apiJsonConfigPath); - - // 解析 JSON 字符串 - var jObject = JObject.Parse(appsettingsJson); - - // 获取 UpdateConfig 属性所在的节点 - var updateConfigNode = jObject["ConnectionStrings"]; + await ProcessStandardInputAsync(process, $@" SQLCMD -v dbName = ""{dbNameTBox.Text}"" -i ""{AppContext.BaseDirectory}Resource\Data\data.sql"" "); - var connectionString = $"Server={serverTextBox.Text};Database={dbNameTBox.Text};User ID={usernameTextBox.Text};Password={passwordTextBox.Text};TrustServerCertificate=true"; + WinformLog($"初始化数据库脚本执行结束", Color.Green); - updateConfigNode["RemoteNew"] = connectionString; - - try - { - using (var connection = new SqlConnection(connectionString)) - { - connection.Open(); - - File.WriteAllText(apiJsonConfigPath, jObject.ToString()); - - } - } - catch (SqlException) - { - Console.WriteLine("连接字符串错误"); - - WinformLog($"连接字符串错误", Color.Red); - - return; - } - - WinformLog("部署网站服务配置文件写入并测试OK", Color.Green); - - #endregion + #endregion - var createStr = $@"sc create {serviceName} binPath= ""{apiBinPath} --urls=""http://127.0.0.1:{apiPort}"" --env CertificateApply"" DisplayName= ""{serviceDisplayName}"" start= auto"; + #region 部署网站配置文件写入 + + WinformLog("开始写入部署网站服务配置文件...", Color.Green); + + var appsettingsJson = File.ReadAllText(apiJsonConfigPath); + + // 解析 JSON 字符串 + var jObject = JObject.Parse(appsettingsJson); + + // 获取 UpdateConfig 属性所在的节点 + var updateConfigNode = jObject["ConnectionStrings"]; - #region 创建服务 + var connectionString = $"Server={serverTextBox.Text};Database={dbNameTBox.Text};User ID={usernameTextBox.Text};Password={passwordTextBox.Text};TrustServerCertificate=true"; - - - - // 删除已存在的服务 - - - //await ProcessStandardInputAsync(process, $"sc delete {serviceName}"); - - //Log($"删除服务{serviceName}...", Color.Green); - - // 执行 sc create 命令来创建服务 - await ProcessStandardInputAsync(process, createStr); - WinformLog($"创建服务{serviceName}...", Color.Green); - - - WinformLog($"执行初始化数据库脚本...", Color.Green); - //执行数据库脚本 - - //await ProcessStandardInputAsync(process, Path.Combine(AppContext.BaseDirectory, "deploy/sql/bin.bat")); - - await ProcessStandardInputAsync(process, $@" SQLCMD -v dbName = ""{dbNameTBox.Text}"" -i {AppContext.BaseDirectory}deploy\sql\dbo.sql "); - - await ProcessStandardInputAsync(process, $@" SQLCMD -v dbName = ""{dbNameTBox.Text}"" -i {AppContext.BaseDirectory}deploy\sql\data.sql "); - - - WinformLog($"初始化数据库脚本执行结束", Color.Green); - - // 执行 sc start 启动服务 - - WinformLog($"启动部署的后端服务...", Color.Green); - await ProcessStandardInputAsync(process, $"sc start {serviceName}"); - - // 关闭进程流并等待进程退出 - process.StandardInput.Close(); - process.WaitForExit(); - - ServiceController sc = new ServiceController(serviceName); - if (sc.Status == ServiceControllerStatus.Running) - { - WinformLog($"后端服务启动成功", Color.Green); - - - WinformLog($"部署工作已完成", Color.Green); + updateConfigNode["RemoteNew"] = connectionString; try { - WinformLog($"现在打开浏览器...", Color.Green); - // Use ProcessStartInfo class - var start = new ProcessStartInfo($"http://127.0.0.1:{vuePort}") + using (var connection = new SqlConnection(connectionString)) { - UseShellExecute = true, - Verb = "open" - }; - Process.Start(start); + connection.Open(); + + File.WriteAllText(apiJsonConfigPath, jObject.ToString()); + + } } - catch (Exception ex) + catch (SqlException) { - // Handle exception - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + + WinformLog($"连接字符串错误", Color.Red); + + return; } - } - else + + + WinformLog("部署网站服务配置文件写入并测试OK", Color.Green); + + #endregion + + }); + + + + await Task.Run(async () => { - WinformLog($"后端服务启动失败", Color.Red); - } + #region 启动后端服务 + + WinformLog($"启动部署的后端服务...", Color.Green); + + await ProcessStandardInputAsync(process, $"sc start {serviceName}"); + + // 关闭进程流并等待进程退出 + process.StandardInput.Close(); + process.WaitForExit(); + + + + ServiceController sc = new ServiceController(serviceName); + + if (sc.Status != ServiceControllerStatus.Running) + { + sc.Refresh(); + + await Task.Delay(3000); + + sc.Refresh(); + + await Task.Delay(2000); + } + + + if (sc.Status == ServiceControllerStatus.Running) + { + WinformLog($"后端服务启动成功", Color.Green); + + + WinformLog($"部署工作已完成", Color.Green); + + try + { + WinformLog($"现在准备打开浏览器...", Color.Green); + // Use ProcessStartInfo class + var start = new ProcessStartInfo($"http://127.0.0.1:{vuePort}") + { + UseShellExecute = true, + Verb = "open" + }; + Process.Start(start); + + } + catch (Exception ex) + { + // Handle exception + MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + else + { + WinformLog($"后端服务启动失败,可以手动启动{serviceDisplayName}尝试", Color.Red); + } + + #endregion + }); + + + + + + + - #endregion } private async void selectPathBtn_Click(object sender, EventArgs e) @@ -589,41 +732,7 @@ namespace Start WinformLog($"部署路径选择成功", Color.Green); - #region 测试 停止Nginx - var deployFoder = this.folderPathTbox.Text; - - string nginxExtractName = "nginx-1.20.1"; - - string nginxStartPath = Path.Combine(deployFoder, @$"{nginxExtractName}\"); - - - #region 创建进程执行命令 - - Process process = new Process(); - process.StartInfo.FileName = "cmd.exe"; - process.StartInfo.RedirectStandardInput = true; - process.StartInfo.UseShellExecute = false; - process.StartInfo.CreateNoWindow = true; // 不创建新窗口 - process.Start(); - - var proList = Process.GetProcesses().Where(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxStartPath)); - - foreach (var item in proList) - { - item.Kill(); - } - - - await ProcessStandardInputAsync(process, $"sc stop {serviceNameTBox.Text}"); - await ProcessStandardInputAsync(process, $"sc delete {serviceNameTBox.Text}"); - - process.StandardInput.Close(); - process.WaitForExit(); - - #endregion - - #endregion } } @@ -639,6 +748,23 @@ namespace Start Serilog.Log.Logger = new LoggerConfiguration() .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); + + + + + // Check if any version of SQL Server is installed + RegistryKey sqlServerKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server"); + + if (sqlServerKey != null) + { + WinformLog("当前系统SQL Server 已安装", Color.Green); + } + else + { + WinformLog("SQL Server 未安装,请安装后再运行该部署程序", Color.Red); + } + + } } } diff --git a/Start/Main.resx b/Start/Main.resx index 73c89a55..1ceed754 100644 --- a/Start/Main.resx +++ b/Start/Main.resx @@ -60,4 +60,141 @@ 17, 17 + + + + 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 + QHW69f8D447Kbv4U1JoAAAAASUVORK5CYII= + + \ No newline at end of file diff --git a/Start/deploy/sql/data.sql b/Start/Resource/Data/data.sql similarity index 99% rename from Start/deploy/sql/data.sql rename to Start/Resource/Data/data.sql index 6787af55..bc46fd2f 100644 Binary files a/Start/deploy/sql/data.sql and b/Start/Resource/Data/data.sql differ diff --git a/Start/Resource/Data/dbo.sql b/Start/Resource/Data/dbo.sql new file mode 100644 index 00000000..70a2adf3 Binary files /dev/null and b/Start/Resource/Data/dbo.sql differ diff --git a/Start/Resource/EIImageViewerData.rar b/Start/Resource/EIImageViewerData.rar new file mode 100644 index 00000000..f1fd20f1 Binary files /dev/null and b/Start/Resource/EIImageViewerData.rar differ diff --git a/Start/deploy/net6.0.rar b/Start/Resource/EIImageViewerService.rar similarity index 87% rename from Start/deploy/net6.0.rar rename to Start/Resource/EIImageViewerService.rar index bef99eeb..de1ae2d5 100644 Binary files a/Start/deploy/net6.0.rar and b/Start/Resource/EIImageViewerService.rar differ diff --git a/Start/deploy/nginx-1.20.1.rar b/Start/Resource/EIImageViewerWeb.rar similarity index 100% rename from Start/deploy/nginx-1.20.1.rar rename to Start/Resource/EIImageViewerWeb.rar diff --git a/Start/Start.csproj b/Start/Start.csproj index 6244965b..bd77e02c 100644 --- a/Start/Start.csproj +++ b/Start/Start.csproj @@ -6,29 +6,35 @@ enable true enable - AnyCPU;x86 + AnyCPU; + favicon.ico - - + + + - - - + + + - + + Always - + Always - + Always - + + Always + + Always diff --git a/Start/deploy/sql/dbo.sql b/Start/deploy/sql/dbo.sql deleted file mode 100644 index 90e26a6b..00000000 Binary files a/Start/deploy/sql/dbo.sql and /dev/null differ diff --git a/Start/favicon.ico b/Start/favicon.ico new file mode 100644 index 00000000..70e9d37f Binary files /dev/null and b/Start/favicon.ico differ diff --git a/UnInstall/Ncrow-Mega-Pack-2-Uninstall-Tool.256.ico b/UnInstall/Ncrow-Mega-Pack-2-Uninstall-Tool.256.ico new file mode 100644 index 00000000..ee28e750 Binary files /dev/null and b/UnInstall/Ncrow-Mega-Pack-2-Uninstall-Tool.256.ico differ diff --git a/UnInstall/Program.cs b/UnInstall/Program.cs new file mode 100644 index 00000000..d254f0a6 --- /dev/null +++ b/UnInstall/Program.cs @@ -0,0 +1,152 @@ +// See https://aka.ms/new-console-template for more information + +using Newtonsoft.Json.Linq; +using System.Data.SqlTypes; +using System.Diagnostics; + +async Task ProcessStandardInputAsync(Process process, string cmd, string workDirectory = "") +{ + if (!string.IsNullOrWhiteSpace(workDirectory)) + { + process.StartInfo.WorkingDirectory = workDirectory; + } + + await process.StandardInput.WriteLineAsync(cmd); + await process.StandardInput.FlushAsync(); + + while (!process.StandardOutput.EndOfStream) + { + var output = await process.StandardOutput.ReadLineAsync(); + if (string.IsNullOrWhiteSpace(output)) + { + break; + } + } +} + +void DeleteFolderContents(string path) +{ + DirectoryInfo directory = new DirectoryInfo(path); + + foreach (FileInfo file in directory.GetFiles()) + { + file.Delete(); + } + + foreach (DirectoryInfo subDirectory in directory.GetDirectories()) + { + subDirectory.Delete(true); + } +} + + + + +var configFolder = $@"C:\ProgramData\.xingcang\"; + +var configPath =Path.Combine(configFolder, "config.json") ; +if (!File.Exists(configPath)) +{ + Console.WriteLine("当前系统未部署影像系统,无须卸载"); + Console.ReadLine(); +} +else +{ + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(""); + Console.WriteLine("警告:卸载部署的网站,会将数据库,部署的网站,以及运行的所有数据记录都会清除,该操作非常慎重,请确保你已知晓该后果"); + Console.WriteLine(" 您确定要卸载该程序吗?(Y/N)"); + Console.ResetColor(); + + string confirm = Console.ReadLine(); + if (confirm.ToUpper() == "Y") + { + // 执行卸载操作 + try + { + Console.WriteLine("开始读取激活信息..."); + + var appsettingsJson = File.ReadAllText(configPath); + + // 解析 JSON 字符串 + var jObject = JObject.Parse(appsettingsJson); + + + var configObj = new + { + key = jObject["key"].ToString(), + value = jObject["value"].ToString(), + user = jObject["user"].ToString(), + server = jObject["server"].ToString(), + password = jObject["password"].ToString(), + dbName = jObject["dbName"].ToString(), + deployFolder = jObject["deployFolder"].ToString(), + nginxPath = jObject["nginxPath"].ToString(), + apiPath = jObject["apiPath"].ToString(), + serviceName = jObject["serviceName"].ToString(), + }; + Console.WriteLine("激活信息读取完毕,开始准备卸载..."); + + + + Process process = new Process(); + process.StartInfo.FileName = "cmd.exe"; + process.StartInfo.RedirectStandardInput = true; + process.StartInfo.UseShellExecute = false; + //process.StartInfo.CreateNoWindow = false; // 不创建新窗口 + + process.StartInfo.RedirectStandardOutput = true; + process.Start(); + + Console.WriteLine("停止nginx进程..."); + + var proList = Process.GetProcesses().Where(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(configObj.nginxPath)); + + foreach (var item in proList) + { + item.Kill(); + } + + + + Console.WriteLine("停止后端服务..."); + + await ProcessStandardInputAsync(process, $"sc stop {configObj.serviceName}"); + await ProcessStandardInputAsync(process, $"sc delete {configObj.serviceName}"); + + + Console.WriteLine("数据库若被其他进程或者连接正在使用,将会删除失败,您可以卸载完后手动删除遗留的数据库"); + Console.WriteLine("执行删除数据库命令..."); + await ProcessStandardInputAsync(process, $@" SQLCMD -S {configObj.server} -U {configObj.user} -P {configObj.password} -Q ""DROP DATABASE {configObj.dbName}"" "); + + + process.StandardInput.Close(); + process.WaitForExit(); + + Console.WriteLine("删除部署文件夹下的所有内容..."); + DeleteFolderContents(configObj.deployFolder); + + + //DeleteFolderContents(configFolder); + + Console.WriteLine("删除激活信息..."); + + Console.WriteLine("卸载结束"); + Console.ReadLine(); + + + } + catch (Exception ex) + { + + Console.WriteLine("程序出错,卸载失败:" + ex.Message); + } + + } + + + + +} + + diff --git a/UnInstall/UnInstall.csproj b/UnInstall/UnInstall.csproj new file mode 100644 index 00000000..1393411c --- /dev/null +++ b/UnInstall/UnInstall.csproj @@ -0,0 +1,19 @@ + + + + Exe + net6.0 + enable + enable + Ncrow-Mega-Pack-2-Uninstall-Tool.256.ico + + + + + + + + + + +