IRC_NewDev
commit
45438e09e5
|
@ -28,7 +28,7 @@ namespace IRaCIS.Core.API
|
|||
if(_MemberInfo.PropertyType == typeof(string))
|
||||
{
|
||||
//去掉前后空格
|
||||
_MemberInfo.SetValue(target, value==null?string.Empty: value.ToString()==string.Empty? value:value.ToString().Trim());
|
||||
_MemberInfo.SetValue(target, value==null?string.Empty: value.ToString()==string.Empty? value:value/*.ToString().Trim()*/);
|
||||
|
||||
}
|
||||
else
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,35 +4,35 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0} ,
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Extensive Imaging has generated a user account for you. <br>The account information is as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Extimaging has added an account for you. The account information is as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
User ID: {1}
|
||||
User name: {1}
|
||||
</div>
|
||||
<div>
|
||||
Role: {2}
|
||||
</div>
|
||||
<div>
|
||||
Before logging in for the first time, please initialize your account information through this link:
|
||||
<a href='{3}' style='margin-left:30px;font-size:12px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;font-size: 16px'>
|
||||
Initialize Account Information
|
||||
Before logging in for the first time, please modify your account information by this link:
|
||||
<a href='{3}' style='margin-left:30px;font-size:14px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
Initialize the account information
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0} ,
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Extensive Imaging has reset your password.<br>The account information is as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Extimaging has reset your account password, and the account information is as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 12px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
User ID: {1}
|
||||
User name: {1}
|
||||
</div>
|
||||
<div>
|
||||
Role: {2}
|
||||
|
@ -27,9 +27,9 @@
|
|||
</div>
|
||||
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,22 +4,22 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;font-size: 16px'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
Dear Sir or Madam:
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear:
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Thank you for using our IRC imaging system.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Thank you for using Extensive Imaging Cloud System.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
{0}。
|
||||
</div>
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,20 +4,20 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
As the service provider of {1} trial(Protocol ID is {2}), Extensive Imaging invites you to participate in the independent assessment work of this trial.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Digital workflow is implemented for this trial, and your account information is as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
This project adopts electronic workflow. The system and your account information are as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
Trial ID: {3}
|
||||
</div>
|
||||
|
@ -25,25 +25,23 @@
|
|||
Protocol ID: {2}
|
||||
</div>
|
||||
<div>
|
||||
Study Name: {1}
|
||||
Study name: {1}
|
||||
</div>
|
||||
<div>
|
||||
User Name: {4}
|
||||
User name: {4}
|
||||
</div>
|
||||
<div>
|
||||
Role: {5}
|
||||
</div>
|
||||
<div>
|
||||
Login URL:
|
||||
<a href='{6}' style='margin-left:30px;font-size:14px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
click redirect
|
||||
</a>
|
||||
Login URL: {6}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,21 +4,20 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
As the IRC service provider of {1}trial (Protocol ID is {2}), Extensive Imaging invites you to participate in the independent assessment work of this trial.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Hello, as the IRC supplier of [ {1} (Protocol ID is {2}) ] project,Extiming sincerely invites you to participate in the IRC related work of this project. Your guidance and suggestions are welcome.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Digital workflow is implemented for this trial, and your account information is as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
This project adopts electronic workflow. The system and your account information are as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
Trial ID: {3}
|
||||
</div>
|
||||
|
@ -26,26 +25,26 @@
|
|||
Protocol ID: {2}
|
||||
</div>
|
||||
<div>
|
||||
Study Name: {1}
|
||||
Study name: {1}
|
||||
</div>
|
||||
<div>
|
||||
User ID: {4}
|
||||
User name: {4}
|
||||
</div>
|
||||
<div>
|
||||
Role: {5}
|
||||
</div>
|
||||
<div>
|
||||
Before logging in for the first time, please modify your account information through this link:
|
||||
<a href='{6}' style='margin-left:30px;font-size:16px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
Initialize Account Information
|
||||
Before logging in for the first time, please modify your account information by this link:
|
||||
<a href='{6}' style='margin-left:30px;font-size:14px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
Initialize the account information
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;font-size: 16px'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;font-size: 16px'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6;font-size: 16px'>
|
||||
<div style='padding-top: 20px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0} ,
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
The site survey questionnaire you filled in has been rejected. Details are as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Hello, the center survey form you filled in has been rejected. The details are as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
Trial ID: {1}
|
||||
</div>
|
||||
|
@ -22,26 +22,26 @@
|
|||
Protocol ID: {2}
|
||||
</div>
|
||||
<div>
|
||||
Study Name: {3}
|
||||
Study name: {3}
|
||||
</div>
|
||||
<div>
|
||||
Site ID: {4}
|
||||
</div>
|
||||
<div>
|
||||
Site Name: {5}
|
||||
Site name: {5}
|
||||
</div>
|
||||
<div>
|
||||
Reason for rejection: {6}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<a href='{7}' style='margin-left:60px;font-size:16px;padding: 10px;text-decoration: none;display:{8} ;height: 40px;width: 140px;background: #00D1B2;color:#fff;border-radius: 5px;line-height: 40px;text-align: center;margin-bottom: 100px;font-size: 16px'>
|
||||
Login & View
|
||||
<a href='{7}' style='margin-left:60px;font-size:14px;padding: 10px;text-decoration: none;display:{8} ;height: 40px;width: 140px;background: #00D1B2;color:#fff;border-radius: 5px;line-height: 40px;text-align: center;margin-bottom: 100px;'>
|
||||
Login and view
|
||||
</a>
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,20 +4,20 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;font-size: 16px'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6;font-size: 16px'>
|
||||
<div style='padding-top: 20px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
As the service provider of {1} trial (Protocol ID is {2}), Extensive Imaging invites you to participate in related work of this trial.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Digital workflow is implemented for this trial, and your account information is as follows:
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
This project adopts electronic workflow. The system and your account information are as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
Trial ID: {3}
|
||||
</div>
|
||||
|
@ -25,26 +25,23 @@
|
|||
Protocol ID: {2}
|
||||
</div>
|
||||
<div>
|
||||
Study Name: {1}
|
||||
Study name: {1}
|
||||
</div>
|
||||
<div>
|
||||
User Name: {4}
|
||||
User name: {4}
|
||||
</div>
|
||||
<div>
|
||||
Role: {5}
|
||||
</div>
|
||||
<div>
|
||||
Login URL:
|
||||
<a href='{6}' style='margin-left:30px;font-size:14px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
click redirect
|
||||
</a>
|
||||
Login URL: {6}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
尊敬的 {0} ,您好:
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
展影医疗作为 [{1} (试验方案号:{2 })] 项目的IRC供应商,诚邀您参加该项目IRC相关工作。
|
||||
展影医疗作为 [{1} (试验方案号:{2 })] 项目的IRC供应商,诚邀您参加该项目IRC相关工作,欢迎您提供指导和建议,非常感谢!
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
该项目采用电子化工作流,系统及您的账号信息如下:
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,20 +4,20 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;font-size: 16px'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Dear {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
As the IRC service provider of {1} trial (Protocol ID is {2}), Extensive Imaging invites you to participate in IRC-related work of this trial.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Hello, as the IRC supplier of [ {1} (Protocol ID is {2}) ] project,Extiming sincerely invites you to participate in the IRC related work of this project. Your guidance and suggestions are welcome.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Digital workflow is implemented for this trial, and your account information is as follows:
|
||||
This project adopts electronic workflow. The system and your account information are as follows:
|
||||
</div>
|
||||
<span style="color: #00D1B2"></span>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;font-size: 16px'>
|
||||
<div style='border: 1px solid #eee;box-sizing:border-box;width: 50%;background: #fff;padding: 20px;line-height: 40px;font-size: 14px;border-radius: 5px;margin-left: 60px;margin-bottom: 30px;'>
|
||||
<div>
|
||||
Trial ID: {3}
|
||||
</div>
|
||||
|
@ -25,26 +25,26 @@
|
|||
Protocol ID: {2}
|
||||
</div>
|
||||
<div>
|
||||
Study Name: {1}
|
||||
Study name: {1}
|
||||
</div>
|
||||
<div>
|
||||
User Name: {4}
|
||||
User name: {4}
|
||||
</div>
|
||||
<div>
|
||||
Role: {5}
|
||||
</div>
|
||||
<div>
|
||||
Before logging in for the first time, please modify your account information through this link:
|
||||
<a href='{6}' style='margin-left:30px;font-size:16px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
Initialize Account Information
|
||||
Before logging in for the first time, please modify your account information by this link:
|
||||
<a href='{6}' style='margin-left:30px;font-size:14px;text-decoration: none;display: inline-block;color:#00D1B2;border-radius: 5px;line-height: 40px;text-align: center;'>
|
||||
Initialize the account information
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style='line-height: 24px;font-size: 16px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,18 +8,20 @@
|
|||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
亲爱的用户 ,
|
||||
Hello {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
感谢您使用展影云平台。
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
{0},验证码是: {1},请在3分钟内输入该验证码,进行后续操作。如非本人操作,请忽略该邮件。
|
||||
{1},验证码是: <span style="font-weight:bold">{2}</span>。
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
请在3分钟内输入该验证码,进行后续操作
|
||||
</div>
|
||||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>祝您顺利!/Best Regards</div>
|
||||
<div style="font-size: 14px;">展影医疗</div>
|
||||
<div>祝您顺利!</div>
|
||||
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,25 +4,25 @@
|
|||
<meta charset='UTF-8'>
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body style='font-family: Times New Roman;padding: 0;margin: 0;'>
|
||||
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 16px'>
|
||||
Dear Sir or Madam:
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
Hello {0},
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
Thank you for using our IRC imaging system.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Thank you for using Extensive Imaging’s cloud system!
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
{0}, the verification code is {1}. Please enter this code within 3 minutes for follow-up operations.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
{1}, and the verification code is <span style="font-weight:bold">{2}</span>.
|
||||
</div>
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;font-size: 16px'>
|
||||
If you are not the intended person, please ignore this email.
|
||||
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
|
||||
Please enter this verification code within 3 minutes for subsequent operations.
|
||||
</div>
|
||||
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;font-size: 16px'>
|
||||
<div>Best regards,</div>
|
||||
<div style="font-size: 16px;">Extensive Imaging</div>
|
||||
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
|
||||
<div>Best Regards</div>
|
||||
<div style="font-size: 14px;">Extensive Imaging</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
[HttpDelete("{commonDocumentId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteCommonDocument(Guid commonDocumentId)
|
||||
{
|
||||
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true);
|
||||
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true,true);
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
|
|
@ -318,6 +318,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
|
||||
builder.HtmlBody = string.Format(templateInfo,
|
||||
"",
|
||||
//---您正在参与展影医疗IRC项目中心调研工作
|
||||
_localizer["Mail_CenterResearchReminder"],
|
||||
verificationCode
|
||||
|
|
|
@ -11,12 +11,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
public CommonConfig()
|
||||
{
|
||||
CreateMap<Message, SysMessageDTO>()
|
||||
.ForMember(o => o.MessageTime, t => t.MapFrom(u => u.MessageTime.ToString()));
|
||||
|
||||
CreateMap<SystemLog, SystemLogDTO>();
|
||||
|
||||
CreateMap<SystemLogDTO, SystemLog>();
|
||||
|
||||
CreateMap<FrontAuditConfig, FrontAuditConfigAddOrEdit>().ReverseMap();
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ namespace IRaCIS.Application.Services
|
|||
public class DoctorService : BaseService, IDoctorService
|
||||
{
|
||||
private readonly IRepository<Doctor> _doctorRepository;
|
||||
private readonly IRepository<Message> _messageRepository;
|
||||
private readonly IRepository<Enroll> _enrollRepository;
|
||||
private readonly IRepository<DoctorDictionary> _doctorDictionaryRepository;
|
||||
private readonly IRepository<Attachment> _attachmentRepository;
|
||||
|
@ -26,7 +25,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
public DoctorService(IRepository<Doctor> doctorInfoRepository,
|
||||
IRepository<Dictionary> dictionaryRepository,
|
||||
IRepository<Message> sysMessageRepository, IRepository<Enroll> intoGroupRepository,
|
||||
IRepository<Enroll> intoGroupRepository,
|
||||
IRepository<DoctorDictionary> doctorDictionaryRepository,
|
||||
IRepository<Attachment> attachmentRepository,
|
||||
IRepository<DoctorCriterionFile> doctorCriterionFileRepository,
|
||||
|
@ -35,7 +34,6 @@ namespace IRaCIS.Application.Services
|
|||
IRepository<TrialPaymentPrice> trialExtRepository, IRepository<Vacation> vacationRepository)
|
||||
{
|
||||
_doctorRepository = doctorInfoRepository;
|
||||
_messageRepository = sysMessageRepository;
|
||||
_enrollRepository = intoGroupRepository;
|
||||
_doctorDictionaryRepository = doctorDictionaryRepository;
|
||||
_attachmentRepository = attachmentRepository;
|
||||
|
@ -457,20 +455,20 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
if (success)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(auditResumeParam.MessageContent))
|
||||
{
|
||||
var message = new Message
|
||||
{
|
||||
FromUserId = userId,
|
||||
ToDoctorId = auditResumeParam.Id,
|
||||
Title = "Resume review results",
|
||||
Content = auditResumeParam.MessageContent,
|
||||
HasRead = false,
|
||||
MessageTime = DateTime.Now
|
||||
};
|
||||
await _repository.AddAsync(message);
|
||||
success = await _repository.SaveChangesAsync();
|
||||
}
|
||||
//if (!string.IsNullOrWhiteSpace(auditResumeParam.MessageContent))
|
||||
//{
|
||||
// var message = new Message
|
||||
// {
|
||||
// FromUserId = userId,
|
||||
// ToDoctorId = auditResumeParam.Id,
|
||||
// Title = "Resume review results",
|
||||
// Content = auditResumeParam.MessageContent,
|
||||
// HasRead = false,
|
||||
// MessageTime = DateTime.Now
|
||||
// };
|
||||
// await _repository.AddAsync(message);
|
||||
// success = await _repository.SaveChangesAsync();
|
||||
//}
|
||||
}
|
||||
|
||||
return ResponseOutput.Result(success);
|
||||
|
|
|
@ -11,13 +11,14 @@ namespace IRaCIS.Core.Application.Services
|
|||
{
|
||||
private readonly IRepository<DicomInstance> _instanceRepository;
|
||||
private readonly IRepository<DicomStudy> _studyRepository;
|
||||
private readonly IRepository<KeyInstance> _keyInstanceRepository;
|
||||
public InstanceService(IRepository<DicomInstance> instanceRepository, IRepository<DicomStudy> studyRepository,
|
||||
IRepository<KeyInstance> keyInstanceRepository )
|
||||
//private readonly IRepository<KeyInstance> _keyInstanceRepository;
|
||||
public InstanceService(IRepository<DicomInstance> instanceRepository, IRepository<DicomStudy> studyRepository
|
||||
//,IRepository<KeyInstance> keyInstanceRepository
|
||||
)
|
||||
{
|
||||
_instanceRepository = instanceRepository;
|
||||
_studyRepository = studyRepository;
|
||||
_keyInstanceRepository = keyInstanceRepository;
|
||||
//_keyInstanceRepository = keyInstanceRepository;
|
||||
}
|
||||
|
||||
/// <summary> 指定资源Id,获取Dicom序列所属的实例信息列表 </summary>
|
||||
|
@ -42,11 +43,11 @@ namespace IRaCIS.Core.Application.Services
|
|||
[HttpGet, Route("{seriesId:guid}/{tpCode?}/{key?}")]
|
||||
public IEnumerable<Guid> List(Guid seriesId, string tpCode, bool? key)
|
||||
{
|
||||
if (key != null && key.HasValue && key.Value)
|
||||
{
|
||||
return _keyInstanceRepository.Where(s => s.TpCode == tpCode).Select(t => t.InstanceId).Distinct();
|
||||
}
|
||||
else
|
||||
//if (key != null && key.HasValue && key.Value)
|
||||
//{
|
||||
// return _keyInstanceRepository.Where(s => s.TpCode == tpCode).Select(t => t.InstanceId).Distinct();
|
||||
//}
|
||||
//else
|
||||
return _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber).Select(t => t.Id);
|
||||
}
|
||||
|
||||
|
|
|
@ -10,19 +10,20 @@ namespace IRaCIS.Core.Application.Services
|
|||
[AllowAnonymous]
|
||||
public class SeriesService : BaseService
|
||||
{
|
||||
private readonly IRepository<ImageLabel> _imageLabelRepository;
|
||||
//private readonly IRepository<KeyInstance> _keyInstanceRepository;
|
||||
// private readonly IRepository<ImageLabel> _imageLabelRepository;
|
||||
|
||||
private readonly IRepository<DicomSeries> _seriesRepository;
|
||||
private readonly IRepository<DicomInstance> _instanceRepository;
|
||||
private readonly IRepository<DicomStudy> _studyRepository;
|
||||
private readonly IRepository<KeyInstance> _keyInstanceRepository;
|
||||
public SeriesService(IRepository<DicomInstance> instanceRepository, IRepository<DicomStudy> studyRepository,
|
||||
IRepository<KeyInstance> keyInstanceRepository, IRepository<DicomSeries> seriesRepository, IRepository<ImageLabel> imageLabelRepository)
|
||||
public SeriesService(IRepository<DicomInstance> instanceRepository, IRepository<DicomStudy> studyRepository, IRepository<DicomSeries> seriesRepository
|
||||
/* IRepository<KeyInstance> keyInstanceRepository, IRepository<ImageLabel> imageLabelRepository*/)
|
||||
{
|
||||
_seriesRepository = seriesRepository;
|
||||
_instanceRepository = instanceRepository;
|
||||
_studyRepository = studyRepository;
|
||||
_keyInstanceRepository = keyInstanceRepository;
|
||||
_imageLabelRepository = imageLabelRepository;
|
||||
//_keyInstanceRepository = keyInstanceRepository;
|
||||
//_imageLabelRepository = imageLabelRepository;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,8 +19,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
CreateMap<AddInstanceDto, DicomInstance>();
|
||||
|
||||
CreateMap<Report, ReportDTO>();
|
||||
CreateMap<ImageLabel, ImageLabelDTO>();
|
||||
|
||||
CreateMap<DicomSeries, DicomSeriesWithLabelDTO>();
|
||||
|
||||
//影像上传 检查
|
||||
|
@ -73,11 +72,9 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
CreateMap<ImageShareCommand, ImageShare>();
|
||||
|
||||
CreateMap<StudyDTFAddOrUpdateCommand, StudyDTF>();
|
||||
|
||||
|
||||
|
||||
CreateMap<StudyStatusDetail, StudyStatusDetailDTO>();
|
||||
|
||||
CreateMap<DicomInstance, DicomInstanceDTO>()
|
||||
.ForMember(o => o.IsDeleted, t => t.MapFrom(u => u.DicomSerie.IsDeleted))
|
||||
|
|
|
@ -952,7 +952,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
break;
|
||||
case TrialQCProcess.DoubleAudit:
|
||||
|
||||
visitList = await _subjectVisitRepository.Where(x => x.SubmitState != SubmitStateEnum.None && x.TrialId == inDto.TrialId && x.PreliminaryAuditUserId!= _userInfo.Id&&(x.CurrentActionUserId == _userInfo.Id || (x.AuditState != AuditStateEnum.QCPassed))).Include(x => x.Subject).ToListAsync();
|
||||
visitList = await _subjectVisitRepository.Where(x => x.SubmitState != SubmitStateEnum.None && x.TrialId == inDto.TrialId &&
|
||||
((x.CurrentActionUserId == _userInfo.Id)||(!x.IsTake&& x.AuditState != AuditStateEnum.QCPassed&& (x.PreliminaryAuditUserId != _userInfo.Id)))
|
||||
).Include(x => x.Subject).ToListAsync();
|
||||
if (subjectVisit != null)
|
||||
{
|
||||
return new GetNextIQCQualityOutDto()
|
||||
|
|
|
@ -1816,8 +1816,6 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
var tablequestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == taskinfo.TrialReadingCriterionId && x.ReadingQuestionTrial.LesionType == LesionType.NonTargetLesions).ToListAsync();
|
||||
|
||||
|
||||
|
||||
// 判断表格问题是否为空
|
||||
if (tablequestionList.Count > 0)
|
||||
{
|
||||
|
@ -2359,9 +2357,6 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
throw new BusinessValidationFailedException(_localizer["ReadingImage_ClinicalRead"]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,6 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public class AdReportDTO
|
||||
{
|
||||
public WorkloadAD ADInfo { get; set; } = new WorkloadAD();
|
||||
public PreviousGlobalReadsView Global1 { get; set; } = new PreviousGlobalReadsView();
|
||||
public PreviousGlobalReadsView Global2 { get; set; } = new PreviousGlobalReadsView();
|
||||
|
||||
|
|
|
@ -12,10 +12,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
CreateMap<LesionInformation, VisitLesion>();
|
||||
|
||||
CreateMap<ReportDTO, Report>();
|
||||
CreateMap<ImageLabelDTO, ImageLabel>();
|
||||
|
||||
CreateMap<GlobalReportCommand, GlobalRS>();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -510,13 +510,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
//被评估为NE的单个靶病灶
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.NETarget,GetStringFun=GetNETarget},
|
||||
|
||||
// 与触发iRECIST访视相比SOD变化量
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ComparedTriggeringSODChange,GetStringFun=GetComparedTriggeringSODChange,IsConvertedTask=true},
|
||||
|
||||
// 新靶病灶直径之和(iSOD)
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ISOD,GetDecimalNullFun=GetiSODData,IsConvertedTask=true},
|
||||
|
||||
// 与触发iRECIST访视相比iSOD变化量
|
||||
// 与触发iRECIST访视相比SOD变化量
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ComparedTriggeringSODChange,GetStringFun=GetComparedTriggeringSODChange,IsConvertedTask=true},
|
||||
|
||||
// 新靶病灶直径之和(iSOD)
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ISOD,GetDecimalNullFun=GetiSODData,IsConvertedTask=true},
|
||||
|
||||
// 与触发iRECIST访视相比iSOD变化量
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.ComparedTriggeringiSODChange,GetStringFun=GetComparedTriggeringiSODChange,IsConvertedTask=true},
|
||||
|
||||
// 靶病灶评估
|
||||
|
|
|
@ -635,26 +635,22 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ImageQualityAssessment && x.VisitTaskId == inDto.VisitTaskId && x.Answer == ImageQualityEvaluation.Abnormal.GetEnumInt()))
|
||||
{
|
||||
|
||||
//影像质量不正常 验证
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var tableAnswerList = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.Answer == string.Empty || x.Answer == null)
|
||||
&& x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State
|
||||
)
|
||||
.Select(x => new
|
||||
{
|
||||
x.ReadingQuestionTrial.OrderMark,
|
||||
x.RowIndex,
|
||||
QuestionMark = x.ReadingTableQuestionTrial.QuestionMark,
|
||||
Answer = x.Answer,
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
&& x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State)
|
||||
.Select(x => new
|
||||
{
|
||||
x.ReadingQuestionTrial.OrderMark,
|
||||
x.RowIndex,
|
||||
x.ReadingTableQuestionTrial.QuestionMark,
|
||||
x.Answer,
|
||||
}).ToListAsync();
|
||||
|
||||
// 错误信息
|
||||
string errorMassage = string.Empty;
|
||||
|
||||
var rowAnswerList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && (x.MeasureData == string.Empty || x.MeasureData == null))
|
||||
.Select(x => new
|
||||
{
|
||||
|
@ -662,37 +658,32 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
x.RowIndex,
|
||||
x.Id,
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
var unableEvaluateRowIds = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.Answer == TargetState.UnableEvaluate.GetEnumInt()
|
||||
&& x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State
|
||||
)
|
||||
.Select(x => x.RowId).Distinct().ToListAsync();
|
||||
&& x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State)
|
||||
.Select(x => x.RowId).Distinct().ToListAsync();
|
||||
|
||||
|
||||
List<string> measureDataList = rowAnswerList.Where(x => !unableEvaluateRowIds.Contains(x.Id)).Select(x => x.OrderMark + x.RowIndex.GetLesionMark()).ToList();
|
||||
|
||||
List<string> stateIsNullList = tableAnswerList.Select(x => x.OrderMark + x.RowIndex.GetLesionMark()).ToList();
|
||||
|
||||
|
||||
List<string> allExists = measureDataList.Intersect(stateIsNullList).ToList();
|
||||
// 取差
|
||||
measureDataList = measureDataList.Except(allExists).ToList();
|
||||
stateIsNullList = stateIsNullList.Except(allExists).ToList();
|
||||
|
||||
|
||||
if (measureDataList.Count() > 0)
|
||||
{
|
||||
// 无标记
|
||||
errorMassage += _localizer["ReadingCalculate_NoMarker", string.Join(',', measureDataList)] + ",";
|
||||
}
|
||||
|
||||
|
||||
if (tableAnswerList.Count > 0)
|
||||
{
|
||||
// 状态为空
|
||||
errorMassage += _localizer["ReadingCalculate_StatusIsEmpty", string.Join(',', stateIsNullList)] + ",";
|
||||
}
|
||||
|
||||
if (allExists.Count > 0)
|
||||
{
|
||||
// 未做标记且状态为空
|
||||
errorMassage += _localizer["ReadingCalculate_NoMarkerEmpty", string.Join(',', stateIsNullList)] + ",";
|
||||
}
|
||||
|
||||
|
@ -702,8 +693,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
errorMassage = _localizer["ReadingCalculate_Questionable"] + errorMassage;
|
||||
throw new BusinessValidationFailedException(errorMassage);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -288,7 +288,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public string TrialStatusStr { get; set; }
|
||||
|
||||
|
||||
#region PM
|
||||
public int? ExpetiedTaskCount { get; set; }
|
||||
|
||||
|
||||
|
@ -299,6 +299,9 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public int? PendingResponseCount { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
public bool IsIQCHaveToBeDone { get; set; }
|
||||
public bool IsCRCHaveToBeDone { get; set; }
|
||||
|
||||
|
|
|
@ -1283,25 +1283,6 @@ namespace IRaCIS.Core.Application
|
|||
}
|
||||
|
||||
|
||||
#region 废弃
|
||||
#region 上传影像
|
||||
|
||||
#endregion
|
||||
|
||||
#region QC
|
||||
|
||||
#endregion
|
||||
|
||||
#region 一致性核查
|
||||
|
||||
#endregion
|
||||
|
||||
#region 阅片
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
|
@ -925,9 +925,6 @@ namespace IRaCIS.Core.Application
|
|||
_mapper.Map(trialConfig, trialInfo);
|
||||
trialInfo.UpdateTime = DateTime.Now;
|
||||
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok(await _repository.SaveChangesAsync());
|
||||
}
|
||||
|
||||
|
|
|
@ -548,7 +548,6 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
await _repository.BatchDeleteAsync<VisitTaskReReading>(t => t.OriginalReReadingTask.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<VisitTask>(t => t.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<TrialAttachment>(t => t.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<TrialStateChange>(t => t.TrialId == trialId) ;
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
|
|
@ -112,14 +112,14 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
|||
|
||||
|
||||
StringBuilder dialogMsg = new StringBuilder();
|
||||
//---您好,根据本系统自动识别,该受试者当前访视在IRC系统中已提交的影像检查情况如下:
|
||||
//---您好,根据本系统自动识别,该受试者当前访视在IRC系统中已提交的影像检查情况如下:
|
||||
dialogMsg.Append(StaticData.International("ConsistencyVerification_Img"));
|
||||
var num = 0;
|
||||
List<ParamInfoDto> paramInfoList = new List<ParamInfoDto>();
|
||||
foreach (var item in dbVisitStudyList)
|
||||
{
|
||||
num++;
|
||||
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_ImgC")}");
|
||||
dialogMsg.AppendLine($"<span style='text-indent: 20px;'><br>{num}. {item.StudyDate} {(_userInfo.IsEn_Us ? string.Empty : StaticData.International("ConsistencyVerification_Of"))}{item.Modality}{StaticData.International("ConsistencyVerification_ImgC")}");
|
||||
paramInfoList.Add(new ParamInfoDto()
|
||||
{
|
||||
Modality = item.Modality,
|
||||
|
@ -176,7 +176,7 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
|||
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
|
||||
{
|
||||
dialogMsg.AppendLine($"<br/>");
|
||||
//---核对EDC数据,完全一致, 审核通过
|
||||
//---核对EDC数据,完全一致, 审核通过
|
||||
dialogMsg.AppendLine(StaticData.International("ConsistencyVerification_EDCA"));
|
||||
|
||||
|
||||
|
@ -184,9 +184,9 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
|||
dbSV.CheckState = CheckStateEnum.CVPassed;
|
||||
dbSV.CheckUserId = _userInfo.Id;
|
||||
dbSV.CheckPassedTime = DateTime.Now;
|
||||
//---核对EDC数据,完全一致
|
||||
//---核对EDC数据,完全一致
|
||||
dbSV.CheckResult = StaticData.International("ConsistencyVerification_EDCB");
|
||||
//---自动核查通过
|
||||
//---自动核查通过
|
||||
dbSV.ManualPassReason = StaticData.International("ConsistencyVerification_Auto");
|
||||
|
||||
//维护状态
|
||||
|
@ -214,14 +214,19 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
|||
{
|
||||
num++;
|
||||
//影像检查(EDC 缺少) ConsistencyVerification_EdcL
|
||||
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_EdcL")} ");
|
||||
|
||||
|
||||
dialogMsg.AppendLine($"<span style='text-indent: 20px;'><br>{num}. {StaticData.International("ConsistencyVerification_EdcL")}{item.StudyDate}{(_userInfo.IsEn_Us ? string.Empty : StaticData.International("ConsistencyVerification_Of"))}{item.Modality}{StaticData.International("ConsistencyVerification_ImgC")}");
|
||||
|
||||
}
|
||||
|
||||
foreach (var item in excelExceptDB)
|
||||
{
|
||||
num++;
|
||||
|
||||
// 影像检查(IRC 缺少)
|
||||
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_IrcL")} ");
|
||||
dialogMsg.AppendLine($"<span style='text-indent: 20px;'><br>{num}. {StaticData.International("ConsistencyVerification_IrcL")}{item.StudyDate}{(_userInfo.IsEn_Us ? string.Empty : StaticData.International("ConsistencyVerification_Of"))}{item.Modality}{StaticData.International("ConsistencyVerification_ImgC")}");
|
||||
|
||||
}
|
||||
|
||||
dialogMsg.AppendLine($"<br/>");
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("ImageLabel")]
|
||||
public class ImageLabel : Entity
|
||||
{
|
||||
public string TpCode { get; set; } = string.Empty;
|
||||
public Guid StudyId { get; set; } = Guid.Empty;
|
||||
public Guid SeriesId { get; set; } = Guid.Empty;
|
||||
public Guid InstanceId { get; set; } = Guid.Empty;
|
||||
public string LabelValue { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("KeyInstance")]
|
||||
public class KeyInstance : Entity, IAuditAdd, IAuditUpdate
|
||||
{
|
||||
|
||||
public string TpCode { get; set; }
|
||||
public Guid SeriesId { get; set; }
|
||||
public Guid InstanceId { get; set; }
|
||||
public Guid CreateUserId { get; set; }
|
||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
public Guid UpdateUserId { get; set; }
|
||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("Message")]
|
||||
public class Message : Entity
|
||||
{
|
||||
public Guid ToDoctorId { get; set; }
|
||||
public Guid FromUserId { get; set; }
|
||||
public string Title { get; set; } = string.Empty;
|
||||
public string Content { get; set; } = string.Empty;
|
||||
public DateTime MessageTime { get; set; }
|
||||
public bool HasRead { get; set; }
|
||||
public string Memo { get; set; } = string.Empty;
|
||||
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
public class GlobalRS : Entity
|
||||
{
|
||||
public Guid GlobalId { get; set; }
|
||||
public string TpCode { get; set; }
|
||||
public decimal VisitNum { get; set; }
|
||||
public bool Agree { get; set; }
|
||||
public string NewRS { get; set; }
|
||||
public string Note { get; set; }
|
||||
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
using System;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
public class GlobalResult:Entity
|
||||
{
|
||||
public Guid GlobalId { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
public string SubjectCode { get; set; }
|
||||
|
||||
public decimal VisitNum { get; set; }
|
||||
public string SubjectNote { get; set; }=String.Empty;
|
||||
public string Result { get; set; } = String.Empty;
|
||||
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("Report")]
|
||||
public class Report : Entity
|
||||
{
|
||||
public bool Qualified { get; set; } = true;
|
||||
public string DiseaseProgression { get; set; } = string.Empty;
|
||||
public string NotEvaluable { get; set; } = string.Empty;
|
||||
public string Timepoint { get; set; } = string.Empty;
|
||||
public string TrialCode { get; set; } = string.Empty;
|
||||
public string SubjectCode { get; set; } = string.Empty;
|
||||
public decimal? VisitNum { get; set; }
|
||||
public string VisitName { get; set; } = string.Empty;
|
||||
public int? DiseaseSituation { get; set; }
|
||||
public string Comment { get; set; }
|
||||
public Guid? TPId { get; set; }
|
||||
public Guid? DicomStudyId { get; set; }
|
||||
public string TpCode { get; set; } = string.Empty;
|
||||
public bool AffectRead { get; set; } = false;//是否影响读片
|
||||
public string AffectReadNote { get; set; } = string.Empty;//备注说明
|
||||
}
|
||||
}
|
|
@ -1,129 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("TU")]
|
||||
public class TU : Entity
|
||||
{
|
||||
//病灶类型 1-非淋巴结靶病灶,2-淋巴结靶病灶,3-非靶病灶,,4-疑似新病灶,5-明确新病灶
|
||||
public int LesionType { get; set; }
|
||||
public string STUDYID { get; set; }
|
||||
public string DOMAIN { get; set; } = "TU";
|
||||
public string USUBJID { get; set; }
|
||||
public int TUSEQ { get; set; }
|
||||
public string TUGRPID { get; set; } = string.Empty;
|
||||
public string TUREFID { get; set; } = string.Empty;//内部或外部的肿瘤/病灶标识。 例如:医学影像 ID
|
||||
public string TUSPID { get; set; } = string.Empty;
|
||||
public string TULNKID { get; set; } = string.Empty;
|
||||
public string TUTESTCD { get; set; } = string.Empty;
|
||||
public string TUTEST { get; set; } = string.Empty;
|
||||
|
||||
//肿瘤标识的结果。 肿瘤标识的结果是对标识肿瘤的分类。
|
||||
//例如,当 TUTESTCD=TUMIDENT (肿瘤/病灶标识)时,
|
||||
//TUORRES的值可能是 TARGET, NON-TARGET, NEW或者 BENIGN ABNORMALITY
|
||||
public string TUORRES { get; set; } = string.Empty;
|
||||
public string TUSTRESC { get; set; } = string.Empty;
|
||||
public string TUNAM { get; set; } = string.Empty;
|
||||
public string TULOC { get; set; } = string.Empty;
|
||||
public string TULAT { get; set; } = string.Empty;
|
||||
public string TUDIR { get; set; } = string.Empty;
|
||||
public string TUPORTOT { get; set; } = string.Empty;
|
||||
public string TUMETHOD { get; set; } = string.Empty;
|
||||
public string TUEVAL { get; set; } = string.Empty;
|
||||
public string TUEVALID { get; set; } = string.Empty;
|
||||
public string TUACPTFL { get; set; } = string.Empty;
|
||||
public decimal VISITNUM { get; set; } = 0;
|
||||
public string VISIT { get; set; } = string.Empty;
|
||||
public int VISITDY { get; set; }
|
||||
public string EPOCH { get; set; } = string.Empty;
|
||||
public string TUDTC { get; set; } = string.Empty;
|
||||
public int TUDY { get; set; } = 0;
|
||||
public string LocDescription { get; set; } = string.Empty;
|
||||
|
||||
public string TpCode { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
[Table("TR")]
|
||||
public class TR : Entity
|
||||
{
|
||||
public string STUDYID { get; set; } = string.Empty;
|
||||
public string DOMAIN { get; set; } = "TR";
|
||||
public string USUBJID { get; set; } = string.Empty;
|
||||
public int TRSEQ { get; set; }
|
||||
public string TRGRPID { get; set; } = string.Empty;
|
||||
public string TRREFID { get; set; } = string.Empty;
|
||||
public string TRSPID { get; set; } = string.Empty;
|
||||
public string TRLNKID { get; set; } = string.Empty;
|
||||
public string TRLNKGRP { get; set; } = string.Empty;
|
||||
public string TRTESTCD { get; set; } = string.Empty;
|
||||
public string TRTEST { get; set; } = string.Empty;
|
||||
public string TRORRES { get; set; } = string.Empty;
|
||||
public double TRORRES_Double
|
||||
{
|
||||
get {
|
||||
double temp = 0;
|
||||
double.TryParse(TRORRES, out temp);
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
public string TRORRESU { get; set; } = string.Empty;
|
||||
public string TRSTRESC { get; set; } = string.Empty;
|
||||
public double TRSTRESN { get; set; } = 0;
|
||||
public string TRSTRESU { get; set; } = string.Empty;
|
||||
public string TRSTAT { get; set; } = string.Empty;
|
||||
public string TRREASND { get; set; } = string.Empty;
|
||||
public string TRNAM { get; set; } = string.Empty;
|
||||
public string TRMETHOD { get; set; } = string.Empty;
|
||||
public string TREVAL { get; set; } = string.Empty;
|
||||
public string TREVALID { get; set; } = string.Empty;
|
||||
public string TRACPTFL { get; set; } = string.Empty;
|
||||
public decimal VISITNUM { get; set; } = 0;
|
||||
public string VISIT { get; set; } = string.Empty;
|
||||
public int VISITDY { get; set; } = 0;
|
||||
public string EPOCH { get; set; } = string.Empty;
|
||||
public string TRDTC { get; set; } = string.Empty;
|
||||
public int TRDY { get; set; } = 0;
|
||||
public string Note { get; set; } // 备注
|
||||
public bool CoveredLesion { get; set; } = true;//本次扫描是否覆盖该病灶
|
||||
public string TpCode { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
[Table("RS")]
|
||||
public class RS : Entity
|
||||
{
|
||||
public string STUDYID { get; set; } = string.Empty;
|
||||
public string DOMAIN { get; set; } = "RS";
|
||||
public string USUBJID { get; set; } = string.Empty;
|
||||
public int RSSEQ { get; set; }
|
||||
public string RSGRPID { get; set; } = string.Empty;
|
||||
public string RSREFID { get; set; } = string.Empty;
|
||||
public string RSSPID { get; set; } = string.Empty;
|
||||
public string RSLNKID { get; set; } = string.Empty;
|
||||
public string RSLNKGRP { get; set; } = string.Empty;
|
||||
public string RSTESTCD { get; set; } = string.Empty;
|
||||
public string RSTEST { get; set; } = string.Empty;
|
||||
public string RSCAT { get; set; } = string.Empty;
|
||||
public string RSORRES { get; set; } = string.Empty;
|
||||
public string RSSTRESC { get; set; } = string.Empty;
|
||||
public string RSSTAT { get; set; } = string.Empty;
|
||||
public string RSREASND { get; set; } = string.Empty;
|
||||
public string RSNAM { get; set; } = string.Empty;
|
||||
|
||||
public string RSEVAL { get; set; } = string.Empty;
|
||||
public string RSEVALID { get; set; } = string.Empty;
|
||||
public string RSACPTFL { get; set; } = string.Empty;
|
||||
public decimal VISITNUM { get; set; } = 0;
|
||||
public string VISIT { get; set; } = string.Empty;
|
||||
public int VISITDY { get; set; } = 0;
|
||||
public string EPOCH { get; set; } = string.Empty;
|
||||
public string RSDTC { get; set; } = string.Empty;
|
||||
public int RSDY { get; set; } = 0;
|
||||
public string TpCode { get; set; } = string.Empty;
|
||||
public Guid StudyGuid { get; set; } = Guid.Empty;
|
||||
public Guid TrialGuid { get; set; } = Guid.Empty;
|
||||
public Guid SubjectGuid { get; set; } = Guid.Empty;
|
||||
public string Note { get; set; } = string.Empty;
|
||||
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
public class StudyDTF : Entity, IAuditAdd
|
||||
{
|
||||
[ForeignKey("StudyId")]
|
||||
public DicomStudy DicomStudy { get; set; }
|
||||
public Guid StudyId { get; set; } = Guid.Empty;
|
||||
|
||||
public string FileName { get; set; } = string.Empty;
|
||||
|
||||
public string Path { get; set; } = string.Empty;
|
||||
|
||||
|
||||
//public byte[] RowVersion { get; set; } = default;
|
||||
|
||||
|
||||
public Guid CreateUserId { get; set; }
|
||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("StudyReviewer")]
|
||||
public class StudyReviewer : Entity, IAuditAdd
|
||||
{
|
||||
public Guid StudyId { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
// 2是 ad 1是tp
|
||||
public int WorkloadType { get; set; } = 0;
|
||||
public int Status { get; set; } = 30;
|
||||
public Guid CreateUserId { get; set; }
|
||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("StudyStatusDetail")]
|
||||
public class StudyStatusDetail : Entity
|
||||
{
|
||||
public Guid StudyId { get; set; }
|
||||
public int Status { get; set; } = 0;
|
||||
public string OptUserName { get; set; } = string.Empty;
|
||||
public DateTime OptTime { get; set; } = DateTime.Now;
|
||||
public string Note { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("SystemLog")]
|
||||
public partial class SystemLog : Entity
|
||||
{
|
||||
public string ApiPath { get; set; } = string.Empty;
|
||||
public string Params { get; set; } = string.Empty;
|
||||
public string Result { get; set; } = string.Empty;
|
||||
public DateTime RequestTime { get; set; } = DateTime.Now;
|
||||
public long ElapsedMilliseconds { get; set; } = 0;
|
||||
public Guid OptUserId { get; set; } = Guid.Empty;
|
||||
public string OptUserName { get; set; } = string.Empty;
|
||||
public string ClientIP { get; set; } = string.Empty;
|
||||
public bool Status { get; set; } = true;
|
||||
public string Message { get; set; } = string.Empty;
|
||||
public string LogCategory { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("TrialAttachment")]
|
||||
public class TrialAttachment : Entity, IAuditUpdate, IAuditAdd
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
public string Type { get; set; } = String.Empty;
|
||||
public string DocumentName { get; set; } = String.Empty;
|
||||
public string DocumentPath { get; set; } = String.Empty;
|
||||
|
||||
public string UserTypes { get; set; } = String.Empty;
|
||||
|
||||
public DateTime CreateTime { get; set; }
|
||||
public Guid CreateUserId { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
public Guid UpdateUserId { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
[Table("WorkloadTP")]
|
||||
public class WorkloadTP : Entity
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
public Guid SiteId { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
public Guid StudyId { get; set; }
|
||||
public string TimepointCode { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
public int Status { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
}
|
||||
|
||||
[Table("WorkloadGlobal")]
|
||||
public class WorkloadGlobal : Entity
|
||||
{
|
||||
public Guid SiteId { get; set; }
|
||||
public Guid VisitId { get; set; }
|
||||
public string VisitName { get; set; }
|
||||
|
||||
|
||||
// 项目Id,受试者Id,num 共同决定 Global 关联的所有study,
|
||||
// 暂定设计成这样,后期如有需要,爱用中间表 关联。
|
||||
public Guid TrialId { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
public decimal VisitNum { get; set; }
|
||||
|
||||
public string GlobalCode { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
public int Status { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
}
|
||||
|
||||
[Table("WorkloadAD")]
|
||||
public class WorkloadAD : Entity
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
public Guid SiteId { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
public string ADCode { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
public int Status { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
public Guid Global1Id { get; set; }
|
||||
public Guid Global2Id { get; set; }
|
||||
|
||||
public Guid? SelectGlobalId { get; set; }
|
||||
|
||||
public string AdNote { get; set; }
|
||||
}
|
||||
|
||||
[Table("WorkloadDetail")]
|
||||
public class WorkloadDetail : Entity
|
||||
{
|
||||
public Guid WorkloadId { get; set; }
|
||||
public string OptUserName { get; set; }
|
||||
public DateTime OptTime { get; set; } = DateTime.Now;
|
||||
public int Status { get; set; }
|
||||
public Guid ReviewerId { get; set; } = Guid.Empty;
|
||||
}
|
||||
}
|
|
@ -311,7 +311,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
public virtual DbSet<PreviousOther> PreviousOther { get; set; }
|
||||
public virtual DbSet<PreviousHistory> PreviousHistory { get; set; }
|
||||
|
||||
public virtual DbSet<StudyDTF> StudyDTF { get; set; }
|
||||
public virtual DbSet<DicomStudy> DicomStudys { get; set; }
|
||||
public virtual DbSet<DicomSeries> DicomSeries { get; set; }
|
||||
public virtual DbSet<DicomInstance> DicomInstances { get; set; }
|
||||
|
@ -367,7 +366,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
public virtual DbSet<TrialSiteEquipmentSurvey> TrialSiteEquipmentSurvey { get; set; }
|
||||
public virtual DbSet<TrialSiteSurvey> TrialSiteSurvey { get; set; }
|
||||
|
||||
public virtual DbSet<StudyStatusDetail> StudyStatusDetails { get; set; }
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
using IRaCIS.Core.Domain.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore
|
||||
{
|
||||
public interface ITURepository : IRepository<TU>
|
||||
{
|
||||
}
|
||||
public interface ITRRepository : IRepository<TR>
|
||||
{
|
||||
}
|
||||
public interface IRSRepository : IRepository<RS>
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain;
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore
|
||||
{
|
||||
public interface IWorkloadTPRepository : IRepository<WorkloadTP>
|
||||
{
|
||||
}
|
||||
public interface IWorkloadGlobalRepository : IRepository<WorkloadGlobal>
|
||||
{
|
||||
}
|
||||
public interface IWorkloadADRepository : IRepository<WorkloadAD>
|
||||
{
|
||||
}
|
||||
|
||||
public interface IWorkloadDetailRepository : IRepository<WorkloadDetail>
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore
|
||||
{
|
||||
//public class TURepository : Repository<TU>, ITURepository
|
||||
//{
|
||||
// public TURepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
//public class TRRepository : Repository<TR>, ITRRepository
|
||||
//{
|
||||
// public TRRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
//public class RSRepository : Repository<RS>, IRSRepository
|
||||
//{
|
||||
// public RSRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore
|
||||
{
|
||||
//public class WorkloadTPRepository : Repository<WorkloadTP>, IWorkloadTPRepository
|
||||
//{
|
||||
// public WorkloadTPRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
//public class WorkloadGlobalRepository : Repository<WorkloadGlobal>, IWorkloadGlobalRepository
|
||||
//{
|
||||
// public WorkloadGlobalRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
//public class WorkloadADRepository : Repository<WorkloadAD>, IWorkloadADRepository
|
||||
//{
|
||||
// public WorkloadADRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
//public class WorkloadDetailRepository : Repository<WorkloadDetail>, IWorkloadDetailRepository
|
||||
//{
|
||||
// public WorkloadDetailRepository(IRaCISDBContext db) : base(db)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
}
|
Loading…
Reference in New Issue