diff --git a/EI_TestProject/APITest.cs b/EI_TestProject/APITest.cs
new file mode 100644
index 00000000..bf079ad3
--- /dev/null
+++ b/EI_TestProject/APITest.cs
@@ -0,0 +1,926 @@
+using System.Net;
+using System.Text;
+using System.Text.Json.Nodes;
+using Azure.Core;
+using BeetleX.Clients;
+using BeetleX.Redis.Commands;
+using EI_TestProject;
+using IRaCIS.Application.Contracts;
+using IRaCIS.Core.Application.Contracts;
+using IRaCIS.Core.Application.ViewModel;
+using IRaCIS.Core.Domain.Models;
+using IRaCIS.Core.Infrastructure;
+using IRaCIS.Core.Infrastructure.Extention;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Org.BouncyCastle.Asn1.Crmf;
+using Org.BouncyCastle.Asn1.Ocsp;
+using RestSharp;
+using Xunit;
+using Xunit.Abstractions;
+
+public class UserApiTests : IDisposable
+{
+ private RestClient _client;
+
+
+
+ public UserApiTests()
+ {
+ // 创建一个 RestClient 对象,并设置基本 URL
+ //client = new RestClient("http://localhost:6100");
+
+ _client = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "Admin", MD5Helper.Md5("WHxckj@2019"));
+
+ }
+
+ #region 用户 用户类型
+ ///
+ /// 添加系统用户
+ ///
+ [Fact]
+ public async void Test_AddUser()
+ {
+
+ var url = $"/user/addUser";
+
+ var jsonBody = new JObject
+ {
+ { "UserName", "test_hang" },
+ { "LastName", "zhou" },
+ { "FirstName", "hang" },
+ { "Sex", 1 },
+ { "EMail", "872297557@qq.com" },
+ { "Phone", "" },
+ { "UserTypeId", "40240000-3e2c-0016-b35f-08db1895d627" },
+ { "IsZhiZhun", "" },
+ { "OrganizationName", "" },
+ { "DepartmentName", "" },
+ { "PositionName", "" },
+ { "IsTestUser", true },
+ { "UserTypeEnum", 1 },
+ { "BaseUrl", "http://123.56.94.154:8090/login" },
+ { "RouteUrl", "http://123.56.94.154:8090/email-recompose" },
+ { "RealName", string.Empty }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// 更新用户
+ ///
+ [Fact]
+ public async void Test_UpdateUser()
+ {
+ var url = $"/user/updateUser";
+
+ var jsonBody = new JObject
+ {
+ { "CanEditUserType", false },
+ { "Id", "d83f0000-3e2c-0016-2ed8-08db3f051caf" },
+ { "UserName", "zhouhang" },
+ { "Password", "e10adc3949ba59abbe56e057f20f883e" },
+ { "RealName", "zhou / hang" },
+ { "FirstName", "hang" },
+ { "LastName", "zhou" },
+ { "Sex", 1 },
+ { "Status", 1 },
+ { "Phone", "17673237815" },
+ { "EMail", "872297557@qq.com" },
+ { "UserTypeId", "40240000-3e2c-0016-b35f-08db1895d627" },
+ { "UserCode", "U0178" },
+ { "UserType", "PM (Project Manager)" },
+ { "UserTypeShortName", "PM" },
+ { "UserTypeEnum", 1 },
+ { "IsZhiZhun", true },
+ { "OrganizationName", "ExtImaging" },
+ { "DepartmentName", "xx" },
+ { "PositionName", "xx" },
+ { "IsTestUser", false },
+ { "BaseUrl", "http://123.56.94.154:8090/login" },
+ { "RouteUrl", "http://123.56.94.154:8090/email-recompose" }
+ };
+
+ var result = await RestHelper.Put_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 重置密码
+ ///
+ [Fact]
+ public async void Test_ResetPassword()
+ {
+ var id = Guid.Parse("d05c0000-3e2c-0016-64eb-08db617a483b");
+ var url = $"/user/resetPassword/{id}";
+
+ var result = await RestHelper.GetRequestAsync>(url);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+
+ }
+
+ ///
+ /// 查询系统用户
+ ///
+ [Fact]
+ public async void Test_GetUserList()
+ {
+ var url = $"/user/getUserList";
+
+ var jsonBody = new JObject
+ {
+ { "RealName", string.Empty }
+ };
+
+ //测试删除Api
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+
+
+ ///
+ /// 删除系统用户
+ ///
+ [Fact]
+ public async void Test_DeleteUser()
+ {
+ var userId = Guid.Parse("98430000-3e2c-0016-225f-08db7612c7ae");
+ var url = $"/user/deleteUser/{userId}";
+
+ //测试删除Api
+ var result = await RestHelper.DeleteRequestAsync>(url);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 角色
+ ///
+ [Fact]
+ public async void Test_GetUserTypeRoleList()
+ {
+ var url = $"/UserTypeRole/getUserTypeRoleList";
+ var jsonBody = new JObject
+ {
+
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.Count >= 0);
+ }
+
+ #endregion
+
+
+ #region 匿名化
+ ///
+ /// 匿名化配置
+ ///
+ [Fact]
+ public async void Test_getSystemAnonymizationList()
+ {
+ var url = $"/SystemAnonymization/getSystemAnonymizationList";
+
+ var jsonBody = new JObject
+ {
+ { "Group", "" },
+ { "Element", "" },
+ { "TagDescription", "" },
+ { "IsAdd", false },
+ { "TagDescriptionCN", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 500 }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+
+
+ ///
+ /// 删除匿名化配置
+ ///
+ [Fact]
+ public async void Test_DeleteSystemAnonymization()
+ {
+ var id = Guid.Parse("98430000-3e2c-0016-225f-08db7612c7ae");
+ var url = $"/SystemAnonymization/deleteSystemAnonymization/{id}";
+
+ //测试删除Api
+ var result = await RestHelper.DeleteRequestAsync>(url);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 更新 匿名化配置
+ ///
+ [Fact]
+ public async void Test_UpdateSystemAnonymization()
+ {
+
+ var url = $"/SystemAnonymization/addOrUpdateSystemAnonymization";
+
+ var jsonBody = new JObject
+ {
+ { "CreateUserId", "e2e165a0-44b0-4b16-9a4d-0b9b7a1ce362" },
+ { "UpdateTime", "2023-06-19 14:36:56" },
+ { "UpdateUserId", "e2e165a0-44b0-4b16-9a4d-0b9b7a1ce362" },
+ { "CreateTime", "2023-06-15 10:21:19" },
+ { "Id", "640a0000-3e2c-0016-ae9b-08db6d4734c9" },
+ { "Group", "1" },
+ { "Element", "2" },
+ { "TagDescription", "3" },
+ { "TagDescriptionCN", "4" },
+ { "ReplaceValue", "123" },
+ { "ValueRepresentation", "5" },
+ { "IsAdd", false },
+ { "IsEnable", true },
+ { "IsFixed", true }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 添加 匿名化配置
+ ///
+ [Fact]
+ public async void Test_AddSystemAnonymization()
+ {
+
+ var url = $"/SystemAnonymization/addOrUpdateSystemAnonymization";
+
+
+ var jsonBody = new JObject
+ {
+ { "Group", "0010" },
+ { "Element", "0021" },
+ { "TagDescription", "test" },
+ { "TagDescriptionCN", "test" },
+ { "ValueRepresentation", "test" },
+ { "ReplaceValue", "test" },
+ { "IsEnable", false },
+ { "IsAdd", false },
+ { "IsFixed", false }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+ #endregion
+
+
+ #region 项目
+
+ /// 查询系项目列表
+ ///
+ [Fact]
+ public async void Test_GetTrialList()
+ {
+ var url = $"/trial/getTrialList";
+
+ var jsonBody = new JObject
+ {
+ { "Code", "" },
+ { "CriterionIds", new JArray() },
+ { "SponsorId", "" },
+ { "ReviewTypeIds", new JArray() },
+ { "CROId", "" },
+ { "Expedited", "" },
+ { "Indication", "" },
+ { "Phase", "" },
+ { "ModalityIds", new JArray() },
+ { "BeginDate", "" },
+ { "EndDate", "" },
+ { "AttendedReviewerType", "" },
+ { "ResearchProgramNo", "" },
+ { "ExperimentName", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "Asc", false },
+ { "SortField", "" }
+ };
+
+ //测试删除Api
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+
+
+ ///
+ /// 更新项目
+ ///
+ [Fact]
+ public async void Test_UpdateTrial()
+ {
+ var pmclient = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "PM01", MD5Helper.Md5("WHxckj@2019"));
+
+ var url = $"/trial/addOrUpdateTrial";
+
+ var jsonBody = new JObject
+ {
+ { "Id", "20430000-3e2c-0016-aa08-08db791c6ae5" },
+ { "TrialCode", "23000067" },
+ { "TrialType", 1 },
+ { "SponsorId", "" },
+ { "CROId", "" },
+ { "ReviewModeId", "" },
+ { "ReviewTypeIds", new JArray() },
+ { "Expedited", 0 },
+ { "ModalityIds", new JArray() },
+ { "Note", "" },
+ { "ExpectedPatients", 0 },
+ { "TimePointsPerPatient", 0 },
+ { "ProjectCycle", "" },
+ { "TotalReviewers", 0 },
+ { "DeclarationTypeId", "742e0000-3e2c-0016-b5ca-08da6222442f" },
+ { "IndicationTypeId", "437a81b3-c5ad-49fd-82a1-8f441c4ba8da" },
+ { "PhaseId", "b1509dde-234a-46ce-cf13-08d9c120c961" },
+ { "AttendedReviewerType", 0 },
+ { "IsLocked", false },
+ { "ResearchProgramNo", "111" },
+ { "ExperimentName", "项目1" },
+ { "MainResearchUnit", "" },
+ { "HeadPI", "" },
+ { "PlanSiteCount", 0 },
+ { "PlanVisitCount", 0 },
+ { "Indication", "肺癌" },
+ { "IndicationOther", null }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody,restClient: pmclient);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// 添加项目
+ ///
+ ///
+ [Fact]
+ public async void Test_AddTrial()
+ {
+ var pmclient = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "PM01", MD5Helper.Md5("WHxckj@2019"));
+
+ var url = $"/trial/addOrUpdateTrial";
+
+ var jsonBody = new JObject
+ {
+ { "Id", "" },
+ { "TrialType", 1 },
+ { "SponsorId", "" },
+ { "CROId", "" },
+ { "ReviewModeId", "" },
+ { "ReviewTypeIds", new JArray() },
+ { "Expedited", 0 },
+ { "ModalityIds", new JArray("b44915a2-6f08-45f8-bd6c-74abad2298e1", "80480000-3e2c-0016-f090-08da6b92accd") },
+ { "Note", "" },
+ { "ExpectedPatients", 0 },
+ { "TimePointsPerPatient", 0 },
+ { "ProjectCycle", "" },
+ { "TotalReviewers", 0 },
+ { "DeclarationTypeId", "742e0000-3e2c-0016-b5ca-08da6222442f" },
+ { "IndicationTypeId", "437a81b3-c5ad-49fd-82a1-8f441c4ba8da" },
+ { "PhaseId", "b1509dde-234a-46ce-cf13-08d9c120c961" },
+ { "AttendedReviewerType", 0 },
+ { "IsLocked", false },
+ { "ResearchProgramNo", "111" },
+ { "ExperimentName", "test" },
+ { "MainResearchUnit", "" },
+ { "HeadPI", "zz" },
+ { "PlanSiteCount", null },
+ { "PlanVisitCount", null },
+ { "Indication", "肺癌" },
+ { "IndicationOther", null }
+ };
+
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody, restClient: pmclient);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// 删除项目
+ ///
+ [Fact]
+ public async void Test_DeleteTrial()
+ {
+ var pmclient = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "PM01", MD5Helper.Md5("WHxckj@2019"));
+
+ var url = $"/TrialConfig/abandonTrial/dc080000-3e2c-0016-fd6b-08db8cb80e5d/true";
+
+ var jsonBody = new JObject
+ { };
+
+
+ var result = await RestHelper.Put_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ #endregion
+
+
+ #region 患者
+
+ ///
+ /// 查询患者列表
+ ///
+ [Fact]
+ public async void Test_GetSubjctList()
+ {
+ var url = $"/subject/getSubjectList";
+
+ var jsonBody = new JObject
+ {
+ { "Code", "" },
+ { "Status", "" },
+ { "SiteId", "" },
+ { "ShortName", "" },
+ { "Sex", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "TrialId", "dc080000-3e2c-0016-64c6-08db8cb8ed81" }
+ };
+
+ //测试删除Api
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+ ///
+ /// 添加患者
+ ///
+ [Fact]
+ public async void Test_AddSubjet()
+ {
+
+ var url = $"/subject/addOrUpdateSubject";
+ var jsonBody = new JObject
+ {
+ { "Id", "" },
+ { "Code", "01001" },
+ { "ShortName", "" },
+ { "Height", "" },
+ { "Weight", "" },
+ { "Age", "23" },
+ { "Sex", "男" },
+ { "BirthDate", "" },
+ { "SiteId", "db83e2f5-1f2e-408f-a45b-08d8e1dcace0" },
+ { "MedicalNo", "" },
+ { "Status", 1 },
+ { "FirstGiveMedicineTime", "" },
+ { "OutEnrollmentTime", "" },
+ { "VisitOverTime", "" },
+ { "Reason", "" },
+ { "StudyCount", "" },
+ { "SignDate", "" },
+ { "IsUrgent", false },
+ { "TrialId", "dc080000-3e2c-0016-64c6-08db8cb8ed81" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// 更新患者
+ ///
+ [Fact]
+ public async void Test_UpdateSubject()
+ {
+ var url = $"/subject/addOrUpdateSubject";
+ var jsonBody = new JObject
+ {
+ { "Id", "20430000-3e2c-0016-a444-08db791c6dad" },
+ { "Code", "患者12" },
+ { "ShortName", "" },
+ { "Height", "" },
+ { "Weight", "" },
+ { "Age", 33 },
+ { "Sex", "" },
+ { "BirthDate", null },
+ { "SiteId", "db83e2f5-1f2e-408f-a45b-08d8e1dcace0" },
+ { "MedicalNo", "" },
+ { "Status", 1 },
+ { "FirstGiveMedicineTime", null },
+ { "OutEnrollmentTime", null },
+ { "VisitOverTime", null },
+ { "Reason", "" },
+ { "StudyCount", "" },
+ { "SignDate", null },
+ { "IsUrgent", false },
+ { "TrialId", "20430000-3e2c-0016-aa08-08db791c6ae5" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// 删除患者
+ ///
+
+ [Fact]
+ public async void Test_DeleteSubjet()
+ {
+ var url = $"/subject/deleteSubject/20430000-3e2c-0016-aa08-08db791c6ae5/20430000-3e2c-0016-d10d-08db791c6ef0";
+
+ //测试删除Api
+ var result = await RestHelper.DeleteRequestAsync>(url);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ #endregion
+
+
+ #region 参与人员
+ ///
+ /// 查询参与人员列表
+ ///
+ [Fact]
+ public async void Test_GetTrialUserList()
+ {
+ var url = $"/trialMaintenance/getMaintenanceUserList";
+
+ var jsonBody = new JObject
+ {
+ { "UserRealName", "" },
+ { "UserName", "" },
+ { "UserTypeId", "" },
+ { "OrganizationName", "" },
+ { "IsDeleted", null },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "TrialId", "20430000-3e2c-0016-aa08-08db791c6ae5" }
+ };
+
+ //测试删除Api
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+
+ ///
+ /// 查询参与人员列表
+ ///
+ [Fact]
+ public async void Test_GetTrialUserScreeningList()
+ {
+ var url = $"/trialMaintenance/getTrialUserScreeningList";
+
+ var jsonBody = new JObject
+ {
+ { "UserRealName", "" },
+ { "UserName", "" },
+ { "UserTypeId", "" },
+ { "OrganizationName", "" },
+ { "IsDeleted", null },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "TrialId", "20430000-3e2c-0016-aa08-08db791c6ae5" }
+ };
+
+ //测试删除Api
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+
+
+ ///
+ /// 添加参与人员
+ ///
+ [Fact]
+ public async void Test_AddTrialUser()
+ {
+
+ var url = $"/trialMaintenance/addTrialUsers";
+ var jsonBody = new JArray
+ {
+ new JObject
+ {
+ { "Sex", 1 },
+ { "Phone", "" },
+ { "EMail", "446322065@qq.com" },
+ { "DepartmentName", "" },
+ { "PositionName", "" },
+ { "UserName", "IR02" },
+ { "IsSelect", false },
+ { "UserTypeId", "40240000-3e2c-0016-ad69-08db18965090" },
+ { "UserType", "IR" },
+ { "UserTypeEnum", 13 },
+ { "OrganizationName", "" },
+ { "UserRealName", "IR02 / IR02" },
+ { "UserId", "9c3b0000-3e2c-0016-3606-08db706de699" },
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" }
+ }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 更新项目参与用户
+ ///
+ [Fact]
+ public async void Test_UpdateTrialUser()
+ {
+ var pmclient = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "PM01", MD5Helper.Md5("WHxckj@2019"));
+
+ var url = $"/trialMaintenance/updateTrialUser";
+
+ var jsonBody = new JObject
+ {
+ { "id", "dc080000-3e2c-0016-beab-08db8cce772d" },
+ { "trialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" },
+ { "isDeleted", true },
+ { "removeTime", "2023-07-03" },
+ { "joinTime", "" }
+ };
+
+ var result = await RestHelper.Put_JsonBodyRequestAsync>(url, jsonBody,restClient: pmclient);
+
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ #endregion
+
+
+ #region 任务 和阅片
+
+
+ ///
+ /// 阅片任务分配列表
+ ///
+ [Fact]
+ public async void Test_GetTrialSubjectAssignAndTask()
+ {
+ var url = $"/VisitTask/getSubjectAssignAndTaskStatList";
+
+ var jsonBody = new JObject
+ {
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "Asc", true },
+ { "SortField", "" },
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" },
+ { "SiteId", null },
+ { "SubjectId", null },
+ { "SubjectCode", null },
+ { "DoctorUserId", null },
+ { "IsHaveAssigned", null },
+ { "IsAssignConfirmed", null },
+ { "TrialReadingCriterionId", "e4070000-3e2c-0016-9b99-08db373d9aed" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.CurrentPageData.Count >= 0);
+ }
+
+ ///
+ /// 阅片任务分配给阅片人
+ ///
+ [Fact]
+ public async void Test_batchAssignDoctorToSubject()
+ {
+ var url = $"/VisitTask/batchAssignDoctorToSubject";
+
+ var jsonBody = new JObject
+ {
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" },
+ { "TrialReadingCriterionId", "e4070000-3e2c-0016-9b99-08db373d9aed" },
+ { "SubjectIdList", new JArray("7c3f0000-3e2c-0016-1129-08db51c37208") },
+ {
+ "DoctorArmList", new JArray(
+ new JObject
+ {
+ { "ArmEnum", 0 },
+ { "DoctorUserId", "e4070000-3e2c-0016-4e7a-08db37438068" }
+ }
+ )
+ }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+
+ ///
+ /// 获取可分配阅片人列表
+ ///
+
+ [Fact]
+ public async void Test_getDoctorSelectList()
+ {
+ var url = $"/TaskAllocationRule/getDoctorSelectList";
+
+ var jsonBody = new JObject
+ {
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" },
+ { "ReadingCategory", 2 },
+ { "TrialReadingCriterionId", "e4070000-3e2c-0016-9b99-08db373d9aed" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Data.Count >= 0);
+ }
+
+
+ ///
+ /// 取消分配的阅片人
+ ///
+ [Fact]
+ public async void Test_cancelSubjectAssignedDoctor()
+ {
+ var url = $"/VisitTask/cancelSubjectAssignedDoctor";
+
+ var jsonBody = new JObject
+ {
+ {
+ "CancelList", new JArray(
+ new JObject
+ {
+ { "Id", "dc080000-3e2c-0016-616d-08db8cd1f7ba" },
+ { "SubjectId", "7c3f0000-3e2c-0016-1129-08db51c37208" },
+ { "DoctorUserId", "e4070000-3e2c-0016-4e7a-08db37438068" },
+ { "ArmEnum", 0 },
+ { "IsCancelAssign", true }
+ }
+ )
+ },
+ { "Note", "\n取消阅片人(IR01(张 / 航));" },
+ { "TrialReadingCriterionId", "e4070000-3e2c-0016-9b99-08db373d9aed" },
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ ///
+ /// 患者检查列表
+ ///
+ [Fact]
+ public async void Test_getCRCVisitList()
+ {
+ var url = $"/QCList/getCRCVisitList";
+
+ var jsonBody = new JObject
+ {
+ { "SubjectInfo", "" },
+ { "SiteId", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "VisitPlanArray", new JArray() },
+ { "AuditStateArray", new JArray() },
+ { "SubmitState", null },
+ { "ChallengeState", null },
+ { "BeginSubmitTime", null },
+ { "EndSubmitTime", null },
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ ///阅片跟踪列表
+ ///
+ [Fact]
+ public async void Test_getReadingTaskList()
+ {
+ var url = $"/VisitTask/getReadingTaskList";
+
+ var jsonBody = new JObject
+ {
+ { "SubjectInfo", "" },
+ { "SiteId", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "VisitPlanArray", new JArray() },
+ { "AuditStateArray", new JArray() },
+ { "SubmitState", null },
+ { "ChallengeState", null },
+ { "BeginSubmitTime", null },
+ { "EndSubmitTime", null },
+ { "TrialId", "e4070000-3e2c-0016-2eb5-08db373d9ae2" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+ ///
+ /// IR 待阅任务列表
+ ///
+ [Fact]
+ public async void Test_getIRUnReadSubjectTaskList()
+ {
+ var url = $"/VisitTask/getIRUnReadSubjectTaskList";
+
+ var jsonBody = new JObject
+ {
+ { "SubjectCode", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "TrialId", "c02a0000-3e2c-0016-cb0f-08db715ea9be" },
+ { "TrialReadingCriterionId", "c02a0000-3e2c-0016-e8ae-08db715ea9e4" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ [Fact]
+ public async void Test_getIRHaveReadTaskList()
+ {
+ var url = $"/VisitTask/getIRHaveReadTaskList";
+
+ var jsonBody = new JObject
+ {
+ { "SubjectCode", "" },
+ { "SortField", "" },
+ { "PageIndex", 1 },
+ { "PageSize", 20 },
+ { "TaskState", null },
+ { "ReadingCategory", null },
+ { "TrialId", "c02a0000-3e2c-0016-cb0f-08db715ea9be" },
+ { "TrialReadingCriterionId", "c02a0000-3e2c-0016-e8ae-08db715ea9e4" }
+ };
+
+ var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
+
+ Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
+ }
+
+
+ #endregion
+
+
+ public void Dispose()
+ {
+ // 在测试结束后释放资源(例如关闭网络连接等)
+ _client?.Dispose();
+ }
+}
\ No newline at end of file
diff --git a/EI_TestProject/APITest_User_UserType_Menu.cs b/EI_TestProject/APITest_User_UserType_Menu.cs
deleted file mode 100644
index 127b89b4..00000000
--- a/EI_TestProject/APITest_User_UserType_Menu.cs
+++ /dev/null
@@ -1,286 +0,0 @@
-using System.Net;
-using System.Text;
-using System.Text.Json.Nodes;
-using Azure.Core;
-using BeetleX.Redis.Commands;
-using EI_TestProject;
-using IRaCIS.Application.Contracts;
-using IRaCIS.Core.Application.Contracts;
-using IRaCIS.Core.Application.ViewModel;
-using IRaCIS.Core.Infrastructure;
-using IRaCIS.Core.Infrastructure.Extention;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using Org.BouncyCastle.Asn1.Crmf;
-using Org.BouncyCastle.Asn1.Ocsp;
-using RestSharp;
-using Xunit;
-using Xunit.Abstractions;
-
-public class UserApiTests : IDisposable
-{
- private RestClient _client;
-
-
-
- public UserApiTests()
- {
- // 创建一个 RestClient 对象,并设置基本 URL
- //client = new RestClient("http://localhost:6100");
-
- _client = RestHelper.InitRestHelper("http://123.56.94.154:8090/api", "Admin", MD5Helper.Md5("WHxckj@2019"));
-
- }
-
-
- ///
- /// 添加系统用户
- ///
- [Fact]
- public async void Test_AddUser()
- {
-
- var url = $"/user/addUser";
-
- var jsonBody = new JObject
- {
- { "UserName", "test_hang" },
- { "LastName", "zhou" },
- { "FirstName", "hang" },
- { "Sex", 1 },
- { "EMail", "872297557@qq.com" },
- { "Phone", "" },
- { "UserTypeId", "40240000-3e2c-0016-b35f-08db1895d627" },
- { "IsZhiZhun", "" },
- { "OrganizationName", "" },
- { "DepartmentName", "" },
- { "PositionName", "" },
- { "IsTestUser", true },
- { "UserTypeEnum", 1 },
- { "BaseUrl", "http://123.56.94.154:8090/login" },
- { "RouteUrl", "http://123.56.94.154:8090/email-recompose" },
- { "RealName", string.Empty }
- };
-
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>(url,jsonBody);
-
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
- ///
- /// 更新用户
- ///
- public async void Test_UpdateUser()
- {
- var url = $"/user/updateUser";
-
- var jsonBody = new JObject
- {
- { "CanEditUserType", false },
- { "Id", "d83f0000-3e2c-0016-2ed8-08db3f051caf" },
- { "UserName", "zhouhang" },
- { "Password", "e10adc3949ba59abbe56e057f20f883e" },
- { "RealName", "zhou / hang" },
- { "FirstName", "hang" },
- { "LastName", "zhou" },
- { "Sex", 1 },
- { "Status", 1 },
- { "Phone", "17673237815" },
- { "EMail", "872297557@qq.com" },
- { "UserTypeId", "40240000-3e2c-0016-b35f-08db1895d627" },
- { "UserCode", "U0178" },
- { "UserType", "PM (Project Manager)" },
- { "UserTypeShortName", "PM" },
- { "UserTypeEnum", 1 },
- { "IsZhiZhun", true },
- { "OrganizationName", "ExtImaging" },
- { "DepartmentName", "xx" },
- { "PositionName", "xx" },
- { "IsTestUser", false },
- { "BaseUrl", "http://123.56.94.154:8090/login" },
- { "RouteUrl", "http://123.56.94.154:8090/email-recompose" }
- };
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
-
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
- ///
- /// 查询系统用户
- ///
- [Fact]
- public async void Test_GetUserList()
- {
- var url = $"/user/getUserList";
-
- var jsonBody = new JObject
- {
- { "RealName", string.Empty }
- };
-
- //测试删除Api
- var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
-
- Assert.True(result.Data.CurrentPageData.Count >= 0);
- }
-
-
-
- ///
- /// 删除系统用户
- ///
- [Fact]
- public async void Test_DeleteUser()
- {
- var userId = Guid.Parse("98430000-3e2c-0016-225f-08db7612c7ae");
- var url = $"/user/deleteUser/{userId}";
-
- //测试删除Api
- var result = await RestHelper.DeleteRequestAsync>(url);
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
-
- ///
- /// 角色
- ///
- [Fact]
- public async void Test_GetUserTypeRoleList()
- {
- var url = $"/UserTypeRole/getUserTypeRoleList";
- var jsonBody = new JObject
- {
-
- };
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
-
- Assert.True(result.Data.Count >= 0);
- }
-
-
- ///
- /// 匿名化配置
- ///
- [Fact]
- public async void Test_getSystemAnonymizationList()
- {
- var url = $"/SystemAnonymization/getSystemAnonymizationList";
-
- var jsonBody = new JObject
- {
- { "Group", "" },
- { "Element", "" },
- { "TagDescription", "" },
- { "IsAdd", false },
- { "TagDescriptionCN", "" },
- { "PageIndex", 1 },
- { "PageSize", 500 }
- };
-
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>>(url, jsonBody);
-
- Assert.True(result.Data.CurrentPageData.Count >= 0);
- }
-
-
-
- ///
- /// 删除匿名化配置
- ///
- [Fact]
- public async void Test_DeleteSystemAnonymization()
- {
- var id = Guid.Parse("98430000-3e2c-0016-225f-08db7612c7ae");
- var url = $"/SystemAnonymization/deleteSystemAnonymization/{id}";
-
- //测试删除Api
- var result = await RestHelper.DeleteRequestAsync>(url);
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
-
- ///
- /// 更新 匿名化配置
- ///
- [Fact]
- public async void Test_UpdateSystemAnonymization()
- {
-
- var url = $"/SystemAnonymization/addOrUpdateSystemAnonymization";
-
- var jsonBody = new JObject
- {
- { "CreateUserId", "e2e165a0-44b0-4b16-9a4d-0b9b7a1ce362" },
- { "UpdateTime", "2023-06-19 14:36:56" },
- { "UpdateUserId", "e2e165a0-44b0-4b16-9a4d-0b9b7a1ce362" },
- { "CreateTime", "2023-06-15 10:21:19" },
- { "Id", "640a0000-3e2c-0016-ae9b-08db6d4734c9" },
- { "Group", "1" },
- { "Element", "2" },
- { "TagDescription", "3" },
- { "TagDescriptionCN", "4" },
- { "ReplaceValue", "123" },
- { "ValueRepresentation", "5" },
- { "IsAdd", false },
- { "IsEnable", true },
- { "IsFixed", true }
- };
-
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
-
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
-
- ///
- /// 更新 匿名化配置
- ///
- [Fact]
- public async void Test_AddSystemAnonymization()
- {
-
- var url = $"/SystemAnonymization/addOrUpdateSystemAnonymization";
-
-
- var jsonBody = new JObject
- {
- { "Group", "0010" },
- { "Element", "0021" },
- { "TagDescription", "test" },
- { "TagDescriptionCN", "test" },
- { "ValueRepresentation", "test" },
- { "ReplaceValue", "test" },
- { "IsEnable", false },
- { "IsAdd", false },
- { "IsFixed", false }
- };
-
-
- var result = await RestHelper.Post_JsonBodyRequestAsync>(url, jsonBody);
-
-
- Assert.True(result.Code != ApiResponseCodeEnum.ApiInputError && result.Code != ApiResponseCodeEnum.ProgramException);
- }
-
-
-
-
-
-
-
- public void Dispose()
- {
- // 在测试结束后释放资源(例如关闭网络连接等)
- _client?.Dispose();
- }
-}
\ No newline at end of file
diff --git a/EI_TestProject/RestHelper.cs b/EI_TestProject/RestHelper.cs
index 99c3835d..6165641c 100644
--- a/EI_TestProject/RestHelper.cs
+++ b/EI_TestProject/RestHelper.cs
@@ -6,6 +6,7 @@ using Newtonsoft.Json;
using RestSharp;
using System.Net;
using IRaCIS.Application.Contracts;
+using System.Security.Policy;
namespace EI_TestProject
{
@@ -59,8 +60,10 @@ namespace EI_TestProject
///
///
///
- public static async Task Post_JsonBodyRequestAsync(string url, JObject jsonBody, bool isAddToken = true)
+ public static async Task Post_JsonBodyRequestAsync(string url, object jsonBody, bool isAddToken = true, RestClient? restClient=null)
{
+ var client = restClient ?? _client;
+
var request = new RestRequest(url, Method.Post);
if (isAddToken)
@@ -71,7 +74,7 @@ namespace EI_TestProject
request.AddParameter("application/json", jsonBody.ToString(), ParameterType.RequestBody);
- var response = await _client.ExecuteAsync(request);
+ var response = await client.ExecuteAsync(request);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject(response.Content);
@@ -82,6 +85,33 @@ namespace EI_TestProject
}
}
+
+ public static async Task Put_JsonBodyRequestAsync(string url, JObject jsonBody, bool isAddToken = true, RestClient? restClient = null)
+ {
+ var client = restClient ?? _client;
+
+ var request = new RestRequest(url, Method.Put);
+
+ if (isAddToken)
+ {
+ var accessToken = _token;
+ request.AddHeader("Authorization", "Bearer " + accessToken);
+ }
+
+ request.AddParameter("application/json", jsonBody.ToString(), ParameterType.RequestBody);
+
+ var response = await client.ExecuteAsync(request);
+ if (response.StatusCode == HttpStatusCode.OK)
+ {
+ return JsonConvert.DeserializeObject(response.Content);
+ }
+ else
+ {
+ throw new Exception($"Error {response.StatusCode}: {response.StatusDescription}. {response.Content}");
+ }
+ }
+
+
///
/// URL Delete 请求封装
///
@@ -107,5 +137,23 @@ namespace EI_TestProject
}
+ public static async Task GetRequestAsync(string url)
+ {
+ var request = new RestRequest(url, Method.Get);
+ var accessToken = _token;
+ request.AddHeader("Authorization", "Bearer " + accessToken);
+
+ var response = await _client.ExecuteAsync(request);
+ if (response.StatusCode == HttpStatusCode.OK)
+ {
+ return JsonConvert.DeserializeObject(response.Content);
+ }
+ else
+ {
+ throw new Exception($"Error {response.StatusCode}: {response.StatusDescription}. {response.Content}");
+ }
+ }
+
+
}
}
\ No newline at end of file