Test.EIImageViewer
parent
469a2e7362
commit
4309ba71e9
|
@ -0,0 +1,16 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<ApplicationIcon>icons8-access-control-64.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="icons8-access-control-64.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,120 @@
|
||||||
|
namespace EI_Image_Viewer_Activation
|
||||||
|
{
|
||||||
|
partial class Main
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,348 @@
|
||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAP8BdW+EVXVvhOB0b4TldG+EXgAA/wEAAAAAAAAAAPLm7Cny5uwpAAAAAAAA
|
||||||
|
AAAAAAAAc3CETXVvhOB0b4TldW6EZn9/fwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzboIzdG+Ew3Vug/Z0boOIdXWJDQAAAAAAAAAA8OHwEfLm
|
||||||
|
65Hx5ur78ebq/fLn6qLz5+cWAAAAAAAAAAB/Zn8KdW+Ed3RvhPN1b4TKdm2DOgAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBwhBl0b4OZdW+D/HRvhLNzbIMhAAAAAAAA
|
||||||
|
AAD///8E8OfpbfLn6u3x5+rW8OXpR/Dl6Ufx5+rW8ufq7fDn6W3///8EAAAAAAAAAAB2bX8cdG+EonRu
|
||||||
|
hP11b4SqcnKDHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZmaZBXVugm91b4TxdW+EznNv
|
||||||
|
gz4AAAAAAAAAAAAAAADz5+tC8ebr0vLn6u/y5+t3/9T/BgAAAAAAAAAA////BPLm62bx5+vr8ufq2PHm
|
||||||
|
6koAAAAAAAAAAAAAAABzb4E3dG+Dx3Vug/R1b4OAf19/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3CETXVv
|
||||||
|
hNx0b4PsdW6Cb1VVqgMAAAAAAAAAAPDp6STx5+uq8ebq/fLn6qLz5+cWAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAA8OLwEvLm65Hx5ur88ebqu/Lm7CoAAAAAAAAAAH9/fwJ0b4RedG+D6HVuhOJ0b4ReAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABybIUodW6DtnVvg/p1boORd3eIDwAAAAAAAAAA5+fnC/Hn64Dx5+v48ebqv/Tp6S8AAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ubsKfLn67fx5ur68ubrke7u7g8AAAAAAAAAAH9q
|
||||||
|
fwx1b4OAdW+D+HRvg750boUuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAHhphxF1boORdG6E+3VuhLt2cIIrAAAAAAAAAAD///8B8ebsXvHm6+fx5+ri8ebsXgAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8efrTfLm
|
||||||
|
693y5+rs8ejqb////wMAAAAAAAAAAHVugiV1b4SqdG6E/XRvhKJzc38WAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAf39/BHVuhGZ0b4PqdW6D2XNwhEsAAAAAAAAAAAAAAADw5+w28ubqx/Ln
|
||||||
|
6/Xx5+uA/9/fCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAD/1P8G8ejqb/Lm6vHy5+vN8uXqPQAAAAAAAAAAAAAAAHVuhUN1b4PTdG+D7nVv
|
||||||
|
hHd/f38GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3CDQnRuhNJ1boTvdW+Ed39/fwYAAAAAAAAAAPXi
|
||||||
|
7Bvy5+qi8ebq/fHn66ru5e4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD16+sa8efrmfHm6v3y5uuz7+fnIAAA
|
||||||
|
AAAAAAAAf39/BHVuhGZ1boTrdG6E2HVugkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXCEMnVvhP91boSWcnJ/FAAA
|
||||||
|
AAAAAAAA/+LiCfLn63fy5uvz8ufqy/Ll6TsAAAAAAAAAAAAAAADMmf8Fu53wIrud8CK7nfAiu53wIrud
|
||||||
|
8CK7nfAiu53wIrud8CK7nfAiu53wIrud8CK7nfAiu53wIrud8CK7nfAiu53wIsyZ/wUAAAAAAAAAAAAA
|
||||||
|
AADw5us08efrxPHn6/bx5uqI6enpDAAAAAAAAAAAcnJ/FHVuhJZ1b4T/dXCEMgAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVt
|
||||||
|
hT91b4T/AAD/AQAAAAAAAAAA8efrTfLm69/x5uvm8ubrZv///wIAAAAAAAAAAAAAAAAAAAAAvJntobya
|
||||||
|
7f+8mu3/vJrt/7ya7f+8mu3/vJrt/7ya7f+8mu3/vJrt/7ya7f+8mu3/vJrt/7ya7f+8mu3/vJrt/7ya
|
||||||
|
7f+8mu2gAAAAAAAAAAAAAAAAAAAAAP///wHz5+pV8ufq4fHn6uTx5uxe////AQAAAAAAAP8BdW+E/3Vt
|
||||||
|
hT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA/wEAAAAA8ujqevHn6/fx5uuF6enpDAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAALyZ7bC8mu2du53wIrud8CK7nfAiu53wIrud8CK7nfAiu53wIrud8CK7nfAiu53wIrud
|
||||||
|
8CK7nfAiu53wIrud8CK8mu2dvJntsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp6Qzx5uuF8efr9/Lo
|
||||||
|
6noAAAAAAAD/AXVvhP91bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm65Lx5+usAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8me2wvJrtjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJrtjryZ7bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAPHn66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVthT91b4T/AAD/AQAA
|
||||||
|
AADy5uuS8efrrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJntsLya7Y4AAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALya7Y68me2wAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx5+us8ubrkgAAAAAAAP8BdW+E/3VthT8AAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAB1bYU/dW+E/wAA/wEAAAAA8ubrkvHn66wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyZ
|
||||||
|
7bC8mu2OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu5nsRLuZ7EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAC8mu2OvJntsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8efrrPLm65IAAAAAAAD/AXVv
|
||||||
|
hP91bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm65Lx5+usAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAC8me2wvJrtjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALuZ7Z+7me2fAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAvJrtjryZ7bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHn
|
||||||
|
66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVthT91b4T/AAD/AQAAAADy5uuS8efrrAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJntsLya7Y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAC7me2fu5ntnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALya7Y68me2wAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAADx5+us8ubrkgAAAAAAAP8BdW+E/3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA
|
||||||
|
/wEAAAAA8ubrkvHn66wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyZ7bC8mu2OAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAu5ntn7uZ7Z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8mu2OvJntsAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8efrrPLm65IAAAAAAAD/AXVvhP91bYU/AAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm65Lx5+usAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAC8me2wvJrtjgAAAAAAAAAAAAAAAAAAAAAAAAAAzJn/BbyZ7LO8meyzv3//BAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAvJrtjryZ7bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHn66zy5uuSAAAAAAAA
|
||||||
|
/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVthT91b4T/AAD/AQAAAADy5uuS8efrrAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAvJntsLya7Y4AAAAAAAAAAAAAAAAAAAAAv5/vELua7NC7me33u5nt97yZ
|
||||||
|
7M+/n+8QAAAAAAAAAAAAAAAAAAAAALya7Y68me2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AADx5+us8ubrkgAAAAAAAP8BdW+E/3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA/wEAAAAA8ubrkvHn
|
||||||
|
66wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyZ7bC8mu2OAAAAAAAAAAAAAAAAAAAAALyZ
|
||||||
|
7Hu7me3bw5bwEbib8BK7muzcvJrsegAAAAAAAAAAAAAAAAAAAAC8mu2OvJntsAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAA8efrrPLm65IAAAAAAAD/AXVvhP91bYU/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3Vv
|
||||||
|
hP8AAP8BAAAAAPLm65Lx5+usAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8me2wvJrtjgAA
|
||||||
|
AAAAAAAAAAAAAAAAAAC8muyVu5ntqwAAAAAAAAAAvJrtrLya7JUAAAAAAAAAAAAAAAAAAAAAvJrtjryZ
|
||||||
|
7bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHn66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAHVthT91b4T/AAD/AQAAAADy5uuS8efrrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAvJntsLya7Y4AAAAAAAAAAAAAAAAAAAAAvZvtSryZ7Pm8mu13u5nueLua7Pq8me1JAAAAAAAA
|
||||||
|
AAAAAAAAAAAAALya7Y68me2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx5+us8ubrkgAA
|
||||||
|
AAAAAP8BdW+E/3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA/wEAAAAA8ubrkvHn66wAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALyZ7bC8mu2OAAAAAAAAAAAAAAAAAAAAAAAAAAC7m+1mu5ns1LyZ
|
||||||
|
7NO6mu1lAAAAAAAAAAAAAAAAAAAAAAAAAAC8mu2OvJntsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAA8efrrPLm65IAAAAAAAD/AXVvhP91bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm
|
||||||
|
65Lx5+usAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8me2wvJrtjgAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJrtjryZ7bAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHn66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVt
|
||||||
|
hT91b4T/AAD/AQAAAADy5uuS8efrrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJntsLya
|
||||||
|
7Y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALya
|
||||||
|
7Y68me2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx5+us8ubrkgAAAAAAAP8BdW+E/3Vt
|
||||||
|
hT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA/wEAAAAA8ubrkvHn66wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAALyZ7bC8mu2OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAC8mu2OvJntsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8efrrPLm
|
||||||
|
65IAAAAAAAD/AXVvhP91bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm65Lx5+usAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8me2wvJnt2bua7aq7mu2qu5rtqrua7aq7mu2qu5rtqrua
|
||||||
|
7aq7mu2qu5rtqrua7aq7mu2qu5rtqrua7aq7mu2qvJnt2byZ7bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAPHn66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVthT91b4T/AAD/AQAA
|
||||||
|
AADy5uuS8efrrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJntSbyZ7Jm8meyZvJrs/bya
|
||||||
|
7LS8meyZvJnsmbyZ7Jm8meyZvJnsmbyZ7Jm8meyZvJnsmbya7LS8muz9vJnsmbyZ7Jm8me1JAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx5+us8ubrkgAAAAAAAP8BdW+E/3VthT8AAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAB1bYU/dW+E/wAA/wEAAAAA8ubrkvHn66wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAALua7Pq8m+xFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8m+xFu5rs+gAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8efrrPLm65IAAAAAAAD/AXVv
|
||||||
|
hP91bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAdW2FP3VvhP8AAP8BAAAAAPLm65Lx5+usAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7muz6vJvsRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAvJvsRbua7PoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHn
|
||||||
|
66zy5uuSAAAAAAAA/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVthT91b4T/AAD/AQAAAADy5uuS8efrrAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJrt8b2Z604AAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALua60+8muzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAADx5+us8ubrkgAAAAAAAP8BdW+E/3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW+E/wAA
|
||||||
|
/wEAAAAA8ujqevHn6/fx5uuF6enpDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALuZ
|
||||||
|
7cy7mex9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8mux/vJrtygAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp6Qzx5uuF8efr9/Lo6noAAAAAAAD/AXVvhP91bYU/AAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAdW2FP3VvhP8AAP8BAAAAAAAAAADx5+tN8ubr3/Hm6uXy5utm////AgAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAC8mu13u5nt47mi5wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/lOkMvJnt5b2Z
|
||||||
|
7XQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AfPn6lXy5+rh8efq5PHm7F7///8BAAAAAAAA
|
||||||
|
/wF1b4T/dW2FPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVwhDJ1b4T/dW6ElnJyfxQAAAAAAAAAAP/i4gny5+t38ubr8/Ln
|
||||||
|
6svx6ek6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuaLnC7ua7Ny7mu2xxo3iCQAAAAAAAAAAAAAAAAAA
|
||||||
|
AACymeUKvJnss7ya7dqymeUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ObrM/Hn68Tx5+v28ebqiOnp
|
||||||
|
6QwAAAAAAAAAAHJyfxR1boSWdW+E/3VwhDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3CDQnRuhNJ1boTvdW+Ed39/
|
||||||
|
fwYAAAAAAAAAAPXi7Bvy5+qi8ebq/fHn66ru5e4eAAAAAAAAAAAAAAAAAAAAAAAAAAC9nOsnu5rs37yZ
|
||||||
|
7dm7me5pu5zvMbuc7zG7me5pvJrt2ryZ7N67muomAAAAAAAAAAAAAAAAAAAAAAAAAAD06uoZ8efrmfHm
|
||||||
|
6v3y5uuz7+fnIAAAAAAAAAAAf39/BHVuhGZ1boTrdG6E2HVugkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAB/f38EdW6EZnRvg+p1boPZc3CESwAAAAAAAAAAAAAAAPDn7Dby5urH8ufr9fHn64D/398IAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAMOW8BG7meyIu5nt47ya7f+8mu3/vJns4rya7Ie/n+8QAAAAAAAAAAAAAAAAAAAAAP/U
|
||||||
|
/wbx6Opv8ubq8fHn687y5eo9AAAAAAAAAAAAAAAAdW6FQ3RuhNJ0b4PudW+Ed39/fwYAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxcX8SdW6DkXRuhPt1boS7c22FKgAAAAAAAAAA////AfHm
|
||||||
|
7F7x5uvn8efq4vHm7F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/lOkMv5TpDAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAPHn603y5uvd8ufq7PHo6m////8DAAAAAAAAAAB4cYYkdW+EqnRuhP10b4Sic3N/FgAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABybIUodW6DtnVv
|
||||||
|
g/p1boORd3eIDwAAAAAAAAAA5+fnC/Hn64Dx5+v48ebqv/Tp6S8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAA8uXrKPLn67fx5ur68ubrke7u7g8AAAAAAAAAAHNziwt1b4OAdW+D+HRv
|
||||||
|
g750boUuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAABzcIRNdW+E3HRvg+x1boJvVVWqAwAAAAAAAAAA8OnpJPHn66rx5ur98ufqovPn
|
||||||
|
5xYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw4vAS8ubrkfHm6vvx5uq78ubsKgAAAAAAAAAAf39/AnRv
|
||||||
|
hF50b4PodW6E4nRvhF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZmmQV1boJvdW+E8XVvhM5zb4M+AAAAAAAA
|
||||||
|
AAAAAAAA8+jrQ/Hm69Ly5+rv8ufrd//U/wYAAAAAAAAAAP///wTy5utm8efr6/Ln6tjx5+pLAAAAAAAA
|
||||||
|
AAAAAAAAdnGENnRvg8d1boP0dW+DgH9ffwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBw
|
||||||
|
hBl0b4OZdG6E/XRvhLNzbIMhAAAAAAAAAAD///8E8ubrZvHn6+ry5+vZ8efqS/Po60Px5urT8ufq7vLn
|
||||||
|
63f/1P8GAAAAAAAAAABxcYQbdG+EonRuhP11b4Sqd26IHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNugjN1boPEdW6D9nRug4h1dYkNAAAAAAAAAADw4vAS8ubrkfHm
|
||||||
|
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=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,17 @@
|
||||||
|
namespace EI_Image_Viewer_Activation
|
||||||
|
{
|
||||||
|
internal static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -25,6 +25,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Install", "Install\Install.
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnInstall", "UnInstall\UnInstall.csproj", "{60B9AC72-5744-4517-93A5-A1ECD573A529}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnInstall", "UnInstall\UnInstall.csproj", "{60B9AC72-5744-4517-93A5-A1ECD573A529}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EI_Image_Viewer_Activation", "EI_Image_Viewer_Activation\EI_Image_Viewer_Activation.csproj", "{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -95,6 +97,14 @@ Global
|
||||||
{60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
|
||||||
{60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|x86.Build.0 = Release|Any CPU
|
{60B9AC72-5744-4517-93A5-A1ECD573A529}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{1D8AC441-D578-4B38-BCEE-686BD5D59E5A}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -329,7 +329,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC RequestToQC 批量提交
|
/// IC RequestToQC 批量提交
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="opt"></param>
|
/// <param name="opt"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -392,7 +392,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 设置已经重传完成
|
/// IC 设置已经重传完成
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpPost, Route("Inspection/QCOperation/SetReuploadFinished")]
|
[HttpPost, Route("Inspection/QCOperation/SetReuploadFinished")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
|
@ -434,7 +434,6 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("ClinicalData/UploadVisitClinicalData/{trialId:guid}/{subjectVisitId:guid}")]
|
[HttpPost("ClinicalData/UploadVisitClinicalData/{trialId:guid}/{subjectVisitId:guid}")]
|
||||||
[DisableRequestSizeLimit]
|
[DisableRequestSizeLimit]
|
||||||
[Authorize(Policy = IRaCISPolicy.CRC)]
|
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
|
|
||||||
public async Task<IResponseOutput> UploadVisitClinicalData(Guid subjectVisitId)
|
public async Task<IResponseOutput> UploadVisitClinicalData(Guid subjectVisitId)
|
||||||
|
@ -672,7 +671,6 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
[RequestSizeLimit(1_073_741_824)]
|
[RequestSizeLimit(1_073_741_824)]
|
||||||
[HttpPost("NoneDicomStudy/UploadNoneDicomFile/{trialId:guid}/{subjectVisitId:guid}/{noneDicomStudyId:guid}/{studyMonitorId:guid}")]
|
[HttpPost("NoneDicomStudy/UploadNoneDicomFile/{trialId:guid}/{subjectVisitId:guid}/{noneDicomStudyId:guid}/{studyMonitorId:guid}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
[Authorize(Policy = IRaCISPolicy.CRC)]
|
|
||||||
public async Task<IResponseOutput> UploadNoneDicomFile(IFormCollection formCollection, Guid subjectVisitId, Guid noneDicomStudyId, Guid studyMonitorId,
|
public async Task<IResponseOutput> UploadNoneDicomFile(IFormCollection formCollection, Guid subjectVisitId, Guid noneDicomStudyId, Guid studyMonitorId,
|
||||||
[FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
|
[FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
|
||||||
{
|
{
|
||||||
|
|
|
@ -171,7 +171,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCRequestToQC(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Contracts.CRCRequestToQCCommand})">
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.CRCRequestToQC(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Contracts.CRCRequestToQCCommand})">
|
||||||
<summary>
|
<summary>
|
||||||
CRC RequestToQC 批量提交
|
IC RequestToQC 批量提交
|
||||||
</summary>
|
</summary>
|
||||||
<param name="opt"></param>
|
<param name="opt"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
@ -195,7 +195,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SetReuploadFinished(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Contracts.CRCReuploadFinishedCommand})">
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.SetReuploadFinished(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Contracts.CRCReuploadFinishedCommand})">
|
||||||
<summary>
|
<summary>
|
||||||
CRC 设置已经重传完成
|
IC 设置已经重传完成
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.UpdateTrialState(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Inspection.DTO.UpdateTrialStateDto})">
|
<member name="M:IRaCIS.Core.API.Controllers.InspectionController.UpdateTrialState(IRaCIS.Core.Application.Service.Inspection.DTO.DataInspectionDto{IRaCIS.Core.Application.Service.Inspection.DTO.UpdateTrialStateDto})">
|
||||||
|
|
|
@ -12,13 +12,13 @@ namespace IRaCIS.Core.API
|
||||||
{
|
{
|
||||||
services.AddAuthorization(options =>
|
services.AddAuthorization(options =>
|
||||||
{
|
{
|
||||||
//影像质控策略 只允许 CRC IQC进行操作
|
//影像质控策略 只允许 IC IQC进行操作
|
||||||
options.AddPolicy(IRaCISPolicy.CRC_IQC, policyBuilder =>
|
options.AddPolicy(IRaCISPolicy.CRC_IQC, policyBuilder =>
|
||||||
{
|
{
|
||||||
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString(), ((int)UserTypeEnum.IQC).ToString());
|
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString(), ((int)UserTypeEnum.IQC).ToString());
|
||||||
});
|
});
|
||||||
|
|
||||||
//一致性核查策略 只允许 CRC PM APM 进行操作
|
//一致性核查策略 只允许 IC PM APM 进行操作
|
||||||
options.AddPolicy(IRaCISPolicy.PM_APM_CRC, policyBuilder =>
|
options.AddPolicy(IRaCISPolicy.PM_APM_CRC, policyBuilder =>
|
||||||
{
|
{
|
||||||
policyBuilder.RequireClaim("userTypeEnumInt", ((int)UserTypeEnum.ProjectManager).ToString(), ((int)UserTypeEnum.ClinicalResearchCoordinator).ToString(), ((int)UserTypeEnum.APM).ToString());
|
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());
|
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 =>
|
options.AddPolicy(IRaCISPolicy.PM_APM_CRC_QC, policyBuilder =>
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,17 +55,17 @@
|
||||||
// NoticeTypeEnum = NoticeType.NotNeedNotice,
|
// NoticeTypeEnum = NoticeType.NotNeedNotice,
|
||||||
// NeedDeal = false,
|
// NeedDeal = false,
|
||||||
// StudyStatusStr = "Uploaded",
|
// StudyStatusStr = "Uploaded",
|
||||||
// Message = $"CRC : {_userInfo.RealName} has uploaded {study.StudyCode} ",
|
// Message = $"IC : {_userInfo.RealName} has uploaded {study.StudyCode} ",
|
||||||
// SendTime = DateTime.Now,
|
// SendTime = DateTime.Now,
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// #region 处理QA通知模块
|
// #region 处理QA通知模块
|
||||||
|
|
||||||
// //查询项目的参与者 和 负责site下CRC用户
|
// //查询项目的参与者 和 负责site下IC用户
|
||||||
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
||||||
|
|
||||||
// // 找到该study 关联Site 下的CRC
|
// // 找到该study 关联Site 下的IC
|
||||||
|
|
||||||
// var crcList = _userTrialSiteRepository.Where(t =>
|
// var crcList = _userTrialSiteRepository.Where(t =>
|
||||||
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
|
// 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)
|
// if (studyStatus.Status == (int)StudyStatus.QARequested)
|
||||||
// {
|
// {
|
||||||
// //找出当前操作的CRC
|
// //找出当前操作的IC
|
||||||
// //PM 或者admin可以代替CRC角色 不能从CRC列表中查询用户
|
// //PM 或者admin可以代替IC角色 不能从IC列表中查询用户
|
||||||
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
|
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
|
||||||
|
|
||||||
// var notice = new QANotice()
|
// var notice = new QANotice()
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
// NeedDeal = true,
|
// NeedDeal = true,
|
||||||
// StudyStatusStr = "QA Requested",
|
// StudyStatusStr = "QA Requested",
|
||||||
// Message =
|
// 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,
|
// SendTime = DateTime.Now,
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
@ -128,18 +128,18 @@
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// // QA =>CRC 向CRC推送消息影像有问题 同时作为 requestToQA 的边界
|
// // QA =>IC 向IC推送消息影像有问题 同时作为 requestToQA 的边界
|
||||||
// else if (studyStatus.Status == (int)StudyStatus.QAing)
|
// else if (studyStatus.Status == (int)StudyStatus.QAing)
|
||||||
// {
|
// {
|
||||||
// //找出当前操作的QA 如果是pm 或者admin 代替操作 此时会有问题 所以 谁代替,就以谁的名义执行
|
// //找出当前操作的QA 如果是pm 或者admin 代替操作 此时会有问题 所以 谁代替,就以谁的名义执行
|
||||||
// //var currentQA = qaList.First(t => t.UserId == _userInfo.Id);
|
// //var currentQA = qaList.First(t => t.UserId == _userInfo.Id);
|
||||||
// //var currentQA = trialUserList.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 =>
|
// var siteCRCList = _userTrialSiteRepository.Where(t =>
|
||||||
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
|
// 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,
|
// NoticeTypeEnum = NoticeType.QA_InQA_NoticeCRC,
|
||||||
// NeedDeal = true,
|
// NeedDeal = true,
|
||||||
// StudyStatusStr = "In QA",
|
// StudyStatusStr = "In QA",
|
||||||
// Message = $"QA -> CRC : {_userInfo.RealName} inquiry {study.StudyCode} ",
|
// Message = $"QA -> IC : {_userInfo.RealName} inquiry {study.StudyCode} ",
|
||||||
// SendTime = DateTime.Now,
|
// SendTime = DateTime.Now,
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
// ToUserType = t.UserTypeRole.UserTypeShortName
|
// ToUserType = t.UserTypeRole.UserTypeShortName
|
||||||
// }));
|
// }));
|
||||||
|
|
||||||
// //添加 发送给CRC的消息 消息和CRC是 一对多
|
// //添加 发送给IC的消息 消息和IC是 一对多
|
||||||
// _qaNoticeRepository.Add(notice);
|
// _qaNoticeRepository.Add(notice);
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,7 +228,7 @@
|
||||||
|
|
||||||
// _qaNoticeRepository.Add(notice);
|
// _qaNoticeRepository.Add(notice);
|
||||||
|
|
||||||
// //处理 消息 标记已处理 存在意外情况 qa发给CRC的 但是qa里面设置了 通过或者不通过 此时qa发送的消息也设置为已处理
|
// //处理 消息 标记已处理 存在意外情况 qa发给IC的 但是qa里面设置了 通过或者不通过 此时qa发送的消息也设置为已处理
|
||||||
// var needDealNoticeList = _qaNoticeRepository.AsQueryable()
|
// var needDealNoticeList = _qaNoticeRepository.AsQueryable()
|
||||||
// .Where(t => t.SubjectVisitId == study.Id && t.NeedDeal &&
|
// .Where(t => t.SubjectVisitId == study.Id && t.NeedDeal &&
|
||||||
// (t.NoticeTypeEnum == NoticeType.CRC_RequestToQA_NoticeQA ||
|
// (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)
|
// else if (studyStatus.Status == (int)StudyStatus.QAFInishNotPass)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
|
@ -298,24 +298,24 @@
|
||||||
// var study = _studyRepository.FirstOrDefault(t => t.Id == studyId);
|
// var study = _studyRepository.FirstOrDefault(t => t.Id == studyId);
|
||||||
// var status = study.Status;
|
// var status = study.Status;
|
||||||
|
|
||||||
// //处理CRC 重传时 QA消息
|
// //处理IC 重传时 QA消息
|
||||||
|
|
||||||
// if (status == (int)StudyStatus.QAing)
|
// if (status == (int)StudyStatus.QAing)
|
||||||
// {
|
// {
|
||||||
// //查询项目的参与者 和 负责site下CRC用户
|
// //查询项目的参与者 和 负责site下IC用户
|
||||||
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
||||||
|
|
||||||
// // 找到该study 关联Site 下的CRC
|
// // 找到该study 关联Site 下的IC
|
||||||
|
|
||||||
// var crcList = _userTrialSiteRepository.Where(t =>
|
// var crcList = _userTrialSiteRepository.Where(t =>
|
||||||
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
|
// 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();
|
// 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)
|
// //if (_userInfo.UserTypeEnumInt == (int)UserType.ClinicalResearchCoordinator)
|
||||||
// {
|
// {
|
||||||
// //PM 或者admin可以代替CRC角色 不能从CRC列表中查询用户
|
// //PM 或者admin可以代替IC角色 不能从IC列表中查询用户
|
||||||
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
|
// //var currentCRC = trialUserList.First(t => t.UserId == _userInfo.Id);
|
||||||
|
|
||||||
// var notice = new QANotice()
|
// var notice = new QANotice()
|
||||||
|
@ -330,7 +330,7 @@
|
||||||
// FromUserType = _userInfo.UserTypeShortName,
|
// FromUserType = _userInfo.UserTypeShortName,
|
||||||
// NoticeTypeEnum = NoticeType.CRC_ReUpload_NoticeQA,
|
// NoticeTypeEnum = NoticeType.CRC_ReUpload_NoticeQA,
|
||||||
// NeedDeal = true,
|
// 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
|
// SendTime = DateTime.Now
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
@ -345,7 +345,7 @@
|
||||||
|
|
||||||
// _qaNoticeRepository.Add(notice);
|
// _qaNoticeRepository.Add(notice);
|
||||||
|
|
||||||
// //这里作为 QA 设置 Inqa 状态的回复 或者QA和CRC对话的
|
// //这里作为 QA 设置 Inqa 状态的回复 或者QA和IC对话的
|
||||||
// var needDealNoticeList = _qaNoticeRepository.Where(t => t.SubjectVisitId == study.Id && t.NeedDeal
|
// var needDealNoticeList = _qaNoticeRepository.Where(t => t.SubjectVisitId == study.Id && t.NeedDeal
|
||||||
// && (t.NoticeTypeEnum == NoticeType.QA_InQA_NoticeCRC || t.NoticeTypeEnum == NoticeType.QA_QARecordDialogPost_NoticeCRC))
|
// && (t.NoticeTypeEnum == NoticeType.QA_InQA_NoticeCRC || t.NoticeTypeEnum == NoticeType.QA_QARecordDialogPost_NoticeCRC))
|
||||||
// .ToList();
|
// .ToList();
|
||||||
|
@ -377,10 +377,10 @@
|
||||||
|
|
||||||
// #region 处理QA通知 匿名化完毕 通知PM
|
// #region 处理QA通知 匿名化完毕 通知PM
|
||||||
|
|
||||||
// //查询项目的参与者 和 负责site下CRC用户
|
// //查询项目的参与者 和 负责site下IC用户
|
||||||
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
// var trialUserList = _userTrialRepository.Where(t => t.TrialId == study.TrialId).ToList();
|
||||||
|
|
||||||
// // 找到该study 关联Site 下的CRC
|
// // 找到该study 关联Site 下的IC
|
||||||
|
|
||||||
// var crcList = _userTrialSiteRepository.Where(t =>
|
// var crcList = _userTrialSiteRepository.Where(t =>
|
||||||
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
|
// t.SiteId == study.SiteId && t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && t.TrialId == study.TrialId).ToList();
|
||||||
|
|
|
@ -10,10 +10,7 @@ namespace IRaCIS.Core.Application.Auth
|
||||||
|
|
||||||
public static class IRaCISPolicy
|
public static class IRaCISPolicy
|
||||||
{
|
{
|
||||||
|
public const string IC = "IC";
|
||||||
|
|
||||||
|
|
||||||
public const string CRC = "CRC";
|
|
||||||
|
|
||||||
public const string PM = "PM";
|
public const string PM = "PM";
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ public enum AuditOptType
|
||||||
AddTrialSite = 5,
|
AddTrialSite = 5,
|
||||||
DeleteTrialSite = 6,
|
DeleteTrialSite = 6,
|
||||||
|
|
||||||
//Site CRC
|
//Site IC
|
||||||
AddTrialSiteCRC = 7,
|
AddTrialSiteCRC = 7,
|
||||||
DeleteTrialSiteCRC = 8,
|
DeleteTrialSiteCRC = 8,
|
||||||
|
|
||||||
|
@ -355,7 +355,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
|
||||||
// // }
|
// // }
|
||||||
|
|
||||||
// // break;
|
// // break;
|
||||||
// // //删除项目Site CRC
|
// // //删除项目Site IC
|
||||||
// // case AuditOptType.DeleteTrialSiteCRC:
|
// // case AuditOptType.DeleteTrialSiteCRC:
|
||||||
|
|
||||||
// // if (result.IsSuccess)
|
// // if (result.IsSuccess)
|
||||||
|
@ -700,7 +700,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
|
||||||
// // //删除项目运维人员
|
// // //删除项目运维人员
|
||||||
// // case AuditOptType.DeleteTrailStaff:
|
// // case AuditOptType.DeleteTrailStaff:
|
||||||
|
|
||||||
// // // 删除项目Site CRC
|
// // // 删除项目Site IC
|
||||||
// // case AuditOptType.DeleteTrialSiteCRC:
|
// // 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);
|
// _userTrial = _userTrialRepository.AsQueryable().Include(t => t.User).FirstOrDefault(t => t.Id == userTrial);
|
||||||
// break;
|
// break;
|
||||||
|
|
||||||
// // 删除项目Site CRC
|
// // 删除项目Site IC
|
||||||
// case AuditOptType.DeleteTrialSiteCRC:
|
// case AuditOptType.DeleteTrialSiteCRC:
|
||||||
|
|
||||||
// //接口参数
|
// //接口参数
|
||||||
|
@ -1258,7 +1258,7 @@ public class TrialAuditAttribute : Attribute,/*IActionFilter, */IAsyncActionFilt
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// break;
|
// break;
|
||||||
// //删除项目Site CRC
|
// //删除项目Site IC
|
||||||
// case AuditOptType.DeleteTrialSiteCRC:
|
// case AuditOptType.DeleteTrialSiteCRC:
|
||||||
|
|
||||||
// if (result.IsSuccess)
|
// if (result.IsSuccess)
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
|
|
||||||
// TrialSiteService
|
// TrialSiteService
|
||||||
"CodeRepeated": "Code is not allowed to be repeated",
|
"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",
|
"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.",
|
"StudyCanNotDeleted": "The site has been uploaded study, and couldn't be deleted.",
|
||||||
|
|
||||||
|
@ -76,8 +76,8 @@
|
||||||
// SubjectVisitService
|
// SubjectVisitService
|
||||||
"ContainsVisitnum": "This subject's visit plan already contains a visit with the same visitnum",
|
"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",
|
"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",
|
"CRCSubmit": "PD confirmation status cannot be modified after IC submission",
|
||||||
"BacktrackingVisits": "After the CRC is submitted, the PD confirmation status cannot be changed",
|
"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",
|
"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",
|
"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",
|
"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",
|
"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",
|
"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",
|
"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",
|
"VisitHasBeenExecuted": "The visit plan has been assigned to the subjects and executed",
|
||||||
"OnlyProgressCanEdit": "Modification validation is allowed only during project initialization or in progress",
|
"OnlyProgressCanEdit": "Modification validation is allowed only during project initialization or in progress",
|
||||||
"NoBaselineNoConfirmation": "No baseline, no confirmation allowed",
|
"NoBaselineNoConfirmation": "No baseline, no confirmation allowed",
|
||||||
|
@ -121,10 +121,10 @@
|
||||||
|
|
||||||
// QCOperationService
|
// QCOperationService
|
||||||
"AuditQuestionMust": "The audit question must be filled out and saved, otherwise no challenge is allowed to be added",
|
"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",
|
"VisitNoClose": "The current viewer has unclosed query for IC 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",
|
"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",
|
"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",
|
"CanNotCloseQuery": "Visits that perform conformance checks are not allowed to close queries",
|
||||||
"OnlyPMCanSet": "Only PM manual Settings are allowed to pass the consistency check",
|
"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",
|
"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",
|
"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",
|
"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",
|
"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",
|
"CannotBeChangedPD": "PD confirmation status cannot be modified for rollback visits",
|
||||||
"OtherQCProcessAudit": "Other QC is conducting audit, current operation is not allowed",
|
"OtherQCProcessAudit": "Other QC is conducting audit, current operation is not allowed",
|
||||||
"ForwardFailed": "Forward failure",
|
"ForwardFailed": "Forward failure",
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
|
|
||||||
// TrialSiteService
|
// TrialSiteService
|
||||||
"CodeRepeated": "编码不允许重复",
|
"CodeRepeated": "编码不允许重复",
|
||||||
"CRCCanNotDeleted": "该站点已与CRC关联,无法删除",
|
"CRCCanNotDeleted": "该站点已与IC关联,无法删除",
|
||||||
"SiteCanNotDeleted": "主题已添加到本网站,无法删除",
|
"SiteCanNotDeleted": "主题已添加到本网站,无法删除",
|
||||||
"StudyCanNotDeleted": "该网站已上传研究,无法删除",
|
"StudyCanNotDeleted": "该网站已上传研究,无法删除",
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
"ContainsVisitnum": "这个主题的访问计划已经包含了一个访问次数相同的访问",
|
"ContainsVisitnum": "这个主题的访问计划已经包含了一个访问次数相同的访问",
|
||||||
//该患者已经有检查批次设置为末次检查批次,不允许将该检查批次设置为末次检查批次 这个在上面有 TheLastVisit
|
//该患者已经有检查批次设置为末次检查批次,不允许将该检查批次设置为末次检查批次 这个在上面有 TheLastVisit
|
||||||
"LastEvaluationNotAllowed": "设置末次评估后,不允许添加计划外检查批次",
|
"LastEvaluationNotAllowed": "设置末次评估后,不允许添加计划外检查批次",
|
||||||
"CRCSubmit": "CRC提交后,不允许修改PD确认状态",
|
"CRCSubmit": "IC提交后,不允许修改PD确认状态",
|
||||||
"BacktrackingVisits": "回退的检查批次,不允许修改PD确认状态",
|
"BacktrackingVisits": "回退的检查批次,不允许修改PD确认状态",
|
||||||
"ImageUpload": "该患者此检查批次后有影像上传,该检查批次不允许设置为末次检查批次",
|
"ImageUpload": "该患者此检查批次后有影像上传,该检查批次不允许设置为末次检查批次",
|
||||||
"AssociatedUploaded": "本次访问与上传的研究图片有关,无法删除",
|
"AssociatedUploaded": "本次访问与上传的研究图片有关,无法删除",
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
"AccordWithVisitNum": "对于访问计划,具有较大VisitNum的VisitDay应该大于具有较小VisitNum的VisitDay",
|
"AccordWithVisitNum": "对于访问计划,具有较大VisitNum的VisitDay应该大于具有较小VisitNum的VisitDay",
|
||||||
"same/VisitName": "当前访问计划中已经存在具有相同VisitName/VisitNum的访问",
|
"same/VisitName": "当前访问计划中已经存在具有相同VisitName/VisitNum的访问",
|
||||||
"AlreadyBaseline": "已检查批次是当前检查批次计划的基线",
|
"AlreadyBaseline": "已检查批次是当前检查批次计划的基线",
|
||||||
"IsUploadVideo": "有CRC已经为基线上传了影像数据,不允许修改基线",
|
"IsUploadVideo": "有IC已经为基线上传了影像数据,不允许修改基线",
|
||||||
"VisitHasBeenExecuted": "访问计划已分配给患者并执行",
|
"VisitHasBeenExecuted": "访问计划已分配给患者并执行",
|
||||||
"OnlyProgressCanEdit": "仅仅在项目初始化或者进行中时,才允许修改确认",
|
"OnlyProgressCanEdit": "仅仅在项目初始化或者进行中时,才允许修改确认",
|
||||||
"NoBaselineNoConfirmation": "没有基线,不允许确认",
|
"NoBaselineNoConfirmation": "没有基线,不允许确认",
|
||||||
|
@ -122,10 +122,10 @@
|
||||||
|
|
||||||
// QCOperationService
|
// QCOperationService
|
||||||
"AuditQuestionMust": "必须填写审核问题,并保存,否则不允许添加质疑",
|
"AuditQuestionMust": "必须填写审核问题,并保存,否则不允许添加质疑",
|
||||||
"VisitNoClose": "当前检查批次有未关闭的 同意CRC上传的质疑,不允许再次添加质疑",
|
"VisitNoClose": "当前检查批次有未关闭的 同意IC上传的质疑,不允许再次添加质疑",
|
||||||
"NotFinish": "CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑",
|
"NotFinish": "IC申请重传的/QC同意重传的质疑,在IC设置重传完成前不允许关闭质疑",
|
||||||
"QCHasBeenReplied": "此QC质询已回复",
|
"QCHasBeenReplied": "此QC质询已回复",
|
||||||
"OperationUserMustBeCRC/PM": "一致性核查对话操作用户 只允许 CRC/PM",
|
"OperationUserMustBeCRC/PM": "一致性核查对话操作用户 只允许 IC/PM",
|
||||||
"CanNotCloseQuery": "执行一致性核查的检查批次 不允许关闭质疑",
|
"CanNotCloseQuery": "执行一致性核查的检查批次 不允许关闭质疑",
|
||||||
"OnlyPMCanSet": "只允许PM 手动设置一致性核查通过",
|
"OnlyPMCanSet": "只允许PM 手动设置一致性核查通过",
|
||||||
"CanNotSettingConsistency": "当前是PM同意回退,不允许设置一致性核查通过",
|
"CanNotSettingConsistency": "当前是PM同意回退,不允许设置一致性核查通过",
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
"CanNotSetQCFailed": "不审状态下,不允许设置为QC Failed",
|
"CanNotSetQCFailed": "不审状态下,不允许设置为QC Failed",
|
||||||
"NotInPrimaryQCQCFailed": "项目配置为单审 当前审核状态不为 InPrimaryQC,不能变更到 QCFailed",
|
"NotInPrimaryQCQCFailed": "项目配置为单审 当前审核状态不为 InPrimaryQC,不能变更到 QCFailed",
|
||||||
"TrialIsDoubleCheckCanNotQCFailed{0}": "项目配置为双审 当前审核状态为 {0},不能变更到 QCFailed",
|
"TrialIsDoubleCheckCanNotQCFailed{0}": "项目配置为双审 当前审核状态为 {0},不能变更到 QCFailed",
|
||||||
"CRCHasBeenSubmitted": "CRC已提交了 不能修改入组确认状态",
|
"CRCHasBeenSubmitted": "IC已提交了 不能修改入组确认状态",
|
||||||
"CannotBeChangedPD": "回退的检查批次,不允许修改PD确认状态",
|
"CannotBeChangedPD": "回退的检查批次,不允许修改PD确认状态",
|
||||||
"OtherQCProcessAudit": "其他QC正在进行审核,当前操作不允许",
|
"OtherQCProcessAudit": "其他QC正在进行审核,当前操作不允许",
|
||||||
"ForwardFailed": "转发失败",
|
"ForwardFailed": "转发失败",
|
||||||
|
|
|
@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var needSignCount = 0;
|
var needSignCount = 0;
|
||||||
|
|
||||||
//CRC 的自动签名 不用管 只用处理PM的就好
|
//IC 的自动签名 不用管 只用处理PM的就好
|
||||||
var haveSignedCount = _readingClinicalDataRepository
|
var haveSignedCount = _readingClinicalDataRepository
|
||||||
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
.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)
|
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();
|
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
|
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();
|
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*/)
|
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
||||||
{
|
{
|
||||||
isClinicalDataSign = true;
|
isClinicalDataSign = true;
|
||||||
|
|
|
@ -148,7 +148,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
|
.WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
|
||||||
.WhereIf(param.Status != null, t => t.Status == param.Status)
|
.WhereIf(param.Status != null, t => t.Status == param.Status)
|
||||||
.WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId)
|
.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))
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
|
||||||
.ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<SubjectExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
@ -554,7 +554,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
.WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId)
|
.WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId)
|
||||||
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
|
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
|
||||||
.WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
|
.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<PMKCheckEXportDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<PMKCheckEXportDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
|
list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
|
||||||
|
|
|
@ -353,7 +353,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var sendEmailConfig = new SMTPEmailConfig();
|
var sendEmailConfig = new SMTPEmailConfig();
|
||||||
|
|
||||||
//收件人 如果是CRC CRA 要按照中心发送
|
//收件人 如果是IC CRA 要按照中心发送
|
||||||
var toUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList();
|
var toUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
public static class QCCommon
|
public static class QCCommon
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证CRC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
|
/// 验证IC 是否已提交 已提交 就不允许进行任何操作,如果是IQC 那么还验证是否是当前任务领取人
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="_repository"></param>
|
/// <param name="_repository"></param>
|
||||||
/// <param name="_userInfo"></param>
|
/// <param name="_userInfo"></param>
|
||||||
|
@ -24,7 +24,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
||||||
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
|
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("CRC 已提交影像,不能进行操作。");
|
throw new BusinessValidationFailedException("IC 已提交影像,不能进行操作。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,9 +42,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region CRC上传、质疑页面
|
#region IC上传、质疑页面
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 检查批次上传列表
|
/// IC 检查批次上传列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="visitSearchDTO"></param>
|
/// <param name="visitSearchDTO"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -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 pageList = await query.ToPagedListAsync(visitSearchDTO.PageIndex, visitSearchDTO.PageSize, visitSearchDTO.SortField, visitSearchDTO.Asc, string.IsNullOrWhiteSpace(visitSearchDTO.SortField), defalutSortArray);
|
||||||
|
|
||||||
var config = await _repository.Where<Trial>(t => t.Id == visitSearchDTO.TrialId).ProjectTo<TrialSubjectAndSVConfig>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
var config = await _repository.Where<Trial>(t => t.Id == visitSearchDTO.TrialId).ProjectTo<TrialSubjectAndSVConfig>(_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.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.CRC);
|
config.IsHaveVisitClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == visitSearchDTO.TrialId && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit && x.UploadRole == UploadRole.IC);
|
||||||
return (pageList, config);
|
return (pageList, config);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 质疑列表
|
/// IC 质疑列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="challengeQuery"></param>
|
/// <param name="challengeQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -92,7 +92,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
public async Task<(PageOutput<QCCRCChallengeViewModel>, TrialSubjectAndSVConfig)> GetCRCChallengeList(ChallengeQuery challengeQuery)
|
public async Task<(PageOutput<QCCRCChallengeViewModel>, TrialSubjectAndSVConfig)> GetCRCChallengeList(ChallengeQuery challengeQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
#region CRC 质疑列表 join连表方式
|
#region IC 质疑列表 join连表方式
|
||||||
//var query = from qcChanllenge in _qcChallengeRepository.Find(qcChallengeLambda)
|
//var query = from qcChanllenge in _qcChallengeRepository.Find(qcChallengeLambda)
|
||||||
// join subjectVisit in _subjectVisitRepository.Find() on qcChanllenge.SubjectVisitId equals subjectVisit.Id
|
// 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
|
// 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 一致性核查 转发页面
|
#region 一致性核查 转发页面
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取一致性核查列表 CRC/PM 公用
|
/// 获取一致性核查列表 IC/PM 公用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="checkQuery"></param>
|
/// <param name="checkQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -530,7 +530,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
|
.WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo))
|
||||||
.WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression)
|
.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(!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<QCCheckWithModalityView>(_mapper.ConfigurationProvider);
|
.ProjectTo<QCCheckWithModalityView>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
var pageList = await query.ToPagedListAsync(checkQuery.PageIndex, checkQuery.PageSize, checkQuery.SortField, checkQuery.Asc);
|
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(!string.IsNullOrEmpty(forwardQuery.SubjectInfo), t => t.Subject.Code.Contains(forwardQuery.SubjectInfo))
|
||||||
.WhereIf(forwardQuery.VisitPlanArray != null && forwardQuery.VisitPlanArray?.Length > 0, svExpression)
|
.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(!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<ForWardViewModel>(_mapper.ConfigurationProvider);
|
.ProjectTo<ForWardViewModel>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
return await query.ToPagedListAsync(forwardQuery.PageIndex, forwardQuery.PageSize, forwardQuery.SortField, forwardQuery.Asc);
|
return await query.ToPagedListAsync(forwardQuery.PageIndex, forwardQuery.PageSize, forwardQuery.SortField, forwardQuery.Asc);
|
||||||
|
@ -786,7 +786,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC/PM 看到某次检查批次下的所有质疑和聊天内容 包括初审和复审的 。
|
/// IC/PM 看到某次检查批次下的所有质疑和聊天内容 包括初审和复审的 。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="subjectVisitId"></param>
|
/// <param name="subjectVisitId"></param>
|
||||||
/// <param name="trialQCProcess"></param>
|
/// <param name="trialQCProcess"></param>
|
||||||
|
|
|
@ -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))
|
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)
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 请求回退
|
/// IC 请求回退
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="subjectVisitId"></param>
|
/// <param name="subjectVisitId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -394,7 +394,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
{
|
{
|
||||||
SubjectVisitId = subjectVisitId,
|
SubjectVisitId = subjectVisitId,
|
||||||
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
||||||
TalkContent = "CRC申请回退"
|
TalkContent = "IC申请回退"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
}
|
}
|
||||||
else
|
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 &&
|
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
||||||
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
|
(!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();
|
var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync();
|
||||||
|
|
||||||
|
@ -1090,7 +1090,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC RequestToQC 批量提交 [需要签名 不需要对]
|
/// IC RequestToQC 批量提交 [需要签名 不需要对]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
@ -1125,11 +1125,11 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
//单个提交提示信息
|
//单个提交提示信息
|
||||||
if (dbSubjectVisitList.Count() == 1 && dbSubjectVisitList.First().SubmitState == SubmitStateEnum.Submitted)
|
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))
|
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();
|
// .Select(t => new { t.ClinicalDataTrialSetId }).ToList();
|
||||||
|
|
||||||
//foreach (var crcNeedConfirmClinicalDataSet in crcNeedConfirmClinicalDataSetList)
|
//foreach (var crcNeedConfirmClinicalDataSet in crcNeedConfirmClinicalDataSetList)
|
||||||
|
@ -1181,9 +1181,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
dbSubjectVisit.IsConfirmedClinicalData = true;
|
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,
|
IsSign = true,
|
||||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||||
|
@ -1682,13 +1682,13 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
if (qcChallenge.ReuploadEnum != QCChanllengeReuploadEnum.CRCRequestReupload)
|
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)
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC 设置已经重传完成 [需要签名 不需要对]
|
/// IC 设置已经重传完成 [需要签名 不需要对]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -1807,7 +1807,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
QCChallengeId = qcChallenge.Id,
|
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)
|
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,
|
SubjectVisitId = qcChallenge.SubjectVisitId,
|
||||||
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
||||||
QCChallengeId = qcChallenge.Id,
|
QCChallengeId = qcChallenge.Id,
|
||||||
TalkContent = "CRC申请重传/上传影像"
|
TalkContent = "IC申请重传/上传影像"
|
||||||
});
|
});
|
||||||
|
|
||||||
var isSuccess = await _qcChallengeRepository.SaveChangesAsync();
|
var isSuccess = await _qcChallengeRepository.SaveChangesAsync();
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.SubmitUserName, u => u.MapFrom(s => s.SubmitUser.FullName))
|
.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()
|
.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));
|
|| 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.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
||||||
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.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()
|
.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))
|
|| t.PreviousSurgeryList.Any() : false))
|
||||||
.ForMember(d => d.DicomStudyCount, u => u.MapFrom(t => t.StudyList.Count()))
|
.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())));
|
.ForMember(d => d.NoneDicomStudyCount, u => u.MapFrom(t => t.NoneDicomStudyList.Count(t => t.NoneDicomFileList.Any())));
|
||||||
|
|
||||||
//CRC 上传列表
|
//IC 上传列表
|
||||||
CreateMap<SubjectVisit, QCCRCVisitViewModel>()/*.IncludeMembers(t=>t.Subject)*/
|
CreateMap<SubjectVisit, QCCRCVisitViewModel>()/*.IncludeMembers(t=>t.Subject)*/
|
||||||
//.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
//.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
||||||
//.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
|
//.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.Sex, u => u.MapFrom(s => s.Subject.Sex))
|
||||||
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
|
.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()
|
.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))
|
|| t.PreviousSurgeryList.Any() : false))
|
||||||
|
|
||||||
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
|
//.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));
|
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.User.FirstName + "/" + t.User.LastName));
|
||||||
|
|
||||||
|
|
||||||
//CRC 质疑列表
|
//IC 质疑列表
|
||||||
CreateMap<QCChallenge, QCCRCChallengeViewModel>()
|
CreateMap<QCChallenge, QCCRCChallengeViewModel>()
|
||||||
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUser.UserName))
|
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUser.UserName))
|
||||||
.ForMember(d => d.PreliminaryAuditUserId, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUserId))
|
.ForMember(d => d.PreliminaryAuditUserId, u => u.MapFrom(s => s.SubjectVisit.PreliminaryAuditUserId))
|
||||||
|
|
|
@ -168,10 +168,10 @@ namespace IRaCIS.Application.Services
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 临床数据CRC 相关
|
#region 临床数据IC 相关
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取CRC上传的文件
|
/// 获取IC上传的文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -187,7 +187,7 @@ namespace IRaCIS.Application.Services
|
||||||
List<GetCRCClinicalDataOutDto> cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId)
|
List<GetCRCClinicalDataOutDto> 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.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
.WhereIf(!inDto.IsBaseline, x => 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()
|
.Select(x => new GetCRCClinicalDataOutDto()
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
|
@ -235,12 +235,12 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加CRC数据类型
|
/// 添加IC数据类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto)
|
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.Subject || x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
.WhereIf(!inDto.IsBaseline, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
|
||||||
.Select(x => x.Id).ToListAsync();
|
.Select(x => x.Id).ToListAsync();
|
||||||
|
@ -325,7 +325,7 @@ namespace IRaCIS.Application.Services
|
||||||
//判断是否基线
|
//判断是否基线
|
||||||
if (isBaseLine)
|
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();
|
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
|
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();
|
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*/)
|
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();
|
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*/)
|
if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
|
||||||
{
|
{
|
||||||
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
//将该标准 该subject 该阅片期|肿瘤学 任务临床数据状态变更
|
||||||
|
@ -577,7 +577,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
|
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);
|
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||||
|
|
||||||
|
@ -633,7 +633,7 @@ namespace IRaCIS.Application.Services
|
||||||
TrialClinicalDataSetCriteriaList=x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
TrialClinicalDataSetCriteriaList=x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList,
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.IC,
|
||||||
FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto()
|
||||||
{
|
{
|
||||||
Id = y.Id,
|
Id = y.Id,
|
||||||
|
@ -686,7 +686,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||||
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
|
.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))
|
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
|
||||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||||
|
@ -700,7 +700,7 @@ namespace IRaCIS.Application.Services
|
||||||
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType,
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||||
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC,
|
IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.IC,
|
||||||
IsBlind = x.IsBlind,
|
IsBlind = x.IsBlind,
|
||||||
IsComplete = x.IsComplete,
|
IsComplete = x.IsComplete,
|
||||||
FileCount = x.FileCount,
|
FileCount = x.FileCount,
|
||||||
|
@ -717,7 +717,7 @@ namespace IRaCIS.Application.Services
|
||||||
});
|
});
|
||||||
|
|
||||||
var result = await resultQuery.ToListAsync();
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -349,7 +349,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public string ClinicalUploadTypeName { get; set; }
|
public string ClinicalUploadTypeName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否为CRC上传
|
/// 是否为IC上传
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsCRCUpload { get; set; }
|
public bool IsCRCUpload { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary> Setting页面 为 site 勾选CRC用户列表</summary>
|
/// <summary> Setting页面 为 site 勾选IC用户列表</summary>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<AssginSiteCRCListDTO>> GetSiteCRCScreeningList(SiteCRCQuery param)
|
public async Task<PageOutput<AssginSiteCRCListDTO>> GetSiteCRCScreeningList(SiteCRCQuery param)
|
||||||
{
|
{
|
||||||
|
@ -187,7 +187,7 @@ namespace IRaCIS.Application.Services
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 自动添加CRC 到Site 里
|
#region 自动添加IC 到Site 里
|
||||||
if (await _repository.AnyAsync<User>(t => t.Id == item.UserId && t.UserTypeRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator))
|
if (await _repository.AnyAsync<User>(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 });
|
await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = Guid.Parse("db83e2f5-1f2e-408f-a45b-08d8e1dcace0"), UserId =item.UserId });
|
||||||
|
|
|
@ -177,7 +177,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>获取某一Site下面的负责的CRC列表</summary>
|
/// <summary>获取某一Site下面的负责的IC列表</summary>
|
||||||
[HttpGet, Route("{trialId:guid}/{siteId:guid}")]
|
[HttpGet, Route("{trialId:guid}/{siteId:guid}")]
|
||||||
public async Task<List<UserTrialDTO>> GetTrialSiteCRCList(Guid trialId, Guid siteId)
|
public async Task<List<UserTrialDTO>> GetTrialSiteCRCList(Guid trialId, Guid siteId)
|
||||||
{
|
{
|
||||||
|
@ -250,7 +250,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
//if (await _repository.AnyAsync<TrialSiteUser>(t => t.TrialId == trialId && t.SiteId == siteId))
|
//if (await _repository.AnyAsync<TrialSiteUser>(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<Subject>(t => t.SiteId == siteId && t.TrialId == trialId))
|
if (await _repository.AnyAsync<Subject>(t => t.SiteId == siteId && t.TrialId == trialId))
|
||||||
|
@ -284,7 +284,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary> 批量添加Site下 CRC的负责人 </summary>
|
/// <summary> 批量添加Site下 IC的负责人 </summary>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
||||||
|
@ -298,7 +298,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
return ResponseOutput.Result(true);
|
return ResponseOutput.Result(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> 删除CRC人员</summary>
|
/// <summary> 删除IC人员</summary>
|
||||||
[HttpDelete, Route("{id:guid}/{trialId:guid}/{isDelete:bool}")]
|
[HttpDelete, Route("{id:guid}/{trialId:guid}/{isDelete:bool}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
||||||
|
@ -312,14 +312,14 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取项目下的 site 下拉框数据 CRC只看到他负责的
|
/// 获取项目下的 site 下拉框数据 IC只看到他负责的
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("{trialId:guid}")]
|
[HttpGet("{trialId:guid}")]
|
||||||
public async Task<IEnumerable<TrialSiteForSelect>> GetTrialSiteSelect(Guid trialId)
|
public async Task<IEnumerable<TrialSiteForSelect>> GetTrialSiteSelect(Guid trialId)
|
||||||
{
|
{
|
||||||
//CRC只看到他负责的
|
//IC只看到他负责的
|
||||||
|
|
||||||
var list = await _trialSiteRepository.Where(t => t.TrialId == trialId)
|
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))
|
.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<IEnumerable<string>> GetTrialSiteCodeSelect(Guid trialId, bool isIncludeVirtualSite = true)
|
public async Task<IEnumerable<string>> GetTrialSiteCodeSelect(Guid trialId, bool isIncludeVirtualSite = true)
|
||||||
{
|
{
|
||||||
//CRC只看到他负责的
|
//IC只看到他负责的
|
||||||
|
|
||||||
var list = await _trialSiteRepository.Where(t => t.TrialId == trialId)
|
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))
|
.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<TrialSiteUser>(t => t.TrialId == trialId && t.SiteId == siteId))
|
if (await _repository.AnyAsync<TrialSiteUser>(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<Subject>(t => t.SiteId == siteId && t.TrialId == trialId))
|
if (await _repository.AnyAsync<Subject>(t => t.SiteId == siteId && t.TrialId == trialId))
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace IRaCIS.Application.Services
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
|
.WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex))
|
||||||
.WhereIf(param.Status != null, t => t.Status == param.Status)
|
.WhereIf(param.Status != null, t => t.Status == param.Status)
|
||||||
.WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId)
|
.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))
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
|
||||||
.ProjectTo<SubjectQueryView>(_mapper.ConfigurationProvider);
|
.ProjectTo<SubjectQueryView>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2, verifyExp3);
|
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();
|
//.Select(x => x.Id).ToListAsync();
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
// 触发临床数据
|
// 触发临床数据
|
||||||
if (context.ChangeType == ChangeType.Added)
|
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
|
.Select(x => new
|
||||||
{
|
{
|
||||||
|
|
|
@ -228,7 +228,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
||||||
dbSV.CheckState = CheckStateEnum.CVIng;
|
dbSV.CheckState = CheckStateEnum.CVIng;
|
||||||
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
|
dbSV.CheckChallengeState = CheckChanllengeTypeEnum.PMWaitCRCReply;
|
||||||
|
|
||||||
//讲核查结果发送消息给CRC
|
//讲核查结果发送消息给IC
|
||||||
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog()
|
dbSV.CheckChallengeDialogList.Add(new CheckChallengeDialog()
|
||||||
{
|
{
|
||||||
SubjectVisitId = subjectVisitId,
|
SubjectVisitId = subjectVisitId,
|
||||||
|
|
|
@ -9,10 +9,10 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
//不可用
|
//不可用
|
||||||
None = 0,
|
None = 0,
|
||||||
|
|
||||||
//CRC 已回复 PM 待回复
|
//IC 已回复 PM 待回复
|
||||||
CRCWaitPMReply = 1,
|
CRCWaitPMReply = 1,
|
||||||
|
|
||||||
//PM 已回复 CRC 待回复
|
//PM 已回复 IC 待回复
|
||||||
PMWaitCRCReply = 2,
|
PMWaitCRCReply = 2,
|
||||||
|
|
||||||
Closed = 3
|
Closed = 3
|
||||||
|
|
|
@ -10,10 +10,10 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
|
|
||||||
NotRequest = 0,
|
NotRequest = 0,
|
||||||
|
|
||||||
//CRC 申请,PM待同意
|
//IC 申请,PM待同意
|
||||||
CRC_RequestBack = 1,
|
CRC_RequestBack = 1,
|
||||||
|
|
||||||
//PM 已同意 CRC
|
//PM 已同意 IC
|
||||||
PM_AgressBack = 2,
|
PM_AgressBack = 2,
|
||||||
|
|
||||||
PM_NotAgree=3,
|
PM_NotAgree=3,
|
||||||
|
|
|
@ -803,9 +803,9 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
public enum UploadRole
|
public enum UploadRole
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CRC
|
/// IC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CRC = 0,
|
IC = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// PM
|
/// PM
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
//PM
|
//PM
|
||||||
ProjectManager=1,
|
ProjectManager=1,
|
||||||
|
|
||||||
//CRC
|
//IC
|
||||||
ClinicalResearchCoordinator=2,
|
ClinicalResearchCoordinator=2,
|
||||||
|
|
||||||
//IQC
|
//IQC
|
||||||
|
|
|
@ -282,7 +282,7 @@ inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
|
||||||
)
|
)
|
||||||
=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.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
|
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
|
!=(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
|
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
|
inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
|
||||||
where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1
|
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 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 )
|
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
|
=(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
|
inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id
|
||||||
where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =1 and VisitTask.IsNeedClinicalDataSign=1
|
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 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 )
|
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
|
!=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id
|
||||||
|
|
|
@ -202,7 +202,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
//// 一个检查批次可以被多个参与者 查看
|
//// 一个检查批次可以被多个参与者 查看
|
||||||
//public List<TrialUser> TrialUsers { get; set; }
|
//public List<TrialUser> TrialUsers { get; set; }
|
||||||
|
|
||||||
////一个检查批次 对应该Site下的多个CRC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名
|
////一个检查批次 对应该Site下的多个IC管理 必须加这个 不然生成的sql 会报 TrialSiteUserId 不存在该列名
|
||||||
|
|
||||||
//public List<TrialSiteUser> TrialSiteUserList { get; set; }
|
//public List<TrialSiteUser> TrialSiteUserList { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|
Loading…
Reference in New Issue