diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs
index 6c585bb0f..6efb789d6 100644
--- a/IRaCIS.Core.API/Controllers/InspectionController.cs
+++ b/IRaCIS.Core.API/Controllers/InspectionController.cs
@@ -82,6 +82,30 @@ namespace IRaCIS.Core.API.Controllers
this._dataInspectionRepository = dataInspectionRepository;
}
+ #region 文件管理
+
+ ///
+ ///
+ ///
+ /// 参数
+ ///
+ [HttpPost, Route("Inspection/trialDocument/AddOrUpdateTrialDocument")]
+ [UnitOfWork]
+ public async Task AddOrUpdateTrialDocument(DataInspectionDto opt)
+ {
+ var fun = _trialDocumentService.AddOrUpdateTrialDocument;
+ return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
+ }
+
+
+ [HttpPost, Route("Inspection/trialDocument/UserAbandonDoc")]
+ [UnitOfWork]
+ public async Task UserAbandonDoc(DataInspectionDto opt)
+ {
+ var fun = _trialDocumentService.UserAbandonDoc;
+ return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
+ }
+ #endregion
#region 获取稽查数据
///
diff --git a/IRaCIS.Core.API/Controllers/StudyController.cs b/IRaCIS.Core.API/Controllers/StudyController.cs
index 490eae2f2..cbeaf3caa 100644
--- a/IRaCIS.Core.API/Controllers/StudyController.cs
+++ b/IRaCIS.Core.API/Controllers/StudyController.cs
@@ -22,6 +22,7 @@ using IRaCIS.Core.Application.Service.Inspection.Interface;
using Newtonsoft.Json;
using IRaCIS.Core.Application.Service.Inspection.DTO;
using IRaCIS.Core.Domain.Share;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Api.Controllers
{
@@ -238,7 +239,7 @@ namespace IRaCIS.Api.Controllers
TrialId = savedInfo.TrialId,
SubjectVisitId = savedInfo.SubjectVisitId,
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
- JsonDetail = JsonConvert.SerializeObject(savedInfo)
+ JsonDetail = savedInfo.ToJcJson()
});
await _inspectionService.AddListInspectionRecordAsync(datas);
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml
index 5b1e0283d..18b148c95 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.xml
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml
@@ -57,6 +57,13 @@
Financials /Monthly Payment 列表查询接口
+
+
+
+
+ 参数
+
+
获取稽查数据
diff --git a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs
index 0f901b0b6..41bc81d83 100644
--- a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs
@@ -78,6 +78,8 @@ namespace IRaCIS.Core.Application.Service
ModuleTypeId = additem?.ModuleTypeId,
ObjectTypeId = additem?.ObjectTypeId,
OptTypeId = additem?.OptTypeId,
+ DictionaryCode = lst.Max(x => x.DictionaryCode),
+ DictionaryType = lst.Max(x => x.DictionaryType),
DateType = lst.Select(x => x.DateType).FirstOrDefault(),
Id =Guid.NewGuid(),
}).ToList();
@@ -101,6 +103,8 @@ namespace IRaCIS.Core.Application.Service
{
x.Code=x.Code.IsNullOrEmpty()?item.Code:x.Code;
x.Value = x.Code.IsNullOrEmpty() ? item.Value : x.Value;
+ x.DictionaryType = x.DictionaryType.IsNullOrEmpty() ? item.DictionaryType : x.DictionaryType;
+ x.DictionaryCode = x.DictionaryCode.IsNullOrEmpty() ? item.DictionaryCode : x.DictionaryCode;
}
});
diff --git a/IRaCIS.Core.Application/Service/Document/Interface/ITrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/Interface/ITrialDocumentService.cs
index 19a0dd636..b712a7198 100644
--- a/IRaCIS.Core.Application/Service/Document/Interface/ITrialDocumentService.cs
+++ b/IRaCIS.Core.Application/Service/Document/Interface/ITrialDocumentService.cs
@@ -13,6 +13,7 @@ namespace IRaCIS.Core.Application.Contracts
{
public interface ITrialDocumentService
{
+ Task UserAbandonDoc(Guid documentId, bool isSystemDoc);
Task AddOrUpdateTrialDocument(AddOrEditTrialDocument addOrEditTrialDocument);
Task DeleteTrialDocument(Guid trialDocumentId, Guid trialId);
Task> GetDocumentConfirmList(DocumentTrialUnionQuery querySystemDocument);
diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
index f28348a80..d26ac9d0d 100644
--- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
+++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
@@ -14,6 +14,7 @@ using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Application.Service.Inspection.DTO;
using Nito.AsyncEx;
using IRaCIS.Application.Interfaces;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Core.Application.Contracts
{
@@ -138,7 +139,7 @@ namespace IRaCIS.Core.Application.Contracts
TrialId = subvisit.TrialId,
SubjectVisitId = subvisit.Id,
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
- JsonDetail = JsonConvert.SerializeObject(subvisit)
+ JsonDetail = subvisit.ToJcJson()
});
await _inspectionService.AddListInspectionRecordAsync(datas);
@@ -189,7 +190,7 @@ namespace IRaCIS.Core.Application.Contracts
TrialId = subvisit.TrialId,
SubjectVisitId = subvisit.Id,
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
- JsonDetail = JsonConvert.SerializeObject(subvisit)
+ JsonDetail = subvisit.ToJcJson()
});
await _inspectionService.AddListInspectionRecordAsync(datas);
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index e585e9b27..9821e7b8d 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -22,6 +22,7 @@ using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Service.Inspection.DTO;
using Nito.AsyncEx;
using IRaCIS.Application.Interfaces;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Core.Application.Image.QA
{
@@ -1051,7 +1052,7 @@ namespace IRaCIS.Core.Application.Image.QA
TrialId = subvisit.TrialId,
SubjectVisitId = subvisit.Id,
Identification = "Edit|Visit|Status|Visit-Image Upload|Add Image",
- JsonDetail = JsonConvert.SerializeObject(subvisit)
+ JsonDetail = subvisit.ToJcJson()
});
await _inspectionService.AddListInspectionRecordAsync(datas);
return ResponseOutput.Ok();
@@ -1363,12 +1364,7 @@ namespace IRaCIS.Core.Application.Image.QA
TrialId = x.TrialId,
SubjectVisitId = x.Id,
Identification = "Edit|Visit|Status|Visit-Image Upload-1",
- JsonDetail = JsonConvert.SerializeObject(new
- {
- SubmitState = "已提交",
- AuditState="未审核",
-
- })
+ JsonDetail = x.ToJcJson(),
});
});
@@ -1883,7 +1879,7 @@ namespace IRaCIS.Core.Application.Image.QA
IsSign = false,
Identification = "Edit|Subject|Info|Subject",
CreateTime = DateTime.Now.AddSeconds(1),
- JsonDetail = JsonConvert.SerializeObject(command)
+ JsonDetail = command.ToJcJson()
});
}
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
index b659cd347..1059ab65e 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs
@@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Infrastructure;
using Newtonsoft.Json;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Application.Services
{
@@ -34,6 +35,7 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter))]
public async Task> AddOrUpdateSubject([FromBody] SubjectCommand subjectCommand)
{
+ var svlist = new List();
if (await _repository.AnyAsync(t => t.Id == subjectCommand.TrialId && !t.VisitPlanConfirmed))
{
return ResponseOutput.NotOk("The trial visit plan has not been confirmed yet.Please contact the project manager to confirm the visit plan before adding subject.");
@@ -60,7 +62,7 @@ namespace IRaCIS.Application.Services
//添加受试者的时候,获取访视计划列表,添加到受试者访视表。
var visitPlan = await _repository.Where(t => t.TrialId == subjectCommand.TrialId).ToListAsync();
- var svlist = _mapper.Map>(visitPlan);
+ svlist = _mapper.Map>(visitPlan);
var IsEnrollementQualificationConfirm = await _repository.Where(t => t.Id == mapedSubject.TrialId).Select(u => u.IsEnrollementQualificationConfirm).FirstOrDefaultAsync();
@@ -109,8 +111,14 @@ namespace IRaCIS.Application.Services
// })
//});
+
+ JsonSerializerSettings settings = new JsonSerializerSettings();
+ settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
+ settings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
+ //var jsonData = JsonConvert.SerializeObject(info, settings);
+
var visittime = createtime.AddSeconds(1);
- foreach (var item in mapedSubject.SubjectVisitList)
+ foreach (var item in svlist)
{
// 添加访视
datas.Add(new DataInspection()
@@ -125,7 +133,7 @@ namespace IRaCIS.Application.Services
IsSign = false,
CreateTime = visittime,
Identification = "Add|Visit|Info|Visit-Image Upload",
- JsonDetail = JsonConvert.SerializeObject(item)
+ JsonDetail = item.ToJcJson()
});
// 初始化访视
@@ -142,7 +150,7 @@ namespace IRaCIS.Application.Services
IsSign = false,
CreateTime = visittime.AddSeconds(1),
Identification = "Init|Visit|Status|Visit-Image Upload",
- JsonDetail = JsonConvert.SerializeObject(item)
+ JsonDetail = item.ToJcJson()
});
}
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
index 5152aa440..b173a46e2 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
@@ -10,6 +10,7 @@ using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.Service.Inspection.Interface;
using Newtonsoft.Json;
using IRaCIS.Core.Infrastructure;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Core.Application.Services
{
@@ -138,7 +139,7 @@ namespace IRaCIS.Core.Application.Services
IsSign = false,
Identification = "Edit|Subject|Info|Subject",
CreateTime = DateTime.Now.AddSeconds(1),
- JsonDetail = JsonConvert.SerializeObject(subject)
+ JsonDetail = subject.ToJcJson(),
});
await _inspectionService.AddListInspectionRecordAsync(datas);
}
@@ -179,7 +180,7 @@ namespace IRaCIS.Core.Application.Services
IsSign = false,
CreateTime = DateTime.Now.AddSeconds(1),
Identification = "Init|Visit|Status|Visit-Image Upload",
- JsonDetail = JsonConvert.SerializeObject(svCommand)
+ JsonDetail = svCommand.ToJcJson()
});
await _inspectionService.AddListInspectionRecordAsync(dataInspection);
diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
index b4be96fa4..8ebd6e3a6 100644
--- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
@@ -13,6 +13,7 @@ using IRaCIS.Core.Application.Service.Inspection.Interface;
using Newtonsoft.Json;
using IRaCIS.Core.Infrastructure;
using MassTransit;
+using IRaCIS.Core.Domain.Common;
namespace IRaCIS.Application.Services
{
@@ -266,6 +267,7 @@ namespace IRaCIS.Application.Services
t.VisitNum,
t.IsBaseLine,
t.BlindName,
+
t.Description,
IsConfirmed = true,
}).ToListAsync();
@@ -283,7 +285,7 @@ namespace IRaCIS.Application.Services
//SubjectVisitName = x.VisitName,
VisitStageId = x.Id,
TrialId = x.TrialId,
- JsonDetail = JsonConvert.SerializeObject(x),
+ JsonDetail = x.ToJcJson(),
Identification = "Confirm|Visit Plan Template|Data|Trial Setting-Visit Plan",
});
@@ -430,7 +432,7 @@ namespace IRaCIS.Application.Services
VisitName = changedItem.VisitName,
VisitNum = changedItem.VisitNum,
VisitDay = changedItem.VisitDay,
- SubmitState = "未提交",
+ SubmitState = x.SubmitState,
VisitWindowLeft = changedItem.VisitWindowLeft,
VisitWindowRight = changedItem.VisitWindowRight
}),
@@ -456,7 +458,8 @@ namespace IRaCIS.Application.Services
x.SiteId,
x.Id,
x.IsEnrollment,
- x.IsUrgent
+ x.IsUrgent,
+
});
@@ -471,8 +474,26 @@ namespace IRaCIS.Application.Services
{
subjectsids.ForEach(y =>
{
+
+
+
Guid dataindtid = NewId.NextGuid();
Guid guid = NewId.NextGuid();
+
+ SubjectVisit subjectVisit = new SubjectVisit()
+ {
+ SiteId = y.SiteId,
+ SubjectId = y.Id,
+ Id = guid,
+ VisitName = x.VisitName,
+
+ BlindName = x.BlindName,
+ IsBaseLine = x.IsBaseLine,
+ IsCheckBack = x.IsBaseLine,
+ IsUrgent = trial.IsSubjectExpeditedView,
+ };
+ subjectVisits.Add(subjectVisit);
+
//
datas.Add(new DataInspection()
{
@@ -492,14 +513,14 @@ namespace IRaCIS.Application.Services
VisitName = x.VisitName,
VisitNum = x.VisitNum,
VisitDay = x.VisitDay,
- VisitExecuted = false,
+ VisitExecuted = subjectVisit.VisitExecuted,
BlindName = x.BlindName,
VisitWindowLeft = x.VisitWindowLeft,
VisitWindowRight = x.VisitWindowRight,
IsEnrollment = y.IsEnrollment,
IsUrgent = trial.IsSubjectExpeditedView,
- IsFinalVisit = false,
- IsLostVisit = false,
+ IsFinalVisit = subjectVisit.IsFinalVisit,
+ IsLostVisit = subjectVisit.IsLostVisit,
PDState = trial.IsPDProgressView,
}),
});
@@ -522,37 +543,23 @@ namespace IRaCIS.Application.Services
{
BlindName = x.BlindName,
VisitName = x.VisitName,
- SubmitState = "未提交",
- AuditState = "未审核",
+ SubmitState = subjectVisit.SubmitState,
+ AuditState = subjectVisit.AuditState,
IsBaseLine = x.IsBaseLine,
IsEnrollment = y.IsEnrollment,
IsUrgent = y.IsUrgent,
VisitNum = x.VisitNum,
VisitDay = x.VisitDay,
- VisitExecuted = false,
+ VisitExecuted = subjectVisit.VisitExecuted,
VisitWindowLeft = x.VisitWindowLeft,
VisitWindowRight = x.VisitWindowRight,
- IsFinalVisit = false,
- IsLostVisit = false,
+ IsFinalVisit = subjectVisit.IsFinalVisit,
+ IsLostVisit = subjectVisit.IsLostVisit,
PDState = trial.IsPDProgressView,
}),
});
- subjectVisits.Add(new SubjectVisit()
- {
-
- SiteId = y.SiteId,
- SubjectId = y.Id,
- Id = guid,
- VisitName = x.VisitName,
-
- BlindName = x.BlindName,
- IsBaseLine = x.IsBaseLine,
- IsCheckBack = x.IsBaseLine,
- IsUrgent = trial.IsSubjectExpeditedView,
-
-
- });
+
});
diff --git a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
index e134c1b8b..af2b6a39b 100644
--- a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
+++ b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs
@@ -145,13 +145,13 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
Identification = "Add|Consistency Check Query|Data|Visit-Consistency Check",
JsonDetail = JsonConvert.SerializeObject(new
{
- SubmitState = "已提交",
- AuditState = "通过",
- CheckState = dbSV.CheckState == CheckStateEnum.CVIng ? "核查中" : "未核查",
+ SubmitState = dbSV.SubmitState,
+ AuditState = dbSV.AuditState,
+ CheckState = dbSV.CheckState,
CheckResult= dbSV.CheckResult,
TalkContent= dbSV.CheckResult,
- RequestBackState=dbSV.RequestBackState==RequestBackStateEnum.PM_AgressBack?"已回退":"未回退",
- CheckChallengeState = dbSV.CheckChallengeState == CheckChanllengeTypeEnum.Closed?"已关闭":"已回复",
+ RequestBackState= dbSV.RequestBackState,
+ CheckChallengeState = dbSV.CheckChallengeState,
})
});
@@ -169,13 +169,13 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
Identification = "Edit|Consistency Check Query|Data|Visit-Consistency Check|Send",
JsonDetail = JsonConvert.SerializeObject(new
{
- SubmitState = "已提交",
- AuditState = "通过",
- CheckState = dbSV.CheckState == CheckStateEnum.CVIng ? "核查中" : "未核查",
+ SubmitState = dbSV.SubmitState,
+ AuditState = dbSV.AuditState,
+ CheckState = dbSV.CheckState,
CheckResult = dbSV.CheckResult,
TalkContent = dbSV.CheckResult,
- RequestBackState = dbSV.RequestBackState == RequestBackStateEnum.PM_AgressBack ? "已回退" : "未回退",
- CheckChallengeState = dbSV.CheckChallengeState == CheckChanllengeTypeEnum.Closed ? "已关闭" : "已回复",
+ RequestBackState = dbSV.RequestBackState,
+ CheckChallengeState = dbSV.CheckChallengeState,
})
});
@@ -204,9 +204,9 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
Identification = "Add|Visit|Status|Visit-Consistency Check",
JsonDetail = JsonConvert.SerializeObject(new
{
- SubmitState = "已提交",
- AuditState= "通过",
- CheckState = dbSV.CheckState== CheckStateEnum.CVIng? "核查中": "核查通过",
+ SubmitState = dbSV.SubmitState,
+ AuditState= dbSV.AuditState,
+ CheckState = dbSV.CheckState,
})
});
diff --git a/IRaCIS.Core.Domain/Common/JsonConvert.cs b/IRaCIS.Core.Domain/Common/JsonConvert.cs
new file mode 100644
index 000000000..d6d77c826
--- /dev/null
+++ b/IRaCIS.Core.Domain/Common/JsonConvert.cs
@@ -0,0 +1,27 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.Domain.Common
+{
+ public static class JJsonConvert
+ {
+ ///
+ /// 将对象序列化成Json字符串
+ ///
+ /// 需要序列化的对象
+ ///
+ /// 是否忽略值未null的字段
+ ///
+ public static string ToJcJson(this object obj)
+ {
+ JsonSerializerSettings settings = new JsonSerializerSettings();
+ settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
+ settings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
+ return JsonConvert.SerializeObject(obj, settings);
+ }
+ }
+}