From 4309ba71e9859b46889256e4cf2c901d0ee12bf7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 18 Apr 2023 17:03:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EI_Image_Viewer_Activation.csproj | 16 +
EI_Image_Viewer_Activation/Main.Designer.cs | 120 ++++++
EI_Image_Viewer_Activation/Main.cs | 45 +++
EI_Image_Viewer_Activation/Main.resx | 348 ++++++++++++++++++
EI_Image_Viewer_Activation/Program.cs | 17 +
.../icons8-access-control-64.ico | Bin 0 -> 16958 bytes
IRaCIS.Core.API.sln | 10 +
.../Controllers/InspectionController.cs | 4 +-
.../Controllers/UploadDownLoadController.cs | 2 -
IRaCIS.Core.API/IRaCIS.Core.API.xml | 4 +-
.../Authorization/AuthorizationPolicySetup.cs | 8 +-
IRaCIS.Core.Application/AOP/QANoticeAOP.cs | 46 +--
IRaCIS.Core.Application/Auth/IRaCISPolicy.cs | 5 +-
.../BusinessFilter/TrialAuditFilter.cs | 10 +-
IRaCIS.Core.Application/Resources/en-US.json | 16 +-
IRaCIS.Core.Application/Resources/zh-CN.json | 14 +-
.../Allocation/VisitTaskHelpeService.cs | 6 +-
.../Service/Common/ExcelExportService.cs | 4 +-
.../Document/TrialEmailNoticeConfigService.cs | 2 +-
.../Service/QC/QCCommon.cs | 4 +-
.../Service/QC/QCListService.cs | 20 +-
.../Service/QC/QCOperationService.cs | 42 +--
.../Service/QC/_MapConfig.cs | 10 +-
.../ReadingClinicalDataService.cs | 26 +-
.../Reading/Dto/ReadingClinicalDataDto.cs | 2 +-
.../TrialSiteUser/TrialMaintenanceService.cs | 4 +-
.../Service/TrialSiteUser/TrialSiteService.cs | 16 +-
.../Service/Visit/SubjectService.cs | 2 +-
.../Service/Visit/SubjectVisitService.cs | 2 +-
.../SubjectVisitCheckPassedTrigger.cs | 2 +-
.../ConsistencyVerificationHandler.cs | 2 +-
.../QC/CheckChanllengeTypeEnum.cs | 4 +-
.../QC/RequestBackStateEnum.cs | 4 +-
IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 4 +-
IRaCIS.Core.Domain.Share/User/UserType.cs | 2 +-
IRaCIS.Core.Domain/SQLFile/Test.sql | 8 +-
IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 2 +-
37 files changed, 690 insertions(+), 143 deletions(-)
create mode 100644 EI_Image_Viewer_Activation/EI_Image_Viewer_Activation.csproj
create mode 100644 EI_Image_Viewer_Activation/Main.Designer.cs
create mode 100644 EI_Image_Viewer_Activation/Main.cs
create mode 100644 EI_Image_Viewer_Activation/Main.resx
create mode 100644 EI_Image_Viewer_Activation/Program.cs
create mode 100644 EI_Image_Viewer_Activation/icons8-access-control-64.ico
diff --git a/EI_Image_Viewer_Activation/EI_Image_Viewer_Activation.csproj b/EI_Image_Viewer_Activation/EI_Image_Viewer_Activation.csproj
new file mode 100644
index 00000000..18e1e00e
--- /dev/null
+++ b/EI_Image_Viewer_Activation/EI_Image_Viewer_Activation.csproj
@@ -0,0 +1,16 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+ icons8-access-control-64.ico
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EI_Image_Viewer_Activation/Main.Designer.cs b/EI_Image_Viewer_Activation/Main.Designer.cs
new file mode 100644
index 00000000..b2c8e50d
--- /dev/null
+++ b/EI_Image_Viewer_Activation/Main.Designer.cs
@@ -0,0 +1,120 @@
+namespace EI_Image_Viewer_Activation
+{
+ partial class Main
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
+ label1 = new Label();
+ label2 = new Label();
+ codeTBox = new TextBox();
+ activeSecreteTbox = new TextBox();
+ btnCopy = new Button();
+ SuspendLayout();
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
+ label1.Location = new Point(54, 69);
+ label1.Margin = new Padding(4, 0, 4, 0);
+ label1.Name = "label1";
+ label1.Size = new Size(72, 27);
+ label1.TabIndex = 0;
+ label1.Text = "机器码";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
+ label2.Location = new Point(54, 183);
+ label2.Margin = new Padding(4, 0, 4, 0);
+ label2.Name = "label2";
+ label2.Size = new Size(72, 27);
+ label2.TabIndex = 1;
+ label2.Text = "激活码";
+ //
+ // codeTBox
+ //
+ codeTBox.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
+ codeTBox.Location = new Point(168, 69);
+ codeTBox.Margin = new Padding(4);
+ codeTBox.Name = "codeTBox";
+ codeTBox.Size = new Size(424, 33);
+ codeTBox.TabIndex = 2;
+ codeTBox.TextChanged += codeTBox_TextChanged;
+ //
+ // activeSecreteTbox
+ //
+ activeSecreteTbox.Enabled = false;
+ activeSecreteTbox.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
+ activeSecreteTbox.Location = new Point(168, 183);
+ activeSecreteTbox.Margin = new Padding(4);
+ activeSecreteTbox.Name = "activeSecreteTbox";
+ activeSecreteTbox.Size = new Size(424, 33);
+ activeSecreteTbox.TabIndex = 3;
+ //
+ // btnCopy
+ //
+ btnCopy.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
+ btnCopy.Location = new Point(619, 178);
+ btnCopy.Margin = new Padding(4);
+ btnCopy.Name = "btnCopy";
+ btnCopy.Size = new Size(144, 41);
+ btnCopy.TabIndex = 4;
+ btnCopy.Text = "拷贝";
+ btnCopy.UseVisualStyleBackColor = true;
+ btnCopy.Click += btnCopy_Click;
+ //
+ // Main
+ //
+ AutoScaleDimensions = new SizeF(10F, 21F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(818, 498);
+ Controls.Add(btnCopy);
+ Controls.Add(activeSecreteTbox);
+ Controls.Add(codeTBox);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Font = new Font("Microsoft YaHei UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
+ Icon = (Icon)resources.GetObject("$this.Icon");
+ Margin = new Padding(4);
+ Name = "Main";
+ Text = "EI_Image_viewer Activation";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Label label1;
+ private Label label2;
+ private TextBox codeTBox;
+ private TextBox activeSecreteTbox;
+ private Button btnCopy;
+ }
+}
\ No newline at end of file
diff --git a/EI_Image_Viewer_Activation/Main.cs b/EI_Image_Viewer_Activation/Main.cs
new file mode 100644
index 00000000..1bedfac8
--- /dev/null
+++ b/EI_Image_Viewer_Activation/Main.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace EI_Image_Viewer_Activation
+{
+ public partial class Main : Form
+ {
+ public Main()
+ {
+ InitializeComponent();
+ }
+
+ private void btnCopy_Click(object sender, EventArgs e)
+ {
+ Clipboard.SetText(activeSecreteTbox.Text);
+
+ MessageBox.Show("拷贝成功!");
+ }
+
+ private void codeTBox_TextChanged(object sender, EventArgs e)
+ {
+ this.activeSecreteTbox.Text = Md5($"{this.codeTBox.Text.Trim()}_XINGCANG");
+ }
+
+ public static string Md5(string target)
+ {
+ using (MD5 md5 = MD5.Create())
+ { // MD5非线程安全
+ byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(target));
+ StringBuilder sb = new StringBuilder(32);
+ for (int i = 0; i < bytes.Length; ++i)
+ sb.Append(bytes[i].ToString("x2"));
+ return sb.ToString();
+ }
+ }
+ }
+}
diff --git a/EI_Image_Viewer_Activation/Main.resx b/EI_Image_Viewer_Activation/Main.resx
new file mode 100644
index 00000000..6a9f3436
--- /dev/null
+++ b/EI_Image_Viewer_Activation/Main.resx
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABMLAAATCwAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVaoDdW+EYnVvhGJVVaoDAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW6Dz3Ru
+ g/J0boPydW6Dz3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZt
+ fxx0b4SidG6E/XRvhKJ0an8YcnJ/FHVug5F1b4P8dG+Es3NsgyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAf2Z/CnVvg4B1boP2dW+EynRvhjkAAAAAAAAAAAAAAAAAAAAAdXCEMnRvhMN0boT5dW6DkXV1
+ iQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 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
+ 6vvx5ur98ufqovPn5xYAAAAAAAAAAH9mfwp1b4R3dG+E83Rug8t2bYM6AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AXVvhFV1b4TgdW6D5HRv
+ hF4AAP8BAAAAAAAAAADy5uwp8ubsKQAAAAAAAAAAAAAAAHNwhE10boPfdG+E5XVuhGZ/f38CAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAf2Z/CnVvg4B1boP2dW+EynRvhjkAAAAAAAAAAAAAAAAAAAAAdXCEMnRug8J0boT5dW6DkXV1
+ iQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdm1/HHRvhKJ0boT9dG+EonRqfxhycn8UdW6DkXVv
+ g/x0b4Szc2yDIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3Vu
+ g890boPydG6D8nVug891bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABVVaoDdW+EYnVvhGJVVaoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA/////////////////////////////////////////////////////////////////////D//
+ ///////4H////////+AH////////g8H///////4GcH///////BgYP//////wYAYP/////8HBg4P/////
+ gwfgwf////4MH/gwf///+DB//gwf///g4P//Bwf//8GD///Bg///hg4AAHBh//+MHgAAeBH//4h+AAB+
+ Ef//if5//n+R//+J/n/+f5H//4n+fn5/kf//if5+fn+R//+J/n5+f5H//4n+fn5/kf//if58Pn+R//+J
+ /ngef5H//4n+eB5/kf//if55nn+R//+J/ngef5H//4n+fD5/kf//if5//n+R//+J/n/+f5H//4n+f/5/
+ kf//if4AAH+R//+J/gAAf5H//4n/z/P/kf//if/P8/+R//+J/8/z/5H//4h/z/P+Ef//jB/H4/gR//+G
+ D8PD8GH//8GD4AfBg///4ODwDwcH///4MH5+DB////4MH/gwf////4MH4MH/////wcGDg//////wYAYP
+ //////wYGD///////gZwf///////g8H////////gB/////////gf/////////D//////////////////
+ //////////////////////////////////////////////////8=
+
+
+
\ No newline at end of file
diff --git a/EI_Image_Viewer_Activation/Program.cs b/EI_Image_Viewer_Activation/Program.cs
new file mode 100644
index 00000000..3735e4ae
--- /dev/null
+++ b/EI_Image_Viewer_Activation/Program.cs
@@ -0,0 +1,17 @@
+namespace EI_Image_Viewer_Activation
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ Application.Run(new Main());
+ }
+ }
+}
\ No newline at end of file
diff --git a/EI_Image_Viewer_Activation/icons8-access-control-64.ico b/EI_Image_Viewer_Activation/icons8-access-control-64.ico
new file mode 100644
index 0000000000000000000000000000000000000000..2231ed0de9853819cf4aa0e3b2c802bff0f4834f
GIT binary patch
literal 16958
zcmeHOZERCj7`{_r0@FD(21G#(>eNJ03`UJWKx2TQzxEeD5|=<&+pX(1zjl#!V?-o@
zC`mUE-OtGnb;hr5E^|Z@KxTj#rszhYz3aX0)^>ah7`s02y*=IOUF!zh+O6wdPT%u&
z&v~Ecob%pu?|CN(S@>JEO2F>}LjGz&xJM9#d<0|(TM;N1(qghwKz7g`ZklJP!z>m
z`0}X|x0<#sqw%CM#~QD(apM_08_WxPmE9q)d=24xSd#1eB#E}|+NIAIM>+2Aqxn)+
zWPgE`O?GLqI2M$e?ap}XSyj~;LCIGHyn&D;{~7f7UZp^B%A+!>!!Yvp0z5R7l-TcQ
zWs^-77CL9zOxw)RGlX#5YPPT7b?lRr)giBP0yulal2WdoQfIMp!i@P)7?KnP<)<+x
z*0C~@R`W;Cfz!j7OBcwFh;N9u@#U$GN7n2a=;$X7_~&`h=UW0?4e{o=QSYETI4`m;
z22kGx+weH6Lw11d2m0uSU2yBRgq5a7mTalY$C!MNF}X@MyS%(6muVtN(p=!)iqH=%
zEf;*gr&!rYQnQPa@&oR>N__P6^hDbgH;Xyiv&3xg2N%DTnyQ{0slD+ouh_IbkMQDI
zbq!n|iVxB!rHi7LW
ztX453W7Mwj^~M^vTI{RA^$FnbHTHAS?O%v7s;4y$+zmaR
zo<(Er&v^euMY$JkJE;%MiN;<@dVtko;{x3j=y)1)BgTHRdN(U+ZwAaN+TTn2Ro0H`
zcF!hT4t@H7|7h6bdy$oqJmyqqy7mVj8cU!y_%?%H2;maAsPXxHIjmgYOFQ;z
zxptQXWe)nXdSo>jLXA
z2d)5Lxy#v8f$_hJecoDzo5^&=PxxGQfkNzkPJxG$Ki3A{VVHTD&iHwpiQ*aj>An9+
zH0~@vEymv&=y25r8g3@QCU#8m_usX!Z%!@L`mf^|_gys2@{N+}P~B+$@aF=XA52cx
z_kX4zN$nX|=YNIIix+P~9jY6zEKyzt|K$As!;cqiS*Y2myvFCni@R!-*D?Qt@yZhA
zC4Kxy`TdjE7yI2~*zbJE=f#Tyy9ln1#49uArRw`9=>g6o-@j!~qVM0lzQBaNZs6Qc
z^%6XA<6kYG`f_0JJ`ZqmPhkMjH@*o`>h)H@|)2o^8bUtiGxtJs#&@&HI!`!9gcI*YV!7$+fTdX)Pd5xPkv)SFQXA
z!^+DGvb+GeQ*!>r^kC;~V>$n%cYfG`8d?j$te*`z{cf!L?eV^W@aLbve>~p#C!I@9
z^!X>_fMjv8IFCR7wiZ=I{S;_zj`sYU);k5hZ9X2cF>%koD~hX^;G8e1=ij_;6rV8v
z2al4EbJe*14_52Pb5rgAVB}!}{9ni~Y|{I`@H~v@|J1Fl!CB?#{GTK_#;>BR*s&bz
zd(!$p@jNj9w}@X#j6W-E1M~BeF~2)-cD=q&<3&D+v+N%7CE)$Sii;f!;pe3J%hFme
zH`R>0Uj?uGc*e>95jOG=!f^k`AwRDX{U6~wd2}lIKgM!6PZR(5SQZ39^QW1H|Np@A
zFrEMZh36p?&oGc-Aj3e0fz&X7caj^u23G2K^e@(BSGF$gt(qL1Wf3VdFn|6^lEF7;
z<&tb|wcAPBv%9F`V9w(HrJ}0h2T@h+>QdEgwA6}96sqqK1j}2hx)ZNF6?v*!Qz;0Q
zkUIv&L2)-PD=YPMBKg4zy}V*ktbF(L*fgtWY@ekCL9ZW?YI~nbdKhGl*xok?J$EiX
ze6Am|I=8JY2pp~Uu57~9)fLPooc&8HD+xE_f$j(sKU$%Sjf
- /// CRC RequestToQC 批量提交
+ /// IC RequestToQC 批量提交
///
///
///
@@ -392,7 +392,7 @@ namespace IRaCIS.Core.API.Controllers
///
- /// CRC 设置已经重传完成
+ /// IC 设置已经重传完成
///
[HttpPost, Route("Inspection/QCOperation/SetReuploadFinished")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index 08d0cde1..8eec838d 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -434,7 +434,6 @@ namespace IRaCIS.Core.API.Controllers
///
[HttpPost("ClinicalData/UploadVisitClinicalData/{trialId:guid}/{subjectVisitId:guid}")]
[DisableRequestSizeLimit]
- [Authorize(Policy = IRaCISPolicy.CRC)]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task UploadVisitClinicalData(Guid subjectVisitId)
@@ -672,7 +671,6 @@ namespace IRaCIS.Core.API.Controllers
[RequestSizeLimit(1_073_741_824)]
[HttpPost("NoneDicomStudy/UploadNoneDicomFile/{trialId:guid}/{subjectVisitId:guid}/{noneDicomStudyId:guid}/{studyMonitorId:guid}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
- [Authorize(Policy = IRaCISPolicy.CRC)]
public async Task UploadNoneDicomFile(IFormCollection formCollection, Guid subjectVisitId, Guid noneDicomStudyId, Guid studyMonitorId,
[FromServices] IRepository _noneDicomStudyRepository, [FromServices] IRepository _studyMonitorRepository)
{
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml
index 8b186f7c..999ba0b5 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.xml
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml
@@ -171,7 +171,7 @@
- CRC RequestToQC 批量提交
+ IC RequestToQC 批量提交
@@ -195,7 +195,7 @@
- CRC 设置已经重传完成
+ IC 设置已经重传完成
diff --git a/IRaCIS.Core.API/_ServiceExtensions/Authorization/AuthorizationPolicySetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Authorization/AuthorizationPolicySetup.cs
index a6ea6138..8e3ec147 100644
--- a/IRaCIS.Core.API/_ServiceExtensions/Authorization/AuthorizationPolicySetup.cs
+++ b/IRaCIS.Core.API/_ServiceExtensions/Authorization/AuthorizationPolicySetup.cs
@@ -12,13 +12,13 @@ namespace IRaCIS.Core.API
{
services.AddAuthorization(options =>
{
- //影像质控策略 只允许 CRC IQC进行操作
+ //影像质控策略 只允许 IC IQC进行操作
options.AddPolicy(IRaCISPolicy.CRC_IQC, policyBuilder =>
{
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString(), ((int)UserTypeEnum.IQC).ToString());
});
- //一致性核查策略 只允许 CRC PM APM 进行操作
+ //一致性核查策略 只允许 IC PM APM 进行操作
options.AddPolicy(IRaCISPolicy.PM_APM_CRC, policyBuilder =>
{
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ProjectManager).ToString(), ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString(), ((int)UserTypeEnum.APM).ToString());
@@ -47,10 +47,6 @@ namespace IRaCIS.Core.API
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.IQC).ToString());
});
- options.AddPolicy(IRaCISPolicy.CRC, policyBuilder =>
- {
- policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString());
- });
options.AddPolicy(IRaCISPolicy.PM_APM_CRC_QC, policyBuilder =>
{
diff --git a/IRaCIS.Core.Application/AOP/QANoticeAOP.cs b/IRaCIS.Core.Application/AOP/QANoticeAOP.cs
index 0e80ae3a..79ea5771 100644
--- a/IRaCIS.Core.Application/AOP/QANoticeAOP.cs
+++ b/IRaCIS.Core.Application/AOP/QANoticeAOP.cs
@@ -55,17 +55,17 @@
// NoticeTypeEnum = NoticeType.NotNeedNotice,
// NeedDeal = false,
// StudyStatusStr = "Uploaded",
-// Message = $"CRC : {_userInfo.RealName} has uploaded {study.StudyCode} ",
+// Message = $"IC : {_userInfo.RealName} has uploaded {study.StudyCode} ",
// SendTime = DateTime.Now,
// });
// }
// #region 处理QA通知模块
-// //查询项目的参与者 和 负责site下CRC用户
+// //查询项目的参与者 和 负责site下IC用户
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
-// // 找到该study 关联Site 下的CRC
+// // 找到该study 关联Site 下的IC
// var crcList = _userTrialSiteRepository.Where(t =>
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
@@ -78,11 +78,11 @@
-// // CRC =>QA
+// // IC =>QA
// if (studyStatus.Status == (int)StudyStatus.QARequested)
// {
-// //找出当前操作的CRC
-// //PM 或者admin可以代替CRC角色 不能从CRC列表中查询用户
+// //找出当前操作的IC
+// //PM 或者admin可以代替IC角色 不能从IC列表中查询用户
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
// var notice = new QANotice()
@@ -100,7 +100,7 @@
// NeedDeal = true,
// StudyStatusStr = "QA Requested",
// Message =
-// $"CRC -> QA : {_userInfo.RealName} request QA {study.StudyCode} , Inquiry can be performed! ",
+// $"IC -> QA : {_userInfo.RealName} request QA {study.StudyCode} , Inquiry can be performed! ",
// SendTime = DateTime.Now,
// };
@@ -128,18 +128,18 @@
// });
// }
-// // QA =>CRC 向CRC推送消息影像有问题 同时作为 requestToQA 的边界
+// // QA =>IC 向IC推送消息影像有问题 同时作为 requestToQA 的边界
// else if (studyStatus.Status == (int)StudyStatus.QAing)
// {
// //找出当前操作的QA 如果是pm 或者admin 代替操作 此时会有问题 所以 谁代替,就以谁的名义执行
// //var currentQA = qaList.First(t => t.UserId == _userInfo.Id);
// //var currentQA = trialUserList.First(t => t.UserId == _userInfo.Id);
-// //在项目CRC列表中筛选出 负责该study关联 site的CRC
+// //在项目IC列表中筛选出 负责该study关联 site的IC
// var siteCRCList = _userTrialSiteRepository.Where(t =>
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
-// //查询项目的参与者 和 负责site下CRC用户
+// //查询项目的参与者 和 负责site下IC用户
@@ -156,7 +156,7 @@
// NoticeTypeEnum = NoticeType.QA_InQA_NoticeCRC,
// NeedDeal = true,
// StudyStatusStr = "In QA",
-// Message = $"QA -> CRC : {_userInfo.RealName} inquiry {study.StudyCode} ",
+// Message = $"QA -> IC : {_userInfo.RealName} inquiry {study.StudyCode} ",
// SendTime = DateTime.Now,
// };
@@ -169,7 +169,7 @@
// ToUserType = t.UserTypeRole.UserTypeShortName
// }));
-// //添加 发送给CRC的消息 消息和CRC是 一对多
+// //添加 发送给IC的消息 消息和IC是 一对多
// _qaNoticeRepository.Add(notice);
@@ -228,7 +228,7 @@
// _qaNoticeRepository.Add(notice);
-// //处理 消息 标记已处理 存在意外情况 qa发给CRC的 但是qa里面设置了 通过或者不通过 此时qa发送的消息也设置为已处理
+// //处理 消息 标记已处理 存在意外情况 qa发给IC的 但是qa里面设置了 通过或者不通过 此时qa发送的消息也设置为已处理
// var needDealNoticeList = _qaNoticeRepository.AsQueryable()
// .Where(t => t.SubjectVisitId == study.Id && t.NeedDeal &&
// (t.NoticeTypeEnum == NoticeType.CRC_RequestToQA_NoticeQA ||
@@ -248,7 +248,7 @@
// }
-// // QA =>CRC 暂时不用发送消息给CRC 因为CRC 暂时没有入口回复 同时作为 requestToQA 的边界
+// // QA =>IC 暂时不用发送消息给IC 因为IC 暂时没有入口回复 同时作为 requestToQA 的边界
// else if (studyStatus.Status == (int)StudyStatus.QAFInishNotPass)
// {
@@ -298,24 +298,24 @@
// var study = _studyRepository.FirstOrDefault(t => t.Id == studyId);
// var status = study.Status;
-// //处理CRC 重传时 QA消息
+// //处理IC 重传时 QA消息
// if (status == (int)StudyStatus.QAing)
// {
-// //查询项目的参与者 和 负责site下CRC用户
+// //查询项目的参与者 和 负责site下IC用户
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
-// // 找到该study 关联Site 下的CRC
+// // 找到该study 关联Site 下的IC
// var crcList = _userTrialSiteRepository.Where(t =>
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
// var qaList = trialUserList.Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).ToList();
-// //CRC =>QA CRC的职能被PM 或者admin代替
+// //IC =>QA IC的职能被PM 或者admin代替
// //if (_userInfo.UserTypeEnumInt == (int)UserType.ClinicalResearchCoordinator)
// {
-// //PM 或者admin可以代替CRC角色 不能从CRC列表中查询用户
+// //PM 或者admin可以代替IC角色 不能从IC列表中查询用户
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
// var notice = new QANotice()
@@ -330,7 +330,7 @@
// FromUserType = _userInfo.UserTypeShortName,
// NoticeTypeEnum = NoticeType.CRC_ReUpload_NoticeQA,
// NeedDeal = true,
-// Message = $"CRC -> QA :{_userInfo.RealName} has reuploaded {study.StudyCode} , Need to be inquiry again",
+// Message = $"IC -> QA :{_userInfo.RealName} has reuploaded {study.StudyCode} , Need to be inquiry again",
// SendTime = DateTime.Now
// };
@@ -345,7 +345,7 @@
// _qaNoticeRepository.Add(notice);
-// //这里作为 QA 设置 Inqa 状态的回复 或者QA和CRC对话的
+// //这里作为 QA 设置 Inqa 状态的回复 或者QA和IC对话的
// var needDealNoticeList = _qaNoticeRepository.Where(t => t.SubjectVisitId == study.Id && t.NeedDeal
// && (t.NoticeTypeEnum == NoticeType.QA_InQA_NoticeCRC || t.NoticeTypeEnum == NoticeType.QA_QARecordDialogPost_NoticeCRC))
// .ToList();
@@ -377,10 +377,10 @@
// #region 处理QA通知 匿名化完毕 通知PM
-// //查询项目的参与者 和 负责site下CRC用户
+// //查询项目的参与者 和 负责site下IC用户
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
-// // 找到该study 关联Site 下的CRC
+// // 找到该study 关联Site 下的IC
// var crcList = _userTrialSiteRepository.Where(t =>
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
diff --git a/IRaCIS.Core.Application/Auth/IRaCISPolicy.cs b/IRaCIS.Core.Application/Auth/IRaCISPolicy.cs
index 994cbbc9..e469ec2e 100644
--- a/IRaCIS.Core.Application/Auth/IRaCISPolicy.cs
+++ b/IRaCIS.Core.Application/Auth/IRaCISPolicy.cs
@@ -10,10 +10,7 @@ namespace IRaCIS.Core.Application.Auth
public static class IRaCISPolicy
{
-
-
-
- public const string CRC = "CRC";
+ public const string IC = "IC";
public const string PM = "PM";
diff --git a/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs b/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs
index a038ee94..578431f4 100644
--- a/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs
+++ b/IRaCIS.Core.Application/BusinessFilter/TrialAuditFilter.cs
@@ -45,7 +45,7 @@ public enum AuditOptType
AddTrialSite = 5,
DeleteTrialSite = 6,
- //Site CRC
+ //Site IC
AddTrialSiteCRC = 7,
DeleteTrialSiteCRC = 8,
@@ -355,7 +355,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
// // }
// // break;
-// // //删除项目Site CRC
+// // //删除项目Site IC
// // case AuditOptType.DeleteTrialSiteCRC:
// // if (result.IsSuccess)
@@ -700,7 +700,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
// // //删除项目运维人员
// // case AuditOptType.DeleteTrailStaff:
-// // // 删除项目Site CRC
+// // // 删除项目Site IC
// // case AuditOptType.DeleteTrialSiteCRC:
// // //接口参数
@@ -920,7 +920,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
// _userTrial = _userTrialRepository.AsQueryable().Include(t => t.User).FirstOrDefault(t => t.Id == userTrial);
// break;
-// // 删除项目Site CRC
+// // 删除项目Site IC
// case AuditOptType.DeleteTrialSiteCRC:
// //接口参数
@@ -1258,7 +1258,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
// }
// break;
-// //删除项目Site CRC
+// //删除项目Site IC
// case AuditOptType.DeleteTrialSiteCRC:
// if (result.IsSuccess)
diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json
index 31a6a2c9..0c0783ed 100644
--- a/IRaCIS.Core.Application/Resources/en-US.json
+++ b/IRaCIS.Core.Application/Resources/en-US.json
@@ -60,7 +60,7 @@
// TrialSiteService
"CodeRepeated": "Code is not allowed to be repeated",
- "CRCCanNotDeleted": "The site has been associated with CRC, and couldn't be deleted",
+ "CRCCanNotDeleted": "The site has been associated with IC, and couldn't be deleted",
"SiteCanNotDeleted": "The subjects has been added to this site, and couldn't be deleted",
"StudyCanNotDeleted": "The site has been uploaded study, and couldn't be deleted.",
@@ -76,8 +76,8 @@
// SubjectVisitService
"ContainsVisitnum": "This subject's visit plan already contains a visit with the same visitnum",
"LastEvaluationNotAllowed": "After setting the last evaluation, you are not allowed to add scheduled outbound visits",
- "CRCSubmit": "PD confirmation status cannot be modified after CRC submission",
- "BacktrackingVisits": "After the CRC is submitted, the PD confirmation status cannot be changed",
+ "CRCSubmit": "PD confirmation status cannot be modified after IC submission",
+ "BacktrackingVisits": "After the IC is submitted, the PD confirmation status cannot be changed",
"ImageUpload": "The subject uploaded the image after this visit, and this visit is not allowed to be set as the last visit",
"AssociatedUploaded": "This visit is associated with the uploaded study images and couldn't be deleted",
"InPlanCanNotDeleted": "This visit is InPlan and couldn't be deleted",
@@ -87,7 +87,7 @@
"AccordWithVisitNum": "For the visit plan, the VisitDay with a larger VisitNum should be larger than the VisitDay with a smaller VisitNum",
"same/VisitName": "A visit with the same VisitName/VisitNum already existed in the current visit plan",
"AlreadyBaseline": "A visit already is baseline in the current visit plan",
- "IsUploadVideo": "A CRC has uploaded image data for the baseline and is not allowed to modify the baseline",
+ "IsUploadVideo": "A IC has uploaded image data for the baseline and is not allowed to modify the baseline",
"VisitHasBeenExecuted": "The visit plan has been assigned to the subjects and executed",
"OnlyProgressCanEdit": "Modification validation is allowed only during project initialization or in progress",
"NoBaselineNoConfirmation": "No baseline, no confirmation allowed",
@@ -121,10 +121,10 @@
// QCOperationService
"AuditQuestionMust": "The audit question must be filled out and saved, otherwise no challenge is allowed to be added",
- "VisitNoClose": "The current viewer has unclosed query for CRC upload permission. No further query is allowed",
- "NotFinish": "CRC retransmission request /QC agrees to retransmission challenge and is not allowed to close the challenge until CRC setup retransmission is complete",
+ "VisitNoClose": "The current viewer has unclosed query for IC upload permission. No further query is allowed",
+ "NotFinish": "IC retransmission request /QC agrees to retransmission challenge and is not allowed to close the challenge until IC setup retransmission is complete",
"QCHasBeenReplied": "This QC inquiry has been answered",
- "OperationUserMustBeCRC/PM": "Only CRC and PM are allowed",
+ "OperationUserMustBeCRC/PM": "Only IC and PM are allowed",
"CanNotCloseQuery": "Visits that perform conformance checks are not allowed to close queries",
"OnlyPMCanSet": "Only PM manual Settings are allowed to pass the consistency check",
"CanNotSettingConsistency": "Currently, the PM approves the rollback and does not allow the consistency check to pass",
@@ -155,7 +155,7 @@
"CanNotSetQCFailed": "QC Failed cannot be set in the unchecked state",
"NotInPrimaryQCQCFailed": "The project is configured as a single audit. The current audit status is not InPrimaryQC and cannot be changed to QCFailed",
"TrialIsDoubleCheckCanNotQCFailed{0}": "The project is configured with double audit. The current audit status is {0} and cannot be changed to QCFailed",
- "CRCHasBeenSubmitted": "CRC has submitted an unmodified group confirmation status",
+ "CRCHasBeenSubmitted": "IC has submitted an unmodified group confirmation status",
"CannotBeChangedPD": "PD confirmation status cannot be modified for rollback visits",
"OtherQCProcessAudit": "Other QC is conducting audit, current operation is not allowed",
"ForwardFailed": "Forward failure",
diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json
index b9fe6df5..64081372 100644
--- a/IRaCIS.Core.Application/Resources/zh-CN.json
+++ b/IRaCIS.Core.Application/Resources/zh-CN.json
@@ -59,7 +59,7 @@
// TrialSiteService
"CodeRepeated": "编码不允许重复",
- "CRCCanNotDeleted": "该站点已与CRC关联,无法删除",
+ "CRCCanNotDeleted": "该站点已与IC关联,无法删除",
"SiteCanNotDeleted": "主题已添加到本网站,无法删除",
"StudyCanNotDeleted": "该网站已上传研究,无法删除",
@@ -76,7 +76,7 @@
"ContainsVisitnum": "这个主题的访问计划已经包含了一个访问次数相同的访问",
//该患者已经有检查批次设置为末次检查批次,不允许将该检查批次设置为末次检查批次 这个在上面有 TheLastVisit
"LastEvaluationNotAllowed": "设置末次评估后,不允许添加计划外检查批次",
- "CRCSubmit": "CRC提交后,不允许修改PD确认状态",
+ "CRCSubmit": "IC提交后,不允许修改PD确认状态",
"BacktrackingVisits": "回退的检查批次,不允许修改PD确认状态",
"ImageUpload": "该患者此检查批次后有影像上传,该检查批次不允许设置为末次检查批次",
"AssociatedUploaded": "本次访问与上传的研究图片有关,无法删除",
@@ -87,7 +87,7 @@
"AccordWithVisitNum": "对于访问计划,具有较大VisitNum的VisitDay应该大于具有较小VisitNum的VisitDay",
"same/VisitName": "当前访问计划中已经存在具有相同VisitName/VisitNum的访问",
"AlreadyBaseline": "已检查批次是当前检查批次计划的基线",
- "IsUploadVideo": "有CRC已经为基线上传了影像数据,不允许修改基线",
+ "IsUploadVideo": "有IC已经为基线上传了影像数据,不允许修改基线",
"VisitHasBeenExecuted": "访问计划已分配给患者并执行",
"OnlyProgressCanEdit": "仅仅在项目初始化或者进行中时,才允许修改确认",
"NoBaselineNoConfirmation": "没有基线,不允许确认",
@@ -122,10 +122,10 @@
// QCOperationService
"AuditQuestionMust": "必须填写审核问题,并保存,否则不允许添加质疑",
- "VisitNoClose": "当前检查批次有未关闭的 同意CRC上传的质疑,不允许再次添加质疑",
- "NotFinish": "CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑",
+ "VisitNoClose": "当前检查批次有未关闭的 同意IC上传的质疑,不允许再次添加质疑",
+ "NotFinish": "IC申请重传的/QC同意重传的质疑,在IC设置重传完成前不允许关闭质疑",
"QCHasBeenReplied": "此QC质询已回复",
- "OperationUserMustBeCRC/PM": "一致性核查对话操作用户 只允许 CRC/PM",
+ "OperationUserMustBeCRC/PM": "一致性核查对话操作用户 只允许 IC/PM",
"CanNotCloseQuery": "执行一致性核查的检查批次 不允许关闭质疑",
"OnlyPMCanSet": "只允许PM 手动设置一致性核查通过",
"CanNotSettingConsistency": "当前是PM同意回退,不允许设置一致性核查通过",
@@ -156,7 +156,7 @@
"CanNotSetQCFailed": "不审状态下,不允许设置为QC Failed",
"NotInPrimaryQCQCFailed": "项目配置为单审 当前审核状态不为 InPrimaryQC,不能变更到 QCFailed",
"TrialIsDoubleCheckCanNotQCFailed{0}": "项目配置为双审 当前审核状态为 {0},不能变更到 QCFailed",
- "CRCHasBeenSubmitted": "CRC已提交了 不能修改入组确认状态",
+ "CRCHasBeenSubmitted": "IC已提交了 不能修改入组确认状态",
"CannotBeChangedPD": "回退的检查批次,不允许修改PD确认状态",
"OtherQCProcessAudit": "其他QC正在进行审核,当前操作不允许",
"ForwardFailed": "转发失败",
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
index 7f8979cc..a291da82 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
@@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Service
var needSignCount = 0;
- //CRC 的自动签名 不用管 只用处理PM的就好
+ //IC 的自动签名 不用管 只用处理PM的就好
var haveSignedCount = _readingClinicalDataRepository
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
@@ -384,7 +384,7 @@ namespace IRaCIS.Core.Application.Service
{
if (isbaseLine)
{
- //CRC 的自动签名 不用管 只用处理PM 的就好
+ //IC 的自动签名 不用管 只用处理PM 的就好
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && t.UploadRole == UploadRole.PM).Count();
}
else
@@ -414,7 +414,7 @@ namespace IRaCIS.Core.Application.Service
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
}
- //可能仅仅CRC 基线 没有PM
+ //可能仅仅IC 基线 没有PM
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
{
isClinicalDataSign = true;
diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
index 68a26e88..1a80fdac 100644
--- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
+++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
@@ -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的患者
+ // IC 只负责他管理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();
@@ -554,7 +554,7 @@ namespace IRaCIS.Core.Application.Service.Common
.WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId)
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
.WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
- .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
+ .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//IC 过滤负责的site
.ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index 2e76c7ab..6870fea0 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -353,7 +353,7 @@ namespace IRaCIS.Core.Application.Service
var sendEmailConfig = new SMTPEmailConfig();
- //收件人 如果是CRC CRA 要按照中心发送
+ //收件人 如果是IC CRA 要按照中心发送
var toUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList();
diff --git a/IRaCIS.Core.Application/Service/QC/QCCommon.cs b/IRaCIS.Core.Application/Service/QC/QCCommon.cs
index 3161a1bd..33be040c 100644
--- a/IRaCIS.Core.Application/Service/QC/QCCommon.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCCommon.cs
@@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Service
public static class QCCommon
{
///
- /// 验证CRC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
+ /// 验证IC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
///
///
///
@@ -24,7 +24,7 @@ namespace IRaCIS.Core.Application.Service
if (await _repository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{
- throw new BusinessValidationFailedException("CRC 已提交影像,不能进行操作。");
+ throw new BusinessValidationFailedException("IC 已提交影像,不能进行操作。");
}
}
}
diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs
index bf3b4261..3319002b 100644
--- a/IRaCIS.Core.Application/Service/QC/QCListService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs
@@ -42,9 +42,9 @@ namespace IRaCIS.Core.Application.Image.QA
- #region CRC上传、质疑页面
+ #region IC上传、质疑页面
///
- /// CRC 检查批次上传列表
+ /// IC 检查批次上传列表
///
///
///
@@ -75,8 +75,8 @@ namespace IRaCIS.Core.Application.Image.QA
var pageList = await query.ToPagedListAsync(visitSearchDTO.PageIndex, visitSearchDTO.PageSize, visitSearchDTO.SortField, visitSearchDTO.Asc, string.IsNullOrWhiteSpace(visitSearchDTO.SortField), defalutSortArray);
var config = await _repository.Where(t => t.Id == visitSearchDTO.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
- config.IsHaveSubjectClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == visitSearchDTO.TrialId && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.Subject && x.UploadRole == UploadRole.CRC);
- config.IsHaveVisitClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == visitSearchDTO.TrialId && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit && x.UploadRole == UploadRole.CRC);
+ config.IsHaveSubjectClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == visitSearchDTO.TrialId && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.Subject && x.UploadRole == UploadRole.IC);
+ config.IsHaveVisitClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == visitSearchDTO.TrialId && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit && x.UploadRole == UploadRole.IC);
return (pageList, config);
}
@@ -84,7 +84,7 @@ namespace IRaCIS.Core.Application.Image.QA
///
- /// CRC 质疑列表
+ /// IC 质疑列表
///
///
///
@@ -92,7 +92,7 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<(PageOutput, TrialSubjectAndSVConfig)> GetCRCChallengeList(ChallengeQuery challengeQuery)
{
- #region CRC 质疑列表 join连表方式
+ #region IC 质疑列表 join连表方式
//var query = from qcChanllenge in _qcChallengeRepository.Find(qcChallengeLambda)
// join subjectVisit in _subjectVisitRepository.Find() on qcChanllenge.SubjectVisitId equals subjectVisit.Id
// join trialSite in _trialSiteRepository.Find(t => t.TrialId == challengeQuery.TrialId) on subjectVisit.SiteId equals trialSite.SiteId
@@ -466,7 +466,7 @@ namespace IRaCIS.Core.Application.Image.QA
#region 一致性核查 转发页面
///
- /// 获取一致性核查列表 CRC/PM 公用
+ /// 获取一致性核查列表 IC/PM 公用
///
///
///
@@ -530,7 +530,7 @@ namespace IRaCIS.Core.Application.Image.QA
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
.WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
//.WhereIf(!string.IsNullOrEmpty(checkQuery.VisitPlanInfo), checkQuery.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(checkQuery.VisitPlanInfo))
- .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
+ .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//IC 过滤负责的site
.ProjectTo(_mapper.ConfigurationProvider);
var pageList = await query.ToPagedListAsync(checkQuery.PageIndex, checkQuery.PageSize, checkQuery.SortField, checkQuery.Asc);
@@ -576,7 +576,7 @@ namespace IRaCIS.Core.Application.Image.QA
.WhereIf(!string.IsNullOrEmpty(forwardQuery.SubjectInfo), t => t.Subject.Code.Contains(forwardQuery.SubjectInfo))
.WhereIf(forwardQuery.VisitPlanArray != null && forwardQuery.VisitPlanArray?.Length > 0, svExpression)
//.WhereIf(!string.IsNullOrEmpty(forwardQuery.VisitPlanInfo), forwardQuery.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(forwardQuery.VisitPlanInfo))
- //.WhereIf(_userInfo.UserTypeEnumInt == (int)UserType.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site
+ //.WhereIf(_userInfo.UserTypeEnumInt == (int)UserType.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//IC 过滤负责的site
.ProjectTo(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(forwardQuery.PageIndex, forwardQuery.PageSize, forwardQuery.SortField, forwardQuery.Asc);
@@ -786,7 +786,7 @@ namespace IRaCIS.Core.Application.Image.QA
///
- /// CRC/PM 看到某次检查批次下的所有质疑和聊天内容 包括初审和复审的 。
+ /// IC/PM 看到某次检查批次下的所有质疑和聊天内容 包括初审和复审的 。
///
///
///
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index d16924b5..1e63ad67 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -99,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("当前检查批次未关闭的质疑已设置了同意IC重传影像。请在IC完成影像重传后,先关闭原质疑,再添加新的质疑。");
}
@@ -163,7 +163,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload || dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)
{
- throw new BusinessValidationFailedException("CRC已申请重传或者QC同意重传,不允许关闭该质疑。请在QC拒绝重传申请或者CRC设置重传影像后,再关闭质疑。");
+ throw new BusinessValidationFailedException("IC已申请重传或者QC同意重传,不允许关闭该质疑。请在QC拒绝重传申请或者IC设置重传影像后,再关闭质疑。");
}
@@ -372,7 +372,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
///
- /// CRC 请求回退
+ /// IC 请求回退
///
///
///
@@ -394,7 +394,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
SubjectVisitId = subjectVisitId,
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
- TalkContent = "CRC申请回退"
+ TalkContent = "IC申请回退"
});
@@ -406,7 +406,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
else
{
- return ResponseOutput.NotOk("其他CRC已申请处理,请刷新页面");
+ return ResponseOutput.NotOk("其他IC已申请处理,请刷新页面");
}
@@ -748,7 +748,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{
- return ResponseOutput.NotOk("CRC已经提交,不允许删除。");
+ return ResponseOutput.NotOk("IC已经提交,不允许删除。");
}
var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync();
@@ -1090,7 +1090,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
///
- /// CRC RequestToQC 批量提交 [需要签名 不需要对]
+ /// IC RequestToQC 批量提交 [需要签名 不需要对]
///
///
[HttpPost]
@@ -1125,11 +1125,11 @@ namespace IRaCIS.Core.Application.Image.QA
//单个提交提示信息
if (dbSubjectVisitList.Count() == 1 && dbSubjectVisitList.First().SubmitState == SubmitStateEnum.Submitted)
{
- return ResponseOutput.NotOk("当前检查批次的影像数据,已经由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips);
+ return ResponseOutput.NotOk("当前检查批次的影像数据,已经由其他IC提交。", 3, ApiResponseCodeEnum.NeedTips);
}
else if (dbSubjectVisitList.Any(t => t.SubmitState == SubmitStateEnum.Submitted))
{
- return ResponseOutput.NotOk("当前批量提交检查批次的影像数据,其中部分已由其他CRC提交。", 3, ApiResponseCodeEnum.NeedTips);
+ return ResponseOutput.NotOk("当前批量提交检查批次的影像数据,其中部分已由其他IC提交。", 3, ApiResponseCodeEnum.NeedTips);
}
//获取确认的临床数据配置
@@ -1150,13 +1150,13 @@ namespace IRaCIS.Core.Application.Image.QA
{
- ////找到需要确认的PDF 临床数据 如果没有CRC 没有上传 那么就添加一条没有文件的记录
+ ////找到需要确认的PDF 临床数据 如果没有IC 没有上传 那么就添加一条没有文件的记录
- //var crcNeedConfirmClinicalDataSetList = clinicalDataConfirmList.Where(t => t.UploadRole == UploadRole.CRC && t.ClinicalUploadType == ClinicalUploadType.PDF).ToList();
+ //var crcNeedConfirmClinicalDataSetList = clinicalDataConfirmList.Where(t => t.UploadRole == UploadRole.IC && t.ClinicalUploadType == ClinicalUploadType.PDF).ToList();
- //// 找到CRC 已经自己添加的临床PDF数据文件
+ //// 找到IC 已经自己添加的临床PDF数据文件
- //var crcAddClinicalDataIdList = _readingClinicalDataRepository.Where(t => t.ReadingId == dbSubjectVisit.Id && t.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && t.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF)
+ //var crcAddClinicalDataIdList = _readingClinicalDataRepository.Where(t => t.ReadingId == dbSubjectVisit.Id && t.ClinicalDataTrialSet.UploadRole == UploadRole.IC && t.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF)
// .Select(t => new { t.ClinicalDataTrialSetId }).ToList();
//foreach (var crcNeedConfirmClinicalDataSet in crcNeedConfirmClinicalDataSetList)
@@ -1181,9 +1181,9 @@ namespace IRaCIS.Core.Application.Image.QA
dbSubjectVisit.IsConfirmedClinicalData = true;
- // CRC 上传的基线数据签名
+ // IC 上传的基线数据签名
- await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
+ await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.IC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
{
IsSign = true,
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
@@ -1682,13 +1682,13 @@ namespace IRaCIS.Core.Application.Image.QA
if (qcChallenge.ReuploadEnum != QCChanllengeReuploadEnum.CRCRequestReupload)
{
- throw new BusinessValidationFailedException("当前重传状态不为CRC申请重传,不允许设置同意重传");
+ throw new BusinessValidationFailedException("当前重传状态不为IC申请重传,不允许设置同意重传");
}
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设置了同意重传,IC还未完成上传,当前不允许再次设置");
}
@@ -1751,7 +1751,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
///
- /// CRC 设置已经重传完成 [需要签名 不需要对]
+ /// IC 设置已经重传完成 [需要签名 不需要对]
///
///
@@ -1807,7 +1807,7 @@ namespace IRaCIS.Core.Application.Image.QA
QCChallengeId = qcChallenge.Id,
- TalkContent = "CRC已重传完成"
+ TalkContent = "IC已重传完成"
});
@@ -1838,7 +1838,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (qcChallenge.ReuploadEnum != QCChanllengeReuploadEnum.None && qcChallenge.ReuploadEnum != QCChanllengeReuploadEnum.CRCReuploaded)
{
- throw new BusinessValidationFailedException("当前质疑重传状态不为初始状态|CRC重传完成状态,不允许申请重传");
+ throw new BusinessValidationFailedException("当前质疑重传状态不为初始状态|IC重传完成状态,不允许申请重传");
}
@@ -1856,7 +1856,7 @@ namespace IRaCIS.Core.Application.Image.QA
SubjectVisitId = qcChallenge.SubjectVisitId,
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
QCChallengeId = qcChallenge.Id,
- TalkContent = "CRC申请重传/上传影像"
+ TalkContent = "IC申请重传/上传影像"
});
var isSuccess = await _qcChallengeRepository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
index 68409a9b..73edb9a2 100644
--- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
@@ -26,7 +26,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.SubmitUserName, u => u.MapFrom(s => s.SubmitUser.FullName))
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
- || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
+ || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.IC && x.ReadingClinicalDataPDFList.Count() > 0)
|| t.PreviousSurgeryList.Any() : false));
@@ -367,12 +367,12 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
- || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
+ || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.IC && x.ReadingClinicalDataPDFList.Count() > 0)
|| t.PreviousSurgeryList.Any() : false))
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t => t.NoneDicomFileList.Any())));
- //CRC 上传列表
+ //IC 上传列表
CreateMap()/*.IncludeMembers(t=>t.Subject)*/
//.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
//.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
@@ -385,7 +385,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.Sex, u => u.MapFrom(s => s.Subject.Sex))
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
.ForMember(d => d.IsHaveClinicalData, u => u.MapFrom(t => t.IsBaseLine ? t.PreviousHistoryList.Any() || t.PreviousOtherList.Any()
- || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
+ || t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.IC && x.ReadingClinicalDataPDFList.Count() > 0)
|| t.PreviousSurgeryList.Any() : false))
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
@@ -495,7 +495,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.User.FirstName + "/" + t.User.LastName));
- //CRC 质疑列表
+ //IC 质疑列表
CreateMap()
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUser.UserName))
.ForMember(d => d.PreliminaryAuditUserId, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUserId))
diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
index 3b632d39..b3d9e8fa 100644
--- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs
@@ -168,10 +168,10 @@ namespace IRaCIS.Application.Services
#endregion
- #region 临床数据CRC 相关
+ #region 临床数据IC 相关
///
- /// 获取CRC上传的文件
+ /// 获取IC上传的文件
///
///
///
@@ -187,7 +187,7 @@ namespace IRaCIS.Application.Services
List cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
- .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
+ .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.IC)
.Select(x => new GetCRCClinicalDataOutDto()
{
Id = x.Id,
@@ -235,12 +235,12 @@ namespace IRaCIS.Application.Services
///
- /// 添加CRC数据类型
+ /// 添加IC数据类型
///
///
private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto)
{
- var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
+ var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.UploadRole == UploadRole.IC && x.IsConfirm)
.WhereIf(inDto.IsBaseline, x => x.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.Select(x => x.Id).ToListAsync();
@@ -325,7 +325,7 @@ namespace IRaCIS.Application.Services
//判断是否基线
if (isBaseLine)
{
- //CRC 的自动签名 不用管 只用处理PM 的就好
+ //IC 的自动签名 不用管 只用处理PM 的就好
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && t.UploadRole == UploadRole.PM).Count();
}
else
@@ -333,7 +333,7 @@ namespace IRaCIS.Application.Services
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.SubjectVisit && t.UploadRole == UploadRole.PM).Count();
}
- //可能仅仅CRC 基线 没有PM
+ //可能仅仅IC 基线 没有PM
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
{
@@ -363,7 +363,7 @@ namespace IRaCIS.Application.Services
needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
}
- //可能仅仅CRC 基线 没有PM
+ //可能仅仅IC 基线 没有PM
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
{
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
@@ -577,7 +577,7 @@ namespace IRaCIS.Application.Services
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
{
- inDto.UploadRole = UploadRole.CRC;
+ inDto.UploadRole = UploadRole.IC;
}
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
@@ -633,7 +633,7 @@ namespace IRaCIS.Application.Services
TrialClinicalDataSetCriteriaList=x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
Id = x.Id,
UploadRole = x.ClinicalDataTrialSet.UploadRole,
- IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
+ IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.IC,
FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
{
Id = y.Id,
@@ -686,7 +686,7 @@ namespace IRaCIS.Application.Services
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
- //.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
+ //.WhereIf(inDto.UploadRole == UploadRole.IC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.IC)
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto()
@@ -700,7 +700,7 @@ namespace IRaCIS.Application.Services
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
Id = x.Id,
UploadRole = x.ClinicalDataTrialSet.UploadRole,
- IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
+ IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.IC,
IsBlind = x.IsBlind,
IsComplete = x.IsComplete,
FileCount = x.FileCount,
@@ -717,7 +717,7 @@ namespace IRaCIS.Application.Services
});
var result = await resultQuery.ToListAsync();
- //result = result.Where(x => !(x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
+ //result = result.Where(x => !(x.UploadRole == UploadRole.IC && x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList();
return result;
}
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
index a962ce59..e6eb05d7 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
@@ -349,7 +349,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string ClinicalUploadTypeName { get; set; }
///
- /// 是否为CRC上传
+ /// 是否为IC上传
///
public bool IsCRCUpload { get; set; }
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
index a263efca..8a8f6fa2 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
@@ -84,7 +84,7 @@ namespace IRaCIS.Application.Services
- /// Setting页面 为 site 勾选CRC用户列表
+ /// Setting页面 为 site 勾选IC用户列表
[HttpPost]
public async Task> GetSiteCRCScreeningList(SiteCRCQuery param)
{
@@ -187,7 +187,7 @@ namespace IRaCIS.Application.Services
#endregion
- #region 自动添加CRC 到Site 里
+ #region 自动添加IC 到Site 里
if (await _repository.AnyAsync(t => t.Id == item.UserId && t.UserTypeRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator))
{
await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = Guid.Parse("db83e2f5-1f2e-408f-a45b-08d8e1dcace0"), UserId =item.UserId });
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
index 07548116..ceb4cb2f 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
@@ -177,7 +177,7 @@ namespace IRaCIS.Core.Application.Services
}
- /// 获取某一Site下面的负责的CRC列表
+ /// 获取某一Site下面的负责的IC列表
[HttpGet, Route("{trialId:guid}/{siteId:guid}")]
public async Task> GetTrialSiteCRCList(Guid trialId, Guid siteId)
{
@@ -250,7 +250,7 @@ namespace IRaCIS.Core.Application.Services
//if (await _repository.AnyAsync(t => t.TrialId == trialId && t.SiteId == siteId))
//{
- // return ResponseOutput.NotOk("The site has been associated with CRC, and couldn't be deleted.");
+ // return ResponseOutput.NotOk("The site has been associated with IC, and couldn't be deleted.");
//}
if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId))
@@ -284,7 +284,7 @@ namespace IRaCIS.Core.Application.Services
- /// 批量添加Site下 CRC的负责人
+ /// 批量添加Site下 IC的负责人
[HttpPost]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
@@ -298,7 +298,7 @@ namespace IRaCIS.Core.Application.Services
return ResponseOutput.Result(true);
}
- /// 删除CRC人员
+ /// 删除IC人员
[HttpDelete, Route("{id:guid}/{trialId:guid}/{isDelete:bool}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
@@ -312,14 +312,14 @@ namespace IRaCIS.Core.Application.Services
}
///
- /// 获取项目下的 site 下拉框数据 CRC只看到他负责的
+ /// 获取项目下的 site 下拉框数据 IC只看到他负责的
///
///
///
[HttpGet("{trialId:guid}")]
public async Task> GetTrialSiteSelect(Guid trialId)
{
- //CRC只看到他负责的
+ //IC只看到他负责的
var list = await _trialSiteRepository.Where(t => t.TrialId == trialId)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.CRCUserList.Any(t => t.UserId == _userInfo.Id))
@@ -332,7 +332,7 @@ namespace IRaCIS.Core.Application.Services
public async Task> GetTrialSiteCodeSelect(Guid trialId, bool isIncludeVirtualSite = true)
{
- //CRC只看到他负责的
+ //IC只看到他负责的
var list = await _trialSiteRepository.Where(t => t.TrialId == trialId)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.CRCUserList.Any(t => t.UserId == _userInfo.Id))
@@ -360,7 +360,7 @@ namespace IRaCIS.Core.Application.Services
if (await _repository.AnyAsync(t => t.TrialId == trialId && t.SiteId == siteId))
{
- return ResponseOutput.NotOk("The site has been associated with CRC, and couldn't be deleted.");
+ return ResponseOutput.NotOk("The site has been associated with IC, and couldn't be deleted.");
}
if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId))
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
index 9c790307..a4c83fd7 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
@@ -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的患者
+ // IC 只负责他管理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);
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
index 258fc6c0..c0114583 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
@@ -113,7 +113,7 @@ namespace IRaCIS.Core.Application.Services
dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2, verifyExp3);
- //var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == svCommand.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
+ //var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == svCommand.TrialId && x.UploadRole == UploadRole.IC && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
//.Select(x => x.Id).ToListAsync();
diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
index 1cea4851..a61b2687 100644
--- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
+++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
@@ -61,7 +61,7 @@ namespace IRaCIS.Core.Application.Triggers
// 触发临床数据
if (context.ChangeType == ChangeType.Added)
{
- var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm)
+ var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.IC && x.IsConfirm)
.Select(x => new
{
diff --git a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
index 110cfc1d..a65dc033 100644
--- a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
+++ b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
@@ -228,7 +228,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
dbSV.CheckState = CheckStateEnum.CVIng;
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
- //讲核查结果发送消息给CRC
+ //讲核查结果发送消息给IC
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog()
{
SubjectVisitId = subjectVisitId,
diff --git a/IRaCIS.Core.Domain.Share/QC/CheckChanllengeTypeEnum.cs b/IRaCIS.Core.Domain.Share/QC/CheckChanllengeTypeEnum.cs
index d242c1f2..2e4725ee 100644
--- a/IRaCIS.Core.Domain.Share/QC/CheckChanllengeTypeEnum.cs
+++ b/IRaCIS.Core.Domain.Share/QC/CheckChanllengeTypeEnum.cs
@@ -9,10 +9,10 @@ namespace IRaCIS.Core.Domain.Share
//不可用
None = 0,
- //CRC 已回复 PM 待回复
+ //IC 已回复 PM 待回复
CRCWaitPMReply = 1,
- //PM 已回复 CRC 待回复
+ //PM 已回复 IC 待回复
PMWaitCRCReply = 2,
Closed = 3
diff --git a/IRaCIS.Core.Domain.Share/QC/RequestBackStateEnum.cs b/IRaCIS.Core.Domain.Share/QC/RequestBackStateEnum.cs
index 9ed468f7..17fab1bc 100644
--- a/IRaCIS.Core.Domain.Share/QC/RequestBackStateEnum.cs
+++ b/IRaCIS.Core.Domain.Share/QC/RequestBackStateEnum.cs
@@ -10,10 +10,10 @@ namespace IRaCIS.Core.Domain.Share
NotRequest = 0,
- //CRC 申请,PM待同意
+ //IC 申请,PM待同意
CRC_RequestBack = 1,
- //PM 已同意 CRC
+ //PM 已同意 IC
PM_AgressBack = 2,
PM_NotAgree=3,
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index 4b1db2f4..5fdd29ea 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -803,9 +803,9 @@ namespace IRaCIS.Core.Domain.Share
public enum UploadRole
{
///
- /// CRC
+ /// IC
///
- CRC = 0,
+ IC = 0,
///
/// PM
diff --git a/IRaCIS.Core.Domain.Share/User/UserType.cs b/IRaCIS.Core.Domain.Share/User/UserType.cs
index 10c1e767..a32ac6fe 100644
--- a/IRaCIS.Core.Domain.Share/User/UserType.cs
+++ b/IRaCIS.Core.Domain.Share/User/UserType.cs
@@ -8,7 +8,7 @@
//PM
ProjectManager=1,
- //CRC
+ //IC
ClinicalResearchCoordinator=2,
//IQC
diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql
index ae25ec14..3c755841 100644
--- a/IRaCIS.Core.Domain/SQLFile/Test.sql
+++ b/IRaCIS.Core.Domain/SQLFile/Test.sql
@@ -282,7 +282,7 @@ inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
)
=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id
where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1
- -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署
+ -- 有可能仅仅IC Subject级别 需要签名 IC自动签名了 没有PM需要签名的文档 此时应该设置为已签署
)
--处理基线脏数据
@@ -297,7 +297,7 @@ inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
)
!=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id
where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1
- -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署
+ -- 有可能仅仅IC Subject级别 需要签名 IC自动签名了 没有PM需要签名的文档 此时应该设置为已签署
)
@@ -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 没有
+ -- 非基线 可能只有IC 检查批次级别 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 没有
+ -- 非基线 可能只有IC 检查批次级别 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
diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
index c4127411..cf320e06 100644
--- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
+++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
@@ -202,7 +202,7 @@ namespace IRaCIS.Core.Domain.Models
//// 一个检查批次可以被多个参与者 查看
//public List TrialUsers { get; set; }
- ////一个检查批次 对应该Site下的多个CRC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名
+ ////一个检查批次 对应该Site下的多个IC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名
//public List TrialSiteUserList { get; set; }
[JsonIgnore]