Compare commits
No commits in common. "629116cb6ae560295f1a546424741f68f4d2888f" and "64c3d968071c619a4b2aa909b8919c6a8b866c8f" have entirely different histories.
629116cb6a
...
64c3d96807
|
|
@ -19,7 +19,7 @@
|
||||||
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.1" />
|
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
||||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||||
<PackageReference Include="Minio" Version="6.0.3" />
|
<PackageReference Include="Minio" Version="6.0.4" />
|
||||||
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
||||||
<TreatAsUsed>true</TreatAsUsed>
|
<TreatAsUsed>true</TreatAsUsed>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ using SharpCompress.Common;
|
||||||
using SixLabors.ImageSharp.Formats.Jpeg;
|
using SixLabors.ImageSharp.Formats.Jpeg;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using FellowOakDicom.IO.Buffer;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.SCP.Service
|
namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
|
|
@ -41,9 +40,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
private IServiceProvider _serviceProvider { get; set; }
|
private IServiceProvider _serviceProvider { get; set; }
|
||||||
|
|
||||||
private List<Guid> _SCPStudyIdList => _ImageUploadList.Where(t => t.SCPStudyId != Guid.Empty).Select(t => t.SCPStudyId).ToList();
|
private List<Guid> _SCPStudyIdList { get; set; } = new List<Guid>();
|
||||||
|
|
||||||
private List<ImageUploadInfo> _ImageUploadList { get; set; } = new List<ImageUploadInfo>();
|
|
||||||
|
|
||||||
private SCPImageUpload _upload { get; set; }
|
private SCPImageUpload _upload { get; set; }
|
||||||
|
|
||||||
|
|
@ -166,19 +163,18 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
public async Task OnReceiveAssociationReleaseRequestAsync()
|
public async Task OnReceiveAssociationReleaseRequestAsync()
|
||||||
{
|
{
|
||||||
var _distributedLockProvider = _serviceProvider.GetService<IDistributedLockProvider>();
|
|
||||||
|
|
||||||
var @lock = _distributedLockProvider.CreateLock($"{_upload.CallingAE}");
|
|
||||||
|
|
||||||
using (await @lock.AcquireAsync())
|
|
||||||
{
|
|
||||||
|
|
||||||
await DataMaintenanceAsaync();
|
await DataMaintenanceAsaync();
|
||||||
|
|
||||||
//记录监控
|
//记录监控
|
||||||
|
|
||||||
await AddUploadLogAsync();
|
var _SCPImageUploadRepository = _serviceProvider.GetService<IRepository<SCPImageUpload>>();
|
||||||
|
|
||||||
|
_upload.EndTime = DateTime.Now;
|
||||||
|
_upload.StudyCount = _SCPStudyIdList.Count;
|
||||||
|
_upload.TrialId = _trialId;
|
||||||
|
_upload.TrialSiteId = _trialSiteId;
|
||||||
|
|
||||||
|
await _SCPImageUploadRepository.AddAsync(_upload, true);
|
||||||
|
|
||||||
|
|
||||||
var _studyRepository = _serviceProvider.GetService<IRepository<SCPStudy>>();
|
var _studyRepository = _serviceProvider.GetService<IRepository<SCPStudy>>();
|
||||||
|
|
@ -187,27 +183,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
await _studyRepository.SaveChangesAndClearAllTrackingAsync();
|
await _studyRepository.SaveChangesAndClearAllTrackingAsync();
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
await SendAssociationReleaseResponseAsync();
|
await SendAssociationReleaseResponseAsync();
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task AddUploadLogAsync()
|
|
||||||
{
|
|
||||||
//记录监控
|
|
||||||
|
|
||||||
var _SCPImageUploadRepository = _serviceProvider.GetService<IRepository<SCPImageUpload>>();
|
|
||||||
|
|
||||||
_upload.EndTime = DateTime.Now;
|
|
||||||
_upload.StudyCount = _ImageUploadList.Count;
|
|
||||||
_upload.TrialId = _trialId;
|
|
||||||
_upload.TrialSiteId = _trialSiteId;
|
|
||||||
|
|
||||||
_upload.UploadJsonStr = (new SCPImageLog() { UploadList = _ImageUploadList }).ToJsonStr();
|
|
||||||
|
|
||||||
//可能是测试echo 导致记录了
|
|
||||||
await _SCPImageUploadRepository.AddAsync(_upload, _upload.FileCount > 0 ? true : false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -273,11 +249,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
//await _studyRepository.SaveChangesAndClearAllTrackingAsync();
|
//await _studyRepository.SaveChangesAndClearAllTrackingAsync();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
//记录日志
|
|
||||||
await AddUploadLogAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
Log.Logger.Warning($"连接关闭 {exception?.Message} {exception?.InnerException?.Message}");
|
Log.Logger.Warning($"连接关闭 {exception?.Message} {exception?.InnerException?.Message}");
|
||||||
}
|
}
|
||||||
|
|
@ -288,24 +259,17 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
public async Task<DicomCStoreResponse> OnCStoreRequestAsync(DicomCStoreRequest request)
|
public async Task<DicomCStoreResponse> OnCStoreRequestAsync(DicomCStoreRequest request)
|
||||||
{
|
{
|
||||||
|
|
||||||
string studyInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.StudyInstanceUID, string.Empty);
|
string studyInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.StudyInstanceUID,string.Empty);
|
||||||
string seriesInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.SeriesInstanceUID, string.Empty);
|
string seriesInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.SeriesInstanceUID, string.Empty);
|
||||||
string sopInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.SOPInstanceUID, string.Empty);
|
string sopInstanceUid = request.Dataset.GetSingleValueOrDefault(DicomTag.SOPInstanceUID, string.Empty);
|
||||||
string patientIdStr = request.Dataset.GetSingleValueOrDefault(DicomTag.PatientID, string.Empty);
|
|
||||||
|
|
||||||
if (studyInstanceUid.IsNullOrEmpty() || seriesInstanceUid.IsNullOrEmpty() || sopInstanceUid.IsNullOrEmpty())
|
if(studyInstanceUid.IsNullOrEmpty() || seriesInstanceUid.IsNullOrEmpty() || sopInstanceUid.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
Log.Logger.Error($"接收数据读取StudyInstanceUID:{studyInstanceUid}、SeriesInstanceUID:{seriesInstanceUid}、SOPInstanceUID:{sopInstanceUid}有空 ");
|
Log.Logger.Error($"接收数据读取StudyInstanceUID:{studyInstanceUid}、SeriesInstanceUID:{seriesInstanceUid}、SOPInstanceUID:{sopInstanceUid}有空 ");
|
||||||
|
|
||||||
return new DicomCStoreResponse(request, DicomStatus.Success);
|
return new DicomCStoreResponse(request, DicomStatus.Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
//确保来了影像集合存在
|
|
||||||
if (!_ImageUploadList.Any(t => t.StudyInstanceUid == studyInstanceUid))
|
|
||||||
{
|
|
||||||
_ImageUploadList.Add(new ImageUploadInfo() { StudyInstanceUid = studyInstanceUid });
|
|
||||||
}
|
|
||||||
|
|
||||||
//Guid studyId = IdentifierHelper.CreateGuid(studyInstanceUid, trialId.ToString());
|
//Guid studyId = IdentifierHelper.CreateGuid(studyInstanceUid, trialId.ToString());
|
||||||
Guid seriesId = IdentifierHelper.CreateGuid(studyInstanceUid, seriesInstanceUid, _trialId.ToString());
|
Guid seriesId = IdentifierHelper.CreateGuid(studyInstanceUid, seriesInstanceUid, _trialId.ToString());
|
||||||
Guid instanceId = IdentifierHelper.CreateGuid(studyInstanceUid, seriesInstanceUid, sopInstanceUid, _trialId.ToString());
|
Guid instanceId = IdentifierHelper.CreateGuid(studyInstanceUid, seriesInstanceUid, sopInstanceUid, _trialId.ToString());
|
||||||
|
|
@ -324,70 +288,11 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
long fileSize = 0;
|
long fileSize = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
using (MemoryStream ms = new MemoryStream())
|
using (MemoryStream ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
await request.File.SaveAsync(ms);
|
await request.File.SaveAsync(ms);
|
||||||
|
|
||||||
#region 1帧拆成多个固定大小的,方便移动端浏览
|
|
||||||
|
|
||||||
// 回到开头,读取 dicom
|
|
||||||
ms.Position = 0;
|
|
||||||
var dicomFile = DicomFile.Open(ms);
|
|
||||||
|
|
||||||
var pixelData = DicomPixelData.Create(dicomFile.Dataset);
|
|
||||||
var syntax = pixelData.Syntax;
|
|
||||||
|
|
||||||
// 每个 fragment 固定大小 (64KB 示例,可以自己调整)
|
|
||||||
int fragmentSize = 20 * 1024;
|
|
||||||
|
|
||||||
if (syntax.IsEncapsulated)
|
|
||||||
{
|
|
||||||
var newFragments = new DicomOtherByteFragment(DicomTag.PixelData);
|
|
||||||
|
|
||||||
for (int n = 0; n < pixelData.NumberOfFrames; n++)
|
|
||||||
{
|
|
||||||
var frameData = pixelData.GetFrame(n); // 获取完整一帧
|
|
||||||
var data = frameData.Data;
|
|
||||||
int offset = 0;
|
|
||||||
|
|
||||||
while (offset < data.Length)
|
|
||||||
{
|
|
||||||
int size = Math.Min(fragmentSize, data.Length - offset);
|
|
||||||
var buffer = new byte[size];
|
|
||||||
Buffer.BlockCopy(data, offset, buffer, 0, size);
|
|
||||||
|
|
||||||
newFragments.Fragments.Add(new MemoryByteBuffer(buffer));
|
|
||||||
offset += size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 替换原 PixelData
|
|
||||||
dicomFile.Dataset.AddOrUpdate(newFragments);
|
|
||||||
|
|
||||||
|
|
||||||
// 重新保存 dicom 到流
|
|
||||||
ms.SetLength(0);
|
|
||||||
dicomFile.Save(ms);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ms.Position = 0;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region 本地测试
|
|
||||||
//// --- 保存到本地文件测试 ---
|
|
||||||
//var localPath = @"D:\TestDicom.dcm";
|
|
||||||
//using (var fs = new FileStream(localPath, FileMode.Create, FileAccess.Write))
|
|
||||||
//{
|
|
||||||
// ms.CopyTo(fs);
|
|
||||||
//}
|
|
||||||
//return new DicomCStoreResponse(request, DicomStatus.Success);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
//irc 从路径最后一截取Guid
|
//irc 从路径最后一截取Guid
|
||||||
storeRelativePath = await ossService.UploadToOSSAsync(ms, ossFolderPath, instanceId.ToString(), false);
|
storeRelativePath = await ossService.UploadToOSSAsync(ms, ossFolderPath, instanceId.ToString(), false);
|
||||||
|
|
||||||
|
|
@ -410,8 +315,12 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var scpStudyId = await dicomArchiveService.ArchiveDicomFileAsync(request.File, _trialId, _trialSiteId, storeRelativePath, Association.CallingAE, Association.CalledAE,fileSize);
|
var scpStudyId = await dicomArchiveService.ArchiveDicomFileAsync(request.Dataset, _trialId, _trialSiteId, storeRelativePath, Association.CallingAE, Association.CalledAE,fileSize);
|
||||||
|
|
||||||
|
if (!_SCPStudyIdList.Contains(scpStudyId))
|
||||||
|
{
|
||||||
|
_SCPStudyIdList.Add(scpStudyId);
|
||||||
|
}
|
||||||
|
|
||||||
var series = await _seriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);
|
var series = await _seriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);
|
||||||
|
|
||||||
|
|
@ -440,40 +349,12 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
|
|
||||||
await _seriesRepository.SaveChangesAsync();
|
await _seriesRepository.SaveChangesAsync();
|
||||||
|
|
||||||
if (_ImageUploadList.Any(t => t.StudyInstanceUid == studyInstanceUid))
|
|
||||||
{
|
|
||||||
var find = _ImageUploadList.FirstOrDefault(t => t.StudyInstanceUid.Equals(studyInstanceUid));
|
|
||||||
|
|
||||||
|
|
||||||
find.SuccessImageCount++;
|
|
||||||
|
|
||||||
if (!find.PatientNameList.Any(t => t == patientIdStr) && patientIdStr.IsNotNullOrEmpty())
|
|
||||||
{
|
|
||||||
find.PatientNameList.Add(patientIdStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//首次 (默认是Guid 空,数据库归档出了Id)
|
|
||||||
if (find.SCPStudyId != scpStudyId)
|
|
||||||
{
|
|
||||||
find.SCPStudyId = scpStudyId;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
||||||
Log.Logger.Warning($"CallingAE:{Association.CallingAE} CalledAE:{Association.CalledAE} 传输处理异常:{ex.ToString()}");
|
Log.Logger.Warning($"CallingAE:{Association.CallingAE} CalledAE:{Association.CalledAE} 传输处理异常:{ex.ToString()}");
|
||||||
|
|
||||||
if (_ImageUploadList.Any(t => t.StudyInstanceUid == studyInstanceUid))
|
|
||||||
{
|
|
||||||
var find = _ImageUploadList.FirstOrDefault(t => t.StudyInstanceUid.Equals(studyInstanceUid));
|
|
||||||
|
|
||||||
find.FailedImageCount++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ using IRaCIS.Core.Infra.EFCore;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using System.Runtime.Intrinsics.X86;
|
using System.Runtime.Intrinsics.X86;
|
||||||
using Serilog.Sinks.File;
|
using Serilog.Sinks.File;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.SCP.Service
|
namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
|
|
@ -53,10 +52,8 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
/// <param name="dataset"></param>
|
/// <param name="dataset"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="NotImplementedException"></exception>
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
public async Task<Guid> ArchiveDicomFileAsync(DicomFile dicomFile, Guid trialId, Guid trialSiteId, string fileRelativePath, string callingAE, string calledAE,long fileSize)
|
public async Task<Guid> ArchiveDicomFileAsync(DicomDataset dataset, Guid trialId, Guid trialSiteId, string fileRelativePath, string callingAE, string calledAE,long fileSize)
|
||||||
{
|
{
|
||||||
var dataset = dicomFile.Dataset;
|
|
||||||
|
|
||||||
string studyInstanceUid = dataset.GetString(DicomTag.StudyInstanceUID);
|
string studyInstanceUid = dataset.GetString(DicomTag.StudyInstanceUID);
|
||||||
string seriesInstanceUid = dataset.GetString(DicomTag.SeriesInstanceUID);
|
string seriesInstanceUid = dataset.GetString(DicomTag.SeriesInstanceUID);
|
||||||
string sopInstanceUid = dataset.GetString(DicomTag.SOPInstanceUID);
|
string sopInstanceUid = dataset.GetString(DicomTag.SOPInstanceUID);
|
||||||
|
|
@ -85,7 +82,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
DateTime? studyTime = dataset.GetSingleValueOrDefault(DicomTag.StudyDate, string.Empty) == string.Empty ? null : dataset.GetSingleValue<DateTime>(DicomTag.StudyDate).Add(dataset.GetSingleValueOrDefault(DicomTag.StudyTime, string.Empty) == string.Empty ? TimeSpan.Zero : dataset.GetSingleValue<DateTime>(DicomTag.StudyTime).TimeOfDay);
|
DateTime? studyTime = dataset.GetSingleValueOrDefault(DicomTag.StudyDate, string.Empty) == string.Empty ? null : dataset.GetSingleValue<DateTime>(DicomTag.StudyDate).Add(dataset.GetSingleValueOrDefault(DicomTag.StudyTime, string.Empty) == string.Empty ? TimeSpan.Zero : dataset.GetSingleValue<DateTime>(DicomTag.StudyTime).TimeOfDay);
|
||||||
|
|
||||||
//先传输了修改了患者编号的,又传输了没有修改患者编号的,导致后传输的没有修改患者编号的下面的检查为0
|
//先传输了修改了患者编号的,又传输了没有修改患者编号的,导致后传输的没有修改患者编号的下面的检查为0
|
||||||
if (findPatient == null /*&& findStudy==null*/)
|
if (findPatient == null && findStudy==null)
|
||||||
{
|
{
|
||||||
isPatientNeedAdd = true;
|
isPatientNeedAdd = true;
|
||||||
|
|
||||||
|
|
@ -154,32 +151,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
findPatient.LatestPushTime = DateTime.Now;
|
findPatient.LatestPushTime = DateTime.Now;
|
||||||
findPatient.PatientName = dataset.GetSingleValueOrDefault(DicomTag.PatientName, string.Empty);
|
|
||||||
findPatient.PatientSex = dataset.GetSingleValueOrDefault(DicomTag.PatientSex, string.Empty);
|
|
||||||
findPatient.PatientAge = dataset.GetSingleValueOrDefault(DicomTag.PatientAge, string.Empty);
|
|
||||||
findPatient.PatientBirthDate = dataset.GetSingleValueOrDefault(DicomTag.PatientBirthDate, string.Empty);
|
|
||||||
|
|
||||||
if (findPatient.PatientBirthDate.Length == 8)
|
|
||||||
{
|
|
||||||
var birthDateStr = $"{findPatient.PatientBirthDate[0]}{findPatient.PatientBirthDate[1]}{findPatient.PatientBirthDate[2]}{findPatient.PatientBirthDate[3]}-{findPatient.PatientBirthDate[4]}{findPatient.PatientBirthDate[5]}-{findPatient.PatientBirthDate[6]}{findPatient.PatientBirthDate[7]}";
|
|
||||||
|
|
||||||
var yearStr = $"{findPatient.PatientBirthDate[0]}{findPatient.PatientBirthDate[1]}{findPatient.PatientBirthDate[2]}{findPatient.PatientBirthDate[3]}";
|
|
||||||
|
|
||||||
int year = 0;
|
|
||||||
|
|
||||||
var canParse = int.TryParse(yearStr, out year);
|
|
||||||
|
|
||||||
if (canParse && year > 1900)
|
|
||||||
{
|
|
||||||
findPatient.PatientBirthDate = birthDateStr;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
findPatient.PatientBirthDate = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (findStudy == null)
|
if (findStudy == null)
|
||||||
|
|
@ -196,9 +167,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
TrialSiteId = trialSiteId,
|
TrialSiteId = trialSiteId,
|
||||||
StudyInstanceUid = studyInstanceUid,
|
StudyInstanceUid = studyInstanceUid,
|
||||||
StudyTime = studyTime,
|
StudyTime = studyTime,
|
||||||
DicomStudyDate = dataset.GetSingleValueOrDefault(DicomTag.StudyDate, string.Empty),
|
|
||||||
DicomStudyTime = dataset.GetSingleValueOrDefault(DicomTag.StudyTime, string.Empty),
|
|
||||||
|
|
||||||
Modalities = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty),
|
Modalities = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty),
|
||||||
//ModalityForEdit = modalityForEdit,
|
//ModalityForEdit = modalityForEdit,
|
||||||
Description = dataset.GetSingleValueOrDefault(DicomTag.StudyDescription, string.Empty),
|
Description = dataset.GetSingleValueOrDefault(DicomTag.StudyDescription, string.Empty),
|
||||||
|
|
@ -233,19 +201,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
findStudy.PatientBirthDate = $"{findStudy.PatientBirthDate[0]}{findStudy.PatientBirthDate[1]}{findStudy.PatientBirthDate[2]}{findStudy.PatientBirthDate[3]}-{findStudy.PatientBirthDate[4]}{findStudy.PatientBirthDate[5]}-{findStudy.PatientBirthDate[6]}{findStudy.PatientBirthDate[7]}";
|
findStudy.PatientBirthDate = $"{findStudy.PatientBirthDate[0]}{findStudy.PatientBirthDate[1]}{findStudy.PatientBirthDate[2]}{findStudy.PatientBirthDate[3]}-{findStudy.PatientBirthDate[4]}{findStudy.PatientBirthDate[5]}-{findStudy.PatientBirthDate[6]}{findStudy.PatientBirthDate[7]}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
findStudy.DicomStudyDate = dataset.GetSingleValueOrDefault(DicomTag.StudyDate, string.Empty);
|
|
||||||
findStudy.DicomStudyTime = dataset.GetSingleValueOrDefault(DicomTag.StudyTime, string.Empty);
|
|
||||||
findStudy.CalledAE = calledAE;
|
|
||||||
findStudy.CallingAE = callingAE;
|
|
||||||
findStudy.PatientName = dataset.GetSingleValueOrDefault(DicomTag.PatientName, string.Empty);
|
|
||||||
findStudy.PatientSex = dataset.GetSingleValueOrDefault(DicomTag.PatientSex, string.Empty);
|
|
||||||
findStudy.PatientAge = dataset.GetSingleValueOrDefault(DicomTag.PatientAge, string.Empty);
|
|
||||||
findStudy.UpdateTime = DateTime.Now;
|
|
||||||
|
|
||||||
await _patientRepository.BatchUpdateNoTrackingAsync(t => t.Id == findStudy.PatientId, u => new SCPPatient() { LatestPushTime = DateTime.Now });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (findSerice == null)
|
if (findSerice == null)
|
||||||
|
|
@ -263,9 +218,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
//SeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, DateTime.Now).Add(dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, DateTime.Now).TimeOfDay),
|
//SeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, DateTime.Now).Add(dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, DateTime.Now).TimeOfDay),
|
||||||
//SeriesTime = DateTime.TryParse(dataset.GetSingleValue<string>(DicomTag.SeriesDate) + dataset.GetSingleValue<string>(DicomTag.SeriesTime), out DateTime dt) ? dt : null,
|
//SeriesTime = DateTime.TryParse(dataset.GetSingleValue<string>(DicomTag.SeriesDate) + dataset.GetSingleValue<string>(DicomTag.SeriesTime), out DateTime dt) ? dt : null,
|
||||||
SeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, string.Empty) == string.Empty ? null : dataset.GetSingleValue<DateTime>(DicomTag.SeriesDate).Add(dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, string.Empty) == string.Empty ? TimeSpan.Zero : dataset.GetSingleValue<DateTime>(DicomTag.SeriesTime).TimeOfDay),
|
SeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, string.Empty) == string.Empty ? null : dataset.GetSingleValue<DateTime>(DicomTag.SeriesDate).Add(dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, string.Empty) == string.Empty ? TimeSpan.Zero : dataset.GetSingleValue<DateTime>(DicomTag.SeriesTime).TimeOfDay),
|
||||||
DicomSeriesDate = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, string.Empty),
|
|
||||||
DicomSeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, string.Empty),
|
|
||||||
|
|
||||||
Modality = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty),
|
Modality = dataset.GetSingleValueOrDefault(DicomTag.Modality, string.Empty),
|
||||||
Description = dataset.GetSingleValueOrDefault(DicomTag.SeriesDescription, string.Empty),
|
Description = dataset.GetSingleValueOrDefault(DicomTag.SeriesDescription, string.Empty),
|
||||||
SliceThickness = dataset.GetSingleValueOrDefault(DicomTag.SliceThickness, string.Empty),
|
SliceThickness = dataset.GetSingleValueOrDefault(DicomTag.SliceThickness, string.Empty),
|
||||||
|
|
@ -287,20 +239,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
++findStudy.SeriesCount;
|
++findStudy.SeriesCount;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
findSerice.DicomSeriesDate = dataset.GetSingleValueOrDefault(DicomTag.SeriesDate, string.Empty);
|
|
||||||
findSerice.DicomSeriesTime = dataset.GetSingleValueOrDefault(DicomTag.SeriesTime, string.Empty);
|
|
||||||
findSerice.UpdateTime = DateTime.Now;
|
|
||||||
}
|
|
||||||
|
|
||||||
var transferSyntaxUID = dicomFile.FileMetaInfo.GetSingleValueOrDefault(DicomTag.TransferSyntaxUID, string.Empty);
|
|
||||||
|
|
||||||
var isEncapsulated = false;
|
|
||||||
if (transferSyntaxUID.IsNotNullOrEmpty())
|
|
||||||
{
|
|
||||||
isEncapsulated = DicomTransferSyntax.Lookup(DicomUID.Parse(transferSyntaxUID)).IsEncapsulated;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (findInstance == null)
|
if (findInstance == null)
|
||||||
{
|
{
|
||||||
|
|
@ -341,15 +280,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
++findStudy.InstanceCount;
|
++findStudy.InstanceCount;
|
||||||
++findSerice.InstanceCount;
|
++findSerice.InstanceCount;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
findInstance.SOPClassUID = dataset.GetSingleValueOrDefault(DicomTag.SOPClassUID, string.Empty);
|
|
||||||
findInstance.MediaStorageSOPClassUID = dataset.GetSingleValueOrDefault(DicomTag.MediaStorageSOPClassUID, string.Empty);
|
|
||||||
findInstance.TransferSytaxUID = transferSyntaxUID;
|
|
||||||
findInstance.MediaStorageSOPInstanceUID = dataset.GetSingleValueOrDefault(DicomTag.MediaStorageSOPInstanceUID, string.Empty);
|
|
||||||
findInstance.IsEncapsulated = isEncapsulated;
|
|
||||||
findInstance.UpdateTime = DateTime.Now;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isPatientNeedAdd)
|
if (isPatientNeedAdd)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
public interface IDicomArchiveService
|
public interface IDicomArchiveService
|
||||||
{
|
{
|
||||||
Task<Guid> ArchiveDicomFileAsync(DicomFile dicomFile, Guid trialId,Guid trialSiteId, string fileRelativePath,string callingAE,string calledAE,long fileSize);
|
Task<Guid> ArchiveDicomFileAsync(DicomDataset dicomDataset,Guid trialId,Guid trialSiteId, string fileRelativePath,string callingAE,string calledAE,long fileSize);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,51 +126,6 @@ namespace IRaCIS.Core.API
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class DateOnlyUniversalJsonConverter : JsonConverter
|
|
||||||
{
|
|
||||||
private readonly string _format;
|
|
||||||
|
|
||||||
public DateOnlyUniversalJsonConverter(string format = "yyyy-MM-dd")
|
|
||||||
{
|
|
||||||
_format = format;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CanConvert(Type objectType)
|
|
||||||
{
|
|
||||||
return objectType == typeof(DateOnly) || objectType == typeof(DateOnly?);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
|
||||||
{
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
writer.WriteValue(""); // null -> 空字符串
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var date = (DateOnly)value;
|
|
||||||
if (date == default)
|
|
||||||
{
|
|
||||||
writer.WriteValue(""); // default(DateOnly) -> 空字符串
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
writer.WriteValue(date.ToString(_format));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
|
||||||
{
|
|
||||||
var str = reader.TokenType == JsonToken.Null ? null : reader.Value?.ToString();
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(str) || !DateOnly.TryParse(str, out var date))
|
|
||||||
{
|
|
||||||
return objectType == typeof(DateOnly?) ? null : default(DateOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 废弃
|
#region 废弃
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,6 @@ namespace IRaCIS.Core.API
|
||||||
//必须放在后面
|
//必须放在后面
|
||||||
options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService<JSONTimeZoneConverter>());
|
options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService<JSONTimeZoneConverter>());
|
||||||
|
|
||||||
//options.SerializerSettings.Converters.Add(new DateOnlyUniversalJsonConverter("yyyy-MM-dd"));
|
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
.AddControllersAsServices()//动态webApi属性注入需要
|
.AddControllersAsServices()//动态webApi属性注入需要
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ public class OSSService : IOSSService
|
||||||
GetObjectStoreTempToken();
|
GetObjectStoreTempToken();
|
||||||
}
|
}
|
||||||
//token 过期了
|
//token 过期了
|
||||||
if (AliyunOSSTempToken?.Expiration.AddSeconds(10) <= DateTime.Now)
|
if (AliyunOSSTempToken.Expiration.AddSeconds(10) <= DateTime.Now)
|
||||||
{
|
{
|
||||||
GetObjectStoreTempToken();
|
GetObjectStoreTempToken();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,11 @@
|
||||||
<PackageReference Include="FreeSpire.Doc" Version="12.2.0" />
|
<PackageReference Include="FreeSpire.Doc" Version="12.2.0" />
|
||||||
<PackageReference Include="ExcelDataReader" Version="3.7.0" />
|
<PackageReference Include="ExcelDataReader" Version="3.7.0" />
|
||||||
<PackageReference Include="ExcelDataReader.DataSet" Version="3.7.0" />
|
<PackageReference Include="ExcelDataReader.DataSet" Version="3.7.0" />
|
||||||
<PackageReference Include="DistributedLock.Redis" Version="1.1.0" />
|
<PackageReference Include="DistributedLock.Redis" Version="1.0.3" />
|
||||||
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.6" />
|
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.6" />
|
||||||
<PackageReference Include="fo-dicom" Version="5.2.2" />
|
<PackageReference Include="fo-dicom" Version="5.2.2" />
|
||||||
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.2" />
|
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.2" />
|
||||||
<PackageReference Include="fo-dicom.Codecs" Version="5.16.4" />
|
<PackageReference Include="fo-dicom.Codecs" Version="5.16.3" />
|
||||||
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
||||||
<PackageReference Include="MailKit" Version="4.11.0" />
|
<PackageReference Include="MailKit" Version="4.11.0" />
|
||||||
<PackageReference Include="Masa.Contrib.Service.MinimalAPIs" Version="1.0.0" />
|
<PackageReference Include="Masa.Contrib.Service.MinimalAPIs" Version="1.0.0" />
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" />
|
||||||
<PackageReference Include="MimeKit" Version="4.11.0" />
|
<PackageReference Include="MimeKit" Version="4.11.0" />
|
||||||
<PackageReference Include="MiniExcel" Version="1.41.2" />
|
<PackageReference Include="MiniExcel" Version="1.41.2" />
|
||||||
<PackageReference Include="Minio" Version="6.0.3" />
|
<PackageReference Include="Minio" Version="6.0.5" />
|
||||||
<PackageReference Include="MiniWord" Version="0.9.2" />
|
<PackageReference Include="MiniWord" Version="0.9.2" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
||||||
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
||||||
|
|
@ -62,9 +62,9 @@
|
||||||
<PackageReference Include="NPOI" Version="2.7.4" />
|
<PackageReference Include="NPOI" Version="2.7.4" />
|
||||||
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.2" />
|
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.2" />
|
||||||
<PackageReference Include="RestSharp" Version="112.1.0" />
|
<PackageReference Include="RestSharp" Version="112.1.0" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />
|
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.10" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
|
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
|
||||||
<PackageReference Include="ZiggyCreatures.FusionCache" Version="2.4.0" />
|
<PackageReference Include="ZiggyCreatures.FusionCache" Version="2.3.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -957,6 +957,16 @@
|
||||||
<param name="_dictionaryService"></param>
|
<param name="_dictionaryService"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
|
||||||
|
<summary>
|
||||||
|
一致性分析结果导出 7 8 分别是自身 和组件一致性
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<param name="_commonDocumentRepository"></param>
|
||||||
|
<param name="_dictionaryService"></param>
|
||||||
|
<param name="_trialRepository"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetTrialReadingCriterionCanExportDocumentList(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetTrialReadingCriterionCanExportDocumentList(System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
获取阅片标准可以导出的列表
|
获取阅片标准可以导出的列表
|
||||||
|
|
@ -1116,14 +1126,6 @@
|
||||||
<param name="trialId"></param>
|
<param name="trialId"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.TrialImageDownloadService.TrialImageAddExtralField(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomSeries})" -->
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TrialImageDownloadService.DownloadDeleteTrialImage(System.Guid)">
|
|
||||||
<summary>
|
|
||||||
下载已经删除的影像
|
|
||||||
</summary>
|
|
||||||
<param name="trialId"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TrialImageDownloadService.WriteTrialNeedDealData(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.TrialImageDownloadService.WriteTrialNeedDealData(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
读取该项目的数据,进行维护
|
读取该项目的数据,进行维护
|
||||||
|
|
@ -1140,7 +1142,7 @@
|
||||||
<param name="_hostEnvironment"></param>
|
<param name="_hostEnvironment"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TrialImageDownloadService.ArchiveDicomFileAsync(FellowOakDicom.DicomDataset,System.Guid,System.Guid,System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.TrialImageDownloadService.ArchiveDicomFileAsync(FellowOakDicom.DicomFile,System.Guid,System.Guid,System.Guid,System.String,System.Int64,System.Collections.Generic.List{System.Guid},System.Collections.Generic.List{System.Guid})">
|
||||||
<summary>
|
<summary>
|
||||||
单个文件接收 归档
|
单个文件接收 归档
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -1491,92 +1493,19 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditRecord},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditRecordPermission},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditRecordIdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocumentClosure},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocument},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
||||||
<summary>
|
<summary>
|
||||||
稽查文档
|
稽查文档
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditRecordSelectList(IRaCIS.Core.Application.ViewModel.AuditRecordQuery)">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentList(IRaCIS.Core.Application.ViewModel.AuditDocumentQuery)">
|
||||||
<summary>
|
<summary>
|
||||||
查看授权时间内的稽查 (admin qa 看所有 EA只看到自己参与的)
|
获取稽查文档
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inQuery"></param>
|
<param name="inQuery"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditRecordList(IRaCIS.Core.Application.ViewModel.AuditRecordQuery)">
|
|
||||||
<summary>
|
|
||||||
稽查记录 列表
|
|
||||||
</summary>
|
|
||||||
<param name="inQuery"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.DeleteAuditRecord(System.Guid)">
|
|
||||||
<summary>
|
|
||||||
删除稽查记录
|
|
||||||
</summary>
|
|
||||||
<param name="auditRecordId"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetAuditRecordPermission(IRaCIS.Core.Application.ViewModel.SetAuditRecordPermissionCommand)">
|
|
||||||
<summary>
|
|
||||||
设置稽查记录某个文件 或者某个文件夹授权
|
|
||||||
</summary>
|
|
||||||
<param name="inCommand"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.AddClosureRelationsAsync(System.Guid,System.Nullable{System.Guid})">
|
|
||||||
<summary>
|
|
||||||
插入闭包表关系
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentData(IRaCIS.Core.Application.ViewModel.GetAuditDocumentDataInDto)">
|
|
||||||
<summary>
|
|
||||||
获取文件树形结构 (传Id 根节点就是自己)
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetIsAuthorization(IRaCIS.Core.Application.ViewModel.SetIsAuthorizationInDto)">
|
|
||||||
<summary>
|
|
||||||
设置是否授权
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.DeleteAuditDocument(IRaCIS.Core.Application.ViewModel.DeleteAuditDocumentInDto)">
|
|
||||||
<summary>
|
|
||||||
删除稽查文档
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetCurrentVersion(IRaCIS.Core.Application.ViewModel.SetCurrentVersionInDto)">
|
|
||||||
<summary>
|
|
||||||
把历史版本设置为当前版本--修改 维护闭包表,之间的闭包关系指向新版本文件
|
|
||||||
</summary>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetBreadcrumbData(IRaCIS.Core.Application.ViewModel.GetBreadcrumbDataInDto)">
|
|
||||||
<summary>
|
|
||||||
获取面包屑导航 (查询自己的祖先,不包括自己)
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.MovieFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
|
||||||
<summary>
|
|
||||||
移动文件或者文件夹 到其他文件夹
|
|
||||||
</summary>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.CopyFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
|
||||||
<summary>
|
|
||||||
复制文件或者文件夹
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.UpdateAuditDocument(IRaCIS.Core.Application.ViewModel.AuditDocumentUpdateDto)">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.UpdateAuditDocument(IRaCIS.Core.Application.ViewModel.AuditDocumentUpdateDto)">
|
||||||
<summary>
|
<summary>
|
||||||
修改稽查文档
|
修改稽查文档
|
||||||
|
|
@ -1594,7 +1523,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.AddAuditDocument(System.Collections.Generic.List{IRaCIS.Core.Application.ViewModel.AuditDocumentAddOrEdit})">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.AddAuditDocument(System.Collections.Generic.List{IRaCIS.Core.Application.ViewModel.AuditDocumentAddOrEdit})">
|
||||||
<summary>
|
<summary>
|
||||||
新增稽查文档 (批量上传文件时才是数组,文件夹时单个对象)
|
新增稽查文档
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
@ -1605,13 +1534,39 @@
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentList(IRaCIS.Core.Application.ViewModel.AuditDocumentQuery)">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetBreadcrumbData(IRaCIS.Core.Application.ViewModel.GetBreadcrumbDataInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取稽查文档
|
获取面包屑导航
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inQuery"></param>
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentData(IRaCIS.Core.Application.ViewModel.GetAuditDocumentDataInDto)">
|
||||||
|
<summary>
|
||||||
|
获取文件树形结构 (传Id 根节点就是自己)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.DeleteAuditDocument(IRaCIS.Core.Application.ViewModel.DeleteAuditDocumentInDto)">
|
||||||
|
<summary>
|
||||||
|
删除稽查文档
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.MovieFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
||||||
|
<summary>
|
||||||
|
移动文件或者文件夹 到其他文件夹
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.CopyFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
||||||
|
<summary>
|
||||||
|
复制文件或者文件夹
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetHistoricalVersion(IRaCIS.Core.Application.ViewModel.GetHistoricalVersionInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetHistoricalVersion(IRaCIS.Core.Application.ViewModel.GetHistoricalVersionInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
@ -1620,6 +1575,19 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetCurrentVersion(IRaCIS.Core.Application.ViewModel.SetCurrentVersionInDto)">
|
||||||
|
<summary>
|
||||||
|
把历史版本设置为当前版本
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetIsAuthorization(IRaCIS.Core.Application.ViewModel.SetIsAuthorizationInDto)">
|
||||||
|
<summary>
|
||||||
|
设置是否授权
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Service.SysFileTypeService">
|
<member name="T:IRaCIS.Core.Application.Service.SysFileTypeService">
|
||||||
<summary>
|
<summary>
|
||||||
系统文件类型
|
系统文件类型
|
||||||
|
|
@ -2833,7 +2801,7 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.UserService.GetUserList(IRaCIS.Application.Contracts.UserListQueryDTO,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditRecordIdentityUser})">
|
<member name="M:IRaCIS.Core.Application.Service.UserService.GetUserList(IRaCIS.Application.Contracts.UserListQueryDTO)">
|
||||||
<summary>
|
<summary>
|
||||||
获取用户列表
|
获取用户列表
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -8754,6 +8722,11 @@
|
||||||
截图地址
|
截图地址
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableAnswerRowInfoBase.FristAddTaskNum">
|
||||||
|
<summary>
|
||||||
|
第一次添加的任务ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableAnswerRowInfoBase.CreateUserId">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableAnswerRowInfoBase.CreateUserId">
|
||||||
<summary>
|
<summary>
|
||||||
CreateUserId
|
CreateUserId
|
||||||
|
|
@ -9164,11 +9137,6 @@
|
||||||
修约小数点
|
修约小数点
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingTaskDto.IsViewStudyPart">
|
|
||||||
<summary>
|
|
||||||
是否查看检查部位
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingTaskDto.CriterionType">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingTaskDto.CriterionType">
|
||||||
<summary>
|
<summary>
|
||||||
标准类型
|
标准类型
|
||||||
|
|
@ -12210,11 +12178,6 @@
|
||||||
是否是系统数据
|
是否是系统数据
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.VisitTaskDto.IsViewStudyPart">
|
|
||||||
<summary>
|
|
||||||
是否查看检查部位
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.VisitTaskDto.ReadingCategory">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.VisitTaskDto.ReadingCategory">
|
||||||
<summary>
|
<summary>
|
||||||
任务类型
|
任务类型
|
||||||
|
|
@ -13138,7 +13101,7 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserLog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingOncologyTaskInfo},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Application.Service.IVisitTaskService,IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Application.Service.IReadingCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserFeedBack},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskRelation},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingJudgeInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganTrialInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTrialCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableAnswerRowInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Application.Service.IGeneralCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskStudy},IRaCIS.Core.Application.Service.ImageAndDoc.IDownloadAndUploadService,IRaCIS.Core.Application.Interfaces.ITrialEmailNoticeConfigService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,ZiggyCreatures.Caching.Fusion.IFusionCache)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserLog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingOncologyTaskInfo},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Application.Service.IVisitTaskService,IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Application.Service.IReadingCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserFeedBack},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskRelation},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingJudgeInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganTrialInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTrialCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableAnswerRowInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Application.Service.IGeneralCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskStudy},IRaCIS.Core.Application.Service.ImageAndDoc.IDownloadAndUploadService,IRaCIS.Core.Application.Interfaces.ITrialEmailNoticeConfigService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,ZiggyCreatures.Caching.Fusion.IFusionCache)">
|
||||||
<summary>
|
<summary>
|
||||||
IR影像阅片
|
IR影像阅片
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -13150,13 +13113,6 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.ViewStudyPart(IRaCIS.Core.Application.Service.Reading.Dto.ViewStudyPartInDto)">
|
|
||||||
<summary>
|
|
||||||
查看检查部位
|
|
||||||
</summary>
|
|
||||||
<param name="inDto"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.DeleteSingleTableQuestionMark(IRaCIS.Core.Application.Service.Reading.Dto.DeleteSingleTableQuestionMarkInDto,System.String)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.DeleteSingleTableQuestionMark(IRaCIS.Core.Application.Service.Reading.Dto.DeleteSingleTableQuestionMarkInDto,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
删除单个表格问题标记
|
删除单个表格问题标记
|
||||||
|
|
@ -14319,14 +14275,6 @@
|
||||||
<param name="outEnrollTime"></param>
|
<param name="outEnrollTime"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TestService.RebuildAuditDocumentClosureAsync(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocumentClosure},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocument})">
|
|
||||||
<summary>
|
|
||||||
重建闭包表
|
|
||||||
</summary>
|
|
||||||
<param name="_auditDocumentClosureRepository"></param>
|
|
||||||
<param name="_auditDocumentRepository"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TestService.DeleteConsistentDate(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskConsistentRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingConsistentClinicalDataPDF},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingConsistentClinicalData})">
|
<member name="M:IRaCIS.Core.Application.Service.TestService.DeleteConsistentDate(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskConsistentRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingConsistentClinicalDataPDF},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingConsistentClinicalData})">
|
||||||
<summary>
|
<summary>
|
||||||
清理一致性分析任务
|
清理一致性分析任务
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ using MassTransit;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using MimeKit;
|
using MimeKit;
|
||||||
using NPOI.SS.Formula.Functions;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
@ -58,15 +57,17 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
||||||
join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
||||||
join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable)
|
from identityUser in _identityUserRepository.AsQueryable(false)
|
||||||
on trialIdentityUser.IdentityUserId equals identityUser.Id
|
|
||||||
|
|
||||||
|
.Where(t => t.Status == UserStateEnum.Enable &&
|
||||||
|
t.Id == trialIdentityUser.IdentityUserId &&
|
||||||
|
t.UserRoleList.Where(t => t.IsUserRoleDisabled == false)
|
||||||
|
.Any(t => trialDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
||||||
|
|
||||||
join confirm in _trialDocConfirmedUserRepository.Where() on
|
join confirm in _trialDocConfirmedUserRepository.Where() on
|
||||||
new { trialIdentityUser.IdentityUserId, TrialDocumentId = trialDoc.Id } equals new { IdentityUserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
|
new { trialIdentityUser.IdentityUserId, TrialDocumentId = trialDoc.Id } equals new { IdentityUserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
|
||||||
|
|
||||||
from confirm in cc.DefaultIfEmpty()
|
from confirm in cc.DefaultIfEmpty()
|
||||||
where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted && trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId))
|
|
||||||
select new TrialSignDocView()
|
select new TrialSignDocView()
|
||||||
{
|
{
|
||||||
TrialCode = trialDoc.Trial.TrialCode,
|
TrialCode = trialDoc.Trial.TrialCode,
|
||||||
|
|
@ -190,10 +191,12 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id))
|
from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id))
|
||||||
join trialIdentityUser in _trialIdentityUserRepository.Where(x=>x.IsDeleted==false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
join trialIdentityUser in _trialIdentityUserRepository.Where(x=>x.IsDeleted==false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
||||||
join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
||||||
join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable)
|
from identityUser in _identityUserRepository.AsQueryable(false)
|
||||||
on trialIdentityUser.IdentityUserId equals identityUser.Id
|
.Where(t => t.Status == UserStateEnum.Enable &&
|
||||||
where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted && context.Message.NewUserTypeIds.Contains(ur.UserRole.UserTypeId) && trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId))
|
t.Id == trialIdentityUser.IdentityUserId &&
|
||||||
|
t.UserRoleList.Where(t => t.IsUserRoleDisabled == false)
|
||||||
|
.Any(t => context.Message.NewUserTypeIds.Contains(t.UserTypeId) &&
|
||||||
|
trialDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
||||||
select new UnionDocumentWithConfirmInfoView()
|
select new UnionDocumentWithConfirmInfoView()
|
||||||
{
|
{
|
||||||
IsSystemDoc = true,
|
IsSystemDoc = true,
|
||||||
|
|
@ -219,11 +222,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id))
|
from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id))
|
||||||
join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId
|
||||||
join trialUserRole in _trialUserRoleRepository.Where(x=>x.IsDeleted==false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
join trialUserRole in _trialUserRoleRepository.Where(x=>x.IsDeleted==false) on trialIdentityUser.Id equals trialUserRole.TrialUserId
|
||||||
join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable)
|
from identityUser in _identityUserRepository.AsQueryable(false)
|
||||||
on trialIdentityUser.IdentityUserId equals identityUser.Id
|
.Where(t => t.Status == UserStateEnum.Enable &&
|
||||||
where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted &&trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId))
|
t.Id== trialIdentityUser.IdentityUserId&&
|
||||||
|
t.UserRoleList.Where(t => t.IsUserRoleDisabled == false)
|
||||||
|
.Any(t => trialDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
||||||
select new UnionDocumentWithConfirmInfoView()
|
select new UnionDocumentWithConfirmInfoView()
|
||||||
{
|
{
|
||||||
IsSystemDoc = false,
|
IsSystemDoc = false,
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder, QuestionId = t.QuestionId }).OrderBy(t => t.ShowOrder).ToList()
|
QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder, QuestionId = t.QuestionId }).OrderBy(t => t.ShowOrder).ToList()
|
||||||
|
|
||||||
|
|
||||||
}).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ThenBy(t => t.CurrentQCEnum).ThenBy(t => t.AuditTime).ToList();
|
}).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ThenBy(t=>t.CurrentQCEnum).ThenBy(t=>t.AuditTime).ToList();
|
||||||
|
|
||||||
|
|
||||||
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
|
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
|
|
@ -2310,8 +2310,263 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
|
|
||||||
#region 通用阅片结果导出
|
#region 通用阅片结果导出
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 一致性分析结果导出 7 8 分别是自身 和组件一致性
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <param name="_commonDocumentRepository"></param>
|
||||||
|
/// <param name="_dictionaryService"></param>
|
||||||
|
/// <param name="_trialRepository"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IActionResult> GetAnalysisTaskList_Export(VisitTaskQuery inQuery,
|
||||||
|
[FromServices] IRepository<CommonDocument> _commonDocumentRepository,
|
||||||
|
[FromServices] IDictionaryService _dictionaryService,
|
||||||
|
[FromServices] IRepository<Trial> _trialRepository)
|
||||||
|
{
|
||||||
|
//每次查询必须是单标准的
|
||||||
|
var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.TaskAllocationState == TaskAllocationState.Allocated && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
||||||
|
|
||||||
|
//一致性分析
|
||||||
|
.WhereIf(inQuery.ReadingExportType == ExportResult.DetailedTableOfIntraReaderAnalysisResults, t => t.IsSelfAnalysis == true || t.IsSelfAnalysis == null)
|
||||||
|
.WhereIf(inQuery.ReadingExportType == ExportResult.DetailedTableOfIntraReaderAnalysisResults, t => t.IsSelfAnalysis == null ? t.Subject.SubjectVisitTaskList.Any(u => u.IsSelfAnalysis == true && u.VisitTaskNum == t.VisitTaskNum && u.DoctorUserId == t.DoctorUserId && u.TrialReadingCriterionId == t.TrialReadingCriterionId) : true)
|
||||||
|
.WhereIf(inQuery.ReadingExportType == ExportResult.DetailedTableOfInterReaderAnalysisResults, t => t.IsSelfAnalysis == false || t.IsSelfAnalysis == null)
|
||||||
|
|
||||||
|
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
||||||
|
.Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge)
|
||||||
|
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||||
|
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||||
|
|
||||||
|
.WhereIf(inQuery.IsUrgent != null, t => t.IsUrgent == inQuery.IsUrgent)
|
||||||
|
.WhereIf(inQuery.DoctorUserId != null, t => t.DoctorUserId == inQuery.DoctorUserId)
|
||||||
|
.WhereIf(inQuery.ReadingCategory != null, t => t.ReadingCategory == inQuery.ReadingCategory)
|
||||||
|
//.WhereIf(inQuery.ReadingTaskState != null, t => t.ReadingTaskState == inQuery.ReadingTaskState)
|
||||||
|
.WhereIf(inQuery.TaskAllocationState != null, t => t.TaskAllocationState == inQuery.TaskAllocationState)
|
||||||
|
.WhereIf(inQuery.ArmEnum != null, t => t.ArmEnum == inQuery.ArmEnum)
|
||||||
|
.WhereIf(!string.IsNullOrEmpty(inQuery.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(inQuery.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode!) && t.IsAnalysisCreate == false))
|
||||||
|
.WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.TaskName.Contains(inQuery.TaskName) || t.TaskBlindName.Contains(inQuery.TaskName))
|
||||||
|
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.Subject.Code.Contains(inQuery.SubjectCode))
|
||||||
|
.WhereIf(inQuery.BeginAllocateDate != null, t => t.AllocateTime > inQuery.BeginAllocateDate)
|
||||||
|
.WhereIf(inQuery.EndAllocateDate != null, t => t.AllocateTime < inQuery.EndAllocateDate);
|
||||||
|
|
||||||
|
var list = await query.ProjectTo<AnalysisDynamicCommonExport>(_mapper.ConfigurationProvider,
|
||||||
|
new
|
||||||
|
{
|
||||||
|
readingExportType = inQuery.ReadingExportType,
|
||||||
|
criterionType = criterion.CriterionType,
|
||||||
|
trialReadingCriterionId = inQuery.TrialReadingCriterionId,
|
||||||
|
isEn_Us = _userInfo.IsEn_Us
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
list = list.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
|
exportInfo.CriterionName = criterion.CriterionName;
|
||||||
|
|
||||||
|
#region 处理系统标准存在疾病和整体肿瘤合并
|
||||||
|
|
||||||
|
//如果是以合并后的找翻译字典,会少,所以必须放在前面
|
||||||
|
var translateDicNameList = list.SelectMany(t => t.QuestionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(t => t.TranslateDicName).Distinct().ToList();
|
||||||
|
|
||||||
|
//针对1.1 整体肿瘤评估 有的两列要合并一列
|
||||||
|
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB || criterion.CriterionType == CriterionType.IRECIST1Point1)
|
||||||
|
{
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
//处理合并表头
|
||||||
|
|
||||||
|
var questionType = item.IsBaseline == true ? QuestionType.ExistDisease : QuestionType.Tumor;
|
||||||
|
|
||||||
|
var findItem = item.QuestionAnswerList.Where(t => t.QuestionType == questionType).FirstOrDefault();
|
||||||
|
|
||||||
|
if (findItem != null)
|
||||||
|
{
|
||||||
|
findItem.QuestionName = _userInfo.IsEn_Us ? "Overall Response" : "整体肿瘤评估";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (item.IsBaseline == true)
|
||||||
|
{
|
||||||
|
item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.Tumor).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ExistDisease).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
//处理合并表头
|
||||||
|
|
||||||
|
var questionType = item.IsBaseline == true ? QuestionType.ExistDisease : QuestionType.ImgOncology;
|
||||||
|
|
||||||
|
var findItem = item.QuestionAnswerList.Where(t => t.QuestionType == questionType).FirstOrDefault();
|
||||||
|
|
||||||
|
if (findItem != null)
|
||||||
|
{
|
||||||
|
findItem.QuestionName = _userInfo.IsEn_Us ? "Overall Response" : "整体肿瘤评估";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.IsBaseline == true)
|
||||||
|
{
|
||||||
|
item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ImgOncology).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ExistDisease).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (criterion.CriterionType == CriterionType.PCWG3)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (criterion.CriterionType == CriterionType.SelfDefine)
|
||||||
|
{
|
||||||
|
//自定义的又问题名称重复 所以统一加上组名
|
||||||
|
|
||||||
|
//有重复的就加,没有重复的就不加
|
||||||
|
if (list.Any(t => t.QuestionAnswerList.Select(t => t.QuestionName).Count() != t.QuestionAnswerList.Select(t => t.QuestionName).Distinct().Count()))
|
||||||
|
{
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
foreach (var qs in item.QuestionAnswerList)
|
||||||
|
{
|
||||||
|
qs.QuestionName = qs.Group + "_" + qs.QuestionName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
var export_Template = StaticData.Export.TrialSelfAnalysisList_Export;
|
||||||
|
|
||||||
|
#region 自身一致性分析和组间一致性分析
|
||||||
|
|
||||||
|
if (inQuery.ReadingExportType == ExportResult.DetailedTableOfIntraReaderAnalysisResults)
|
||||||
|
{
|
||||||
|
//找到非一致性分析的任务
|
||||||
|
var selfExportList = list.Where(t => t.IsSelfAnalysis == null).ToList();
|
||||||
|
|
||||||
|
//处理一致性分析结果是否和原始阅片是否一致
|
||||||
|
foreach (var item in selfExportList)
|
||||||
|
{
|
||||||
|
//找到一致性分析的结果
|
||||||
|
var selfAnalysisTask = list.Where(t => t.IsSelfAnalysis == true && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName && t.UserName == item.UserName).FirstOrDefault();
|
||||||
|
|
||||||
|
//将自身一致性分析的字段 赋值到访视任务这个字段
|
||||||
|
item.IsAnalysisDiffToOriginalData = selfAnalysisTask?.IsAnalysisDiffToOriginalData;
|
||||||
|
|
||||||
|
//处理再次阅片人的结果
|
||||||
|
if (selfAnalysisTask != null)
|
||||||
|
{
|
||||||
|
var cloneQuestionAnswerList = selfAnalysisTask.QuestionAnswerList.Clone();
|
||||||
|
|
||||||
|
foreach (var qItem in cloneQuestionAnswerList)
|
||||||
|
{
|
||||||
|
qItem.QuestionName = qItem.QuestionName + $"{(_userInfo.IsEn_Us ? "(Again)" : "(再次)")}";
|
||||||
|
}
|
||||||
|
|
||||||
|
item.QuestionAnswerList = item.QuestionAnswerList.Union(cloneQuestionAnswerList).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list = selfExportList;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
export_Template = StaticData.Export.TrialGroupAnalysisList_Export;
|
||||||
|
|
||||||
|
var newList = new List<AnalysisDynamicCommonExport>();
|
||||||
|
|
||||||
|
foreach (var group in list.GroupBy(t => new { t.SubjectCode, t.VisitTaskNum, t.TaskName }).OrderBy(g => g.Key.SubjectCode).ThenBy(g => g.Key.VisitTaskNum))
|
||||||
|
{
|
||||||
|
var subjectVisitGroupList = group.ToList();
|
||||||
|
|
||||||
|
|
||||||
|
//找到当前访视组间一致性分析的任务结果
|
||||||
|
|
||||||
|
var groupOtherTaskList = subjectVisitGroupList.Where(t => t.IsSelfAnalysis == false).ToList();
|
||||||
|
|
||||||
|
foreach (var subjectVisitTaskArm in subjectVisitGroupList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.ArmEnum))
|
||||||
|
{
|
||||||
|
foreach (var otherTask in groupOtherTaskList)
|
||||||
|
{
|
||||||
|
//非一致性分析任务
|
||||||
|
var cloneObj = subjectVisitTaskArm.Clone();
|
||||||
|
|
||||||
|
var otherTaskQuestionAnserList = otherTask.QuestionAnswerList.Clone();
|
||||||
|
|
||||||
|
foreach (var qItem in otherTaskQuestionAnserList)
|
||||||
|
{
|
||||||
|
qItem.QuestionName = qItem.QuestionName + $"{(_userInfo.IsEn_Us ? "(Again)" : "(再次)")}";
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理 再次阅片人,再次阅片人角色 两列
|
||||||
|
var addQuestionList = new List<CommonQuesionInfo>();
|
||||||
|
|
||||||
|
addQuestionList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Reviwer(Again)" : "阅片人(再次)", QuestionValue = otherTask.UserName });
|
||||||
|
addQuestionList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Reviwer Role(Again)" : "阅片人角色(再次)", QuestionValue = ((int)otherTask.ArmEnum).ToString(), TranslateDicName = "ArmEnum" });
|
||||||
|
|
||||||
|
|
||||||
|
cloneObj.QuestionAnswerList = cloneObj.QuestionAnswerList.Union(addQuestionList).Union(otherTaskQuestionAnserList).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
cloneObj.IsGroupAnalysisDiffToOriginalData = cloneObj.ArmEnum == Arm.DoubleReadingArm1 ? otherTask.IsGroupDiffArm1 : otherTask.IsGroupDiffArm2;
|
||||||
|
|
||||||
|
newList.Add(cloneObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translateDicNameList.Add("ArmEnum");
|
||||||
|
|
||||||
|
list = newList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
var columNameList = list.SelectMany(t => t.QuestionAnswerList).Where(t => t.QuestionName.IsNotNullOrEmpty()).Select(t => t.QuestionName).Distinct().ToList();
|
||||||
|
|
||||||
|
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list.Where(t => t.ReadingCategory != ReadingCategory.Global).ToList(), _userInfo.TimeZoneId);
|
||||||
|
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||||
|
|
||||||
|
var dynamicColumnConfig = new DynamicColumnConfig()
|
||||||
|
{
|
||||||
|
//可读的列表名行索引,不是{{}} 模板行索引
|
||||||
|
AutoColumnTitleRowIndex = 2,
|
||||||
|
AutoColumnStartIndex = 5,
|
||||||
|
TempalteLastColumnIndex = 4,
|
||||||
|
DynamicItemDicName = "TranslateDicName",
|
||||||
|
DynamicItemValueName = "QuestionValue",
|
||||||
|
DynamicItemTitleName = "QuestionName",
|
||||||
|
DynamicListName = "QuestionAnswerList",
|
||||||
|
RemoveColunmIndexList = new List<int>() { },
|
||||||
|
ColumnIdNameList = columNameList.Select(t => new DynamicColumnConfig.ColumItem() { Id = Guid.Empty, Name = t }).ToList(),
|
||||||
|
TranslateDicNameList = translateDicNameList ?? new List<string>()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(AnalysisDynamicCommonExport), criterion.CriterionType, dynamicColumnConfig);
|
||||||
|
|
||||||
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||||
|
{
|
||||||
|
FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取阅片标准可以导出的列表
|
/// 获取阅片标准可以导出的列表
|
||||||
|
|
@ -2642,8 +2897,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
{
|
{
|
||||||
#region 外层问题处理
|
#region 外层问题处理
|
||||||
|
|
||||||
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB || criterion.CriterionType == CriterionType.IRECIST1Point1)
|
||||||
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.mRECISTHCC)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
fistLeveLNameList = trialConfigQuestionList.Select(t => new DynamicColumnConfig.ColumItem()
|
fistLeveLNameList = trialConfigQuestionList.Select(t => new DynamicColumnConfig.ColumItem()
|
||||||
|
|
@ -2686,8 +2940,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
var extralNameList = new List<DynamicColumnConfig.ColumItem>();
|
var extralNameList = new List<DynamicColumnConfig.ColumItem>();
|
||||||
|
|
||||||
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
||||||
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.mRECISTHCC
|
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
|
||||||
|| criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
//if(inQuery.ReadingExportType == ExportResult.DetailedTableOfLesions)
|
//if(inQuery.ReadingExportType == ExportResult.DetailedTableOfLesions)
|
||||||
|
|
@ -2728,8 +2981,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
var addLessionInfoList = new List<CommonQuesionInfo>();
|
var addLessionInfoList = new List<CommonQuesionInfo>();
|
||||||
|
|
||||||
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
||||||
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.mRECISTHCC
|
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
|
||||||
|| criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
|
|
||||||
{
|
{
|
||||||
//病灶编号 和病灶类型没有配置,但是需要有的
|
//病灶编号 和病灶类型没有配置,但是需要有的
|
||||||
addLessionInfoList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Lesion ID" : "病灶编号", QuestionValue = lession.LessionCode });
|
addLessionInfoList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Lesion ID" : "病灶编号", QuestionValue = lession.LessionCode });
|
||||||
|
|
@ -2769,8 +3021,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 不管是list 还是taskList 最终处理的数据都是list 处理好数据后合并
|
#region 不管是list 还是taskList 最终处理的数据都是list 处理好数据后合并
|
||||||
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
|
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB || criterion.CriterionType == CriterionType.IRECIST1Point1)
|
||||||
|| criterion.CriterionType == CriterionType.IRECIST1Point1 || criterion.CriterionType == CriterionType.mRECISTHCC)
|
|
||||||
{
|
{
|
||||||
//针对1.1 整体肿瘤评估 有的两列要合并一列
|
//针对1.1 整体肿瘤评估 有的两列要合并一列
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
|
|
|
||||||
|
|
@ -760,7 +760,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (feedBack.VisitTaskId != null)
|
if (feedBack.VisitTaskId != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "FeedBackTypeToIR" && t.ParentId != null && t.Code == ((int)feedBack.QuestionType).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync();
|
var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.IRImageError).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
var info = await _visitTaskRepository.Where(t => t.Id == feedBack.VisitTaskId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.SourceSubjectVisit.VisitName }).FirstNotNullAsync();
|
var info = await _visitTaskRepository.Where(t => t.Id == feedBack.VisitTaskId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.SourceSubjectVisit.VisitName }).FirstNotNullAsync();
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -9,95 +9,6 @@ using IRaCIS.Core.Domain.Share;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
namespace IRaCIS.Core.Application.ViewModel;
|
namespace IRaCIS.Core.Application.ViewModel;
|
||||||
|
|
||||||
|
|
||||||
public class AuditRecordView : AuditRecordAddOrEdit
|
|
||||||
{
|
|
||||||
public Guid CreateUserId { get; set; }
|
|
||||||
public DateTime CreateTime { get; set; }
|
|
||||||
public Guid UpdateUserId { get; set; }
|
|
||||||
public DateTime UpdateTime { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public new List<Guid> IdnetityUserIdList => IdentityUserList.Select(t => t.Id).ToList();
|
|
||||||
public List<AuditIdentiUserInfo> IdentityUserList { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AuditIdentiUserInfo
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
|
|
||||||
public string UserName { get; set; }
|
|
||||||
|
|
||||||
public string FullName { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AuditRecordAddOrEdit
|
|
||||||
{
|
|
||||||
public Guid? Id { get; set; }
|
|
||||||
public string CompanyName { get; set; }
|
|
||||||
|
|
||||||
public string AuditContent { get; set; }
|
|
||||||
|
|
||||||
public DateOnly AuditTime { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public DateTime? BeginTime { get; set; }
|
|
||||||
|
|
||||||
public DateTime? EndTime { get; set; }
|
|
||||||
|
|
||||||
public AuditState AuditState { get; set; }
|
|
||||||
|
|
||||||
public AuditType AuditType { get; set; }
|
|
||||||
|
|
||||||
//public List<Guid> IdnetityUserIdList { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AddOrDeleteAuditUserCommand
|
|
||||||
{
|
|
||||||
public Guid AuditRecordId { get; set; }
|
|
||||||
|
|
||||||
public List<Guid> IdentityUserIdList { get; set; }
|
|
||||||
|
|
||||||
public bool IsAdd { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AuditRecordQuery : PageInput
|
|
||||||
{
|
|
||||||
public string? CompanyName { get; set; }
|
|
||||||
|
|
||||||
public string? AuditContent { get; set; }
|
|
||||||
|
|
||||||
public DateOnly? BeginAuditTime { get; set; }
|
|
||||||
public DateOnly? EndAuditTime { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public DateTime? BeginTime { get; set; }
|
|
||||||
|
|
||||||
public DateTime? EndTime { get; set; }
|
|
||||||
|
|
||||||
public AuditState? AuditState { get; set; }
|
|
||||||
|
|
||||||
public AuditType? AuditType { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public DateTime? BeginCreateTime { get; set; }
|
|
||||||
|
|
||||||
public DateTime? EndCreateTime { get; set; }
|
|
||||||
|
|
||||||
public string? IdentityUserName { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SetAuditRecordPermissionCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
public List<Guid> AuditDocumentIdList { get; set; }
|
|
||||||
|
|
||||||
public Guid AuditRecordId { get; set; }
|
|
||||||
|
|
||||||
public bool IsAuthorization { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class DeleteAudit
|
public class DeleteAudit
|
||||||
{
|
{
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
@ -113,7 +24,7 @@ public class DeleteAuditDocumentInDto
|
||||||
public List<Guid> Ids { get; set; }
|
public List<Guid> Ids { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetAuditDocumentDataInDto : PageInput
|
public class GetAuditDocumentDataInDto:PageInput
|
||||||
{
|
{
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
|
@ -122,12 +33,7 @@ public class GetAuditDocumentDataInDto : PageInput
|
||||||
|
|
||||||
public bool? IsAuthorization { get; set; }
|
public bool? IsAuthorization { get; set; }
|
||||||
|
|
||||||
public bool? IsCurrentAuditRecordAuthorization { get; set; }
|
|
||||||
|
|
||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
|
|
||||||
//当前稽查记录Id
|
|
||||||
public Guid? AuditRecordId { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetAuditDocumentDataOutDto
|
public class GetAuditDocumentDataOutDto
|
||||||
|
|
@ -147,10 +53,7 @@ public class AuditDocumentData : AuditDocumentUpdateDto
|
||||||
public int? Version { get; set; }
|
public int? Version { get; set; }
|
||||||
|
|
||||||
public int HistoricalVersionsCount { get; set; }
|
public int HistoricalVersionsCount { get; set; }
|
||||||
public List<AuditDocumentData> Children { get; set; } = new List<AuditDocumentData>() { };
|
public List<AuditDocumentData> Children { get; set; }=new List<AuditDocumentData> (){ };
|
||||||
|
|
||||||
|
|
||||||
public bool? IsCurrentAuditRecordAuthorization { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -190,10 +93,10 @@ public class MovieFileOrFolderInDto
|
||||||
{
|
{
|
||||||
public List<Guid> Ids { get; set; }
|
public List<Guid> Ids { get; set; }
|
||||||
|
|
||||||
public Guid? ParentId { get; set; }
|
public Guid ParentId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class HistoricalVersionDto : AuditDocumentUpdateDto
|
public class HistoricalVersionDto: AuditDocumentUpdateDto
|
||||||
{
|
{
|
||||||
public bool IsCurrentVersion { get; set; } = false;
|
public bool IsCurrentVersion { get; set; } = false;
|
||||||
|
|
||||||
|
|
@ -230,16 +133,16 @@ public class GetBreadcrumbDataInDto
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AuditDocumentAddOrEdit : AuditDocumentUpdateDto
|
public class AuditDocumentAddOrEdit: AuditDocumentUpdateDto
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public List<AuditDocumentAddOrEdit> Children { get; set; } = new List<AuditDocumentAddOrEdit>() { };
|
public List<AuditDocumentAddOrEdit> Children { get; set; }=new List<AuditDocumentAddOrEdit>() { };
|
||||||
|
|
||||||
public bool IsUpdate { get; set; } = true;
|
public bool IsUpdate { get; set; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AuditDocumentQuery : PageInput
|
public class AuditDocumentQuery:PageInput
|
||||||
{
|
{
|
||||||
public AuditDocumentType? AuditDocumentTypeEnum { get; set; }
|
public AuditDocumentType? AuditDocumentTypeEnum { get; set; }
|
||||||
|
|
||||||
|
|
@ -257,7 +160,7 @@ public class AuditDocumentQuery : PageInput
|
||||||
|
|
||||||
public Guid? ParentId { get; set; }
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -900,12 +900,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<IResponseOutput> GetSysDocSignUserList()
|
public async Task<IResponseOutput> GetSysDocSignUserList()
|
||||||
{
|
{
|
||||||
//EA 只能查看内部人员文档
|
var list = _systemDocConfirmedUserRepository.Where(t => t.ConfirmTime != null).Select(t => new { t.ConfirmUserId, t.ConfirmUser.UserName, t.ConfirmUser.FullName }).Distinct().ToList();
|
||||||
var isEA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.EA;
|
|
||||||
|
|
||||||
var list = _systemDocConfirmedUserRepository.Where(t => t.ConfirmTime != null)
|
|
||||||
.WhereIf(isEA, t => t.ConfirmUser.IsZhiZhun == true)
|
|
||||||
.Select(t => new { t.ConfirmUserId, t.ConfirmUser.UserName, t.ConfirmUser.FullName }).Distinct().ToList();
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(list);
|
return ResponseOutput.Ok(list);
|
||||||
}
|
}
|
||||||
|
|
@ -916,15 +911,12 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
var isInternal = _userInfo.IsZhiZhun;
|
var isInternal = _userInfo.IsZhiZhun;
|
||||||
|
|
||||||
var isEA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.EA;
|
|
||||||
|
|
||||||
var systemDocQuery =
|
var systemDocQuery =
|
||||||
from sysDoc in _systemDocumentRepository.AsQueryable(false)
|
from sysDoc in _systemDocumentRepository.AsQueryable(false)
|
||||||
.Where(t => inQuery.UserTypeId != null ? t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == inQuery.UserTypeId) : true)
|
.Where(t => inQuery.UserTypeId != null ? t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == inQuery.UserTypeId) : true)
|
||||||
from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
||||||
.Where(t => inQuery.UserId != null ? t.Id == inQuery.UserId : true)
|
.Where(t => inQuery.UserId != null ? t.Id == inQuery.UserId : true)
|
||||||
.Where(t => inQuery.UserTypeId != null ? t.UserRoleList.Any(t => t.UserTypeId == inQuery.UserTypeId && t.IsUserRoleDisabled == false) : true)
|
.Where(t => inQuery.UserTypeId != null ? t.UserRoleList.Any(t => t.UserTypeId == inQuery.UserTypeId && t.IsUserRoleDisabled == false) : true)
|
||||||
.Where(t => isEA ? t.IsZhiZhun == true : true) //EA 只能查看内部人员文档
|
|
||||||
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
|
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
|
||||||
from confirm in cc.DefaultIfEmpty()
|
from confirm in cc.DefaultIfEmpty()
|
||||||
select new UnionDocumentWithConfirmInfoView()
|
select new UnionDocumentWithConfirmInfoView()
|
||||||
|
|
@ -950,14 +942,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
//UserTypeId = trialUser.UserRole.UserTypeId,
|
//UserTypeId = trialUser.UserRole.UserTypeId,
|
||||||
//UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
|
//UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
|
||||||
|
|
||||||
FullFilePath = sysDoc.Path,
|
FullFilePath = sysDoc.Path
|
||||||
|
|
||||||
AttachmentCount = sysDoc.SystemDocumentAttachmentList.Where(t => t.OffLine == false).Count(),
|
|
||||||
|
|
||||||
DocNeedSignUserTypeList = sysDoc.NeedConfirmedUserTypeList.Select(t => t.UserTypeRole.UserTypeShortName).ToList(),
|
|
||||||
|
|
||||||
IdentityUserTypeList = identityUser.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Select(c => c.UserTypeRole.UserTypeShortName).ToList()
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var unionQuery = systemDocQuery.IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmTime == null))
|
var unionQuery = systemDocQuery.IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmTime == null))
|
||||||
|
|
@ -971,44 +956,44 @@ namespace IRaCIS.Core.Application.Services
|
||||||
.WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
.WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
||||||
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
|
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
|
||||||
.WhereIf(isInternal == false, t => t.ConfirmTime != null); //不是内部的人,看有签名时间的
|
.WhereIf(isInternal == false, t => t.ConfirmTime != null);
|
||||||
|
|
||||||
var result = await unionQuery.ToPagedListAsync(inQuery);
|
var result = await unionQuery.ToPagedListAsync(inQuery);
|
||||||
|
|
||||||
#region 处理文档 需要签署的角色类型 和每个人的角色信息
|
#region 处理文档 需要签署的角色类型 和每个人的角色信息
|
||||||
|
|
||||||
//var trialDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == false).Select(t => t.Id).ToList();
|
var trialDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == false).Select(t => t.Id).ToList();
|
||||||
|
|
||||||
//var sysDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == true).Select(t => t.Id).ToList();
|
var sysDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == true).Select(t => t.Id).ToList();
|
||||||
|
|
||||||
//var identityUserIdList = result.CurrentPageData.Select(t => t.ConfirmUserId).Distinct().ToList();
|
var identityUserIdList = result.CurrentPageData.Select(t => t.ConfirmUserId).Distinct().ToList();
|
||||||
|
|
||||||
|
|
||||||
//var sysDocUserTypeList = _systemDocNeedConfirmedUserTypeRepository.Where(t => sysDocIdList.Contains(t.SystemDocumentId)).Select(t => new { t.SystemDocumentId, t.UserTypeRole.UserTypeShortName }).ToList();
|
var sysDocUserTypeList = _systemDocNeedConfirmedUserTypeRepository.Where(t => sysDocIdList.Contains(t.SystemDocumentId)).Select(t => new { t.SystemDocumentId, t.UserTypeRole.UserTypeShortName }).ToList();
|
||||||
|
|
||||||
//var identityUserUserTypeList = _identityUserRepository.Where(t => identityUserIdList.Contains(t.Id)).IgnoreQueryFilters().Select(t => new { IdentityUserId = t.Id, UserTypeList = t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Select(c => c.UserTypeRole.UserTypeShortName).ToList() });
|
var identityUserUserTypeList = _identityUserRepository.Where(t => identityUserIdList.Contains(t.Id)).IgnoreQueryFilters().Select(t => new { IdentityUserId = t.Id, UserTypeList = t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Select(c => c.UserTypeRole.UserTypeShortName).ToList() });
|
||||||
|
|
||||||
////Concat 不能用导航属性
|
//Concat 不能用导航属性
|
||||||
//var sysids = result.CurrentPageData.Where(t => t.IsSystemDoc == true).Select(t => t.Id).ToList();
|
var sysids = result.CurrentPageData.Where(t => t.IsSystemDoc == true).Select(t => t.Id).ToList();
|
||||||
|
|
||||||
//var sysDataList = await _systemDocumentRepository.Where(x => sysids.Contains(x.Id)).Include(x => x.SystemDocumentAttachmentList).ToListAsync();
|
var sysDataList = await _systemDocumentRepository.Where(x => sysids.Contains(x.Id)).Include(x => x.SystemDocumentAttachmentList).ToListAsync();
|
||||||
|
|
||||||
//foreach (var item in result.CurrentPageData)
|
foreach (var item in result.CurrentPageData)
|
||||||
//{
|
{
|
||||||
|
|
||||||
// if (sysDataList.Any(y => y.Id == item.Id))
|
if (sysDataList.Any(y => y.Id == item.Id))
|
||||||
// {
|
{
|
||||||
// item.AttachmentCount = sysDataList.Where(y => y.Id == item.Id).Select(x => x.SystemDocumentAttachmentList.Where(z => !z.OffLine).Count()).FirstOrDefault();
|
item.AttachmentCount = sysDataList.Where(y => y.Id == item.Id).Select(x => x.SystemDocumentAttachmentList.Where(z => !z.OffLine).Count()).FirstOrDefault();
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if (item.IsSystemDoc)
|
if (item.IsSystemDoc)
|
||||||
// {
|
{
|
||||||
// item.DocNeedSignUserTypeList = sysDocUserTypeList.Where(t => t.SystemDocumentId == item.Id).Select(t => t.UserTypeShortName).ToList();
|
item.DocNeedSignUserTypeList = sysDocUserTypeList.Where(t => t.SystemDocumentId == item.Id).Select(t => t.UserTypeShortName).ToList();
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
// item.IdentityUserTypeList = identityUserUserTypeList.Where(t => t.IdentityUserId == item.ConfirmUserId).SelectMany(c => c.UserTypeList).ToList();
|
item.IdentityUserTypeList = identityUserUserTypeList.Where(t => t.IdentityUserId == item.ConfirmUserId).SelectMany(c => c.UserTypeList).ToList();
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
CreateMap<AuditDocument, AuditDocumentUpdateDto>();
|
CreateMap<AuditDocument, AuditDocumentUpdateDto>();
|
||||||
CreateMap<AuditDocument, HistoricalVersionDto>();
|
CreateMap<AuditDocument, HistoricalVersionDto>();
|
||||||
CreateMap<AuditDocumentUpdateDto, AuditDocumentAddOrEdit>();
|
CreateMap<AuditDocumentUpdateDto, AuditDocumentAddOrEdit>();
|
||||||
CreateMap<AuditDocument, AuditDocumentData>()
|
CreateMap<AuditDocument, AuditDocumentData>();
|
||||||
.ForMember(d => d.HistoricalVersionsCount, u => u.MapFrom(s => s.AuditDocumentOldVersionList.Count()));
|
|
||||||
CreateMap<AuditDocument, AuditDocumentAddOrEdit>().ReverseMap();
|
CreateMap<AuditDocument, AuditDocumentAddOrEdit>().ReverseMap();
|
||||||
CreateMap<SystemDocument, SystemDocumentView>()
|
CreateMap<SystemDocument, SystemDocumentView>()
|
||||||
.ForMember(d => d.AttachmentCount, u => u.MapFrom(s => s.SystemDocumentAttachmentList.Count()))
|
.ForMember(d => d.AttachmentCount, u => u.MapFrom(s => s.SystemDocumentAttachmentList.Count()))
|
||||||
|
|
@ -44,7 +43,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
|
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
|
||||||
|
|
||||||
CreateMap<TrialDocument, TrialDocumentView>()
|
CreateMap<TrialDocument, TrialDocumentView>()
|
||||||
.ForMember(d => d.AttachmentCount, u => u.MapFrom(s => s.TrialDocumentAttachmentList.Count()))
|
.ForMember(d => d.AttachmentCount, u => u.MapFrom(s =>s.TrialDocumentAttachmentList.Count()))
|
||||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN))
|
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN))
|
||||||
.ForMember(d => d.IsSomeUserSigned, u => u.MapFrom(s => s.TrialDocConfirmedUserList.Any(t => t.ConfirmTime != null)))
|
.ForMember(d => d.IsSomeUserSigned, u => u.MapFrom(s => s.TrialDocConfirmedUserList.Any(t => t.ConfirmTime != null)))
|
||||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||||
|
|
@ -82,7 +81,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();
|
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();
|
||||||
|
|
||||||
CreateMap<TrialSelectEmailNoticeConfigView, BatchAddTrialEmailNoticeConfig>();
|
CreateMap<TrialSelectEmailNoticeConfigView, BatchAddTrialEmailNoticeConfig > ();
|
||||||
|
|
||||||
|
|
||||||
CreateMap<AddOrEditTrialDocument, TrialDocument>()
|
CreateMap<AddOrEditTrialDocument, TrialDocument>()
|
||||||
|
|
@ -95,8 +94,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
CreateMap<AddOrEditSystemDocument, SystemDocument>().ForMember(d => d.NeedConfirmedUserTypeList, c => c.MapFrom(t => t.NeedConfirmedUserTypeIdList));
|
CreateMap<AddOrEditSystemDocument, SystemDocument>().ForMember(d => d.NeedConfirmedUserTypeList, c => c.MapFrom(t => t.NeedConfirmedUserTypeIdList));
|
||||||
CreateMap<Guid, SystemDocNeedConfirmedUserType>()
|
CreateMap<Guid, SystemDocNeedConfirmedUserType>().EqualityComparison((odto, o) => odto == o.NeedConfirmUserTypeId)
|
||||||
.EqualityComparison((odto, o) => odto == o.NeedConfirmUserTypeId)
|
|
||||||
.ForMember(d => d.NeedConfirmUserTypeId, c => c.MapFrom(t => t))
|
.ForMember(d => d.NeedConfirmUserTypeId, c => c.MapFrom(t => t))
|
||||||
.ForMember(d => d.SystemDocumentId, c => c.Ignore());
|
.ForMember(d => d.SystemDocumentId, c => c.Ignore());
|
||||||
|
|
||||||
|
|
@ -148,26 +146,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
CreateMap<TrialHistoryRecordFile, TrialHistoryRecordFileView>();
|
CreateMap<TrialHistoryRecordFile, TrialHistoryRecordFileView>();
|
||||||
CreateMap<TrialHistoryRecordFile, TrialHistoryRecordFileAddOrEdit>().ReverseMap();
|
CreateMap<TrialHistoryRecordFile, TrialHistoryRecordFileAddOrEdit>().ReverseMap();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CreateMap<AuditRecord, AuditRecordView>()
|
|
||||||
.ForMember(d => d.IdentityUserList, c => c.MapFrom(t => t.AuditRecordIdentityUserList));
|
|
||||||
|
|
||||||
CreateMap<AuditRecordAddOrEdit, AuditRecord>()
|
|
||||||
/* .ForMember(d => d.AuditRecordIdentityUserList, c => c.MapFrom(t => t.IdnetityUserIdList))*/;
|
|
||||||
|
|
||||||
CreateMap<Guid, AuditRecordIdentityUser>()
|
|
||||||
.EqualityComparison((odto, o) => odto == o.IdentityUserId)
|
|
||||||
.ForMember(d => d.AuditRecordId, c => c.Ignore())
|
|
||||||
.ForMember(d => d.IdentityUserId, c => c.MapFrom(t => t));
|
|
||||||
|
|
||||||
|
|
||||||
CreateMap<AuditRecordIdentityUser, AuditIdentiUserInfo>()
|
|
||||||
.ForMember(d => d.Id, c => c.MapFrom(t => t.IdentityUser.Id))
|
|
||||||
.ForMember(d => d.UserName, c => c.MapFrom(t => t.IdentityUser.UserName))
|
|
||||||
.ForMember(d => d.FullName, c => c.MapFrom(t => t.IdentityUser.FullName));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
|
||||||
|
|
||||||
public string BodyPartForEdit { get; set; }
|
public string BodyPartForEdit { get; set; }
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
public DateTime? StudyTime { get; set; }
|
public DateTime? StudyTime { get; set; }
|
||||||
|
|
||||||
public string Modalities { get; set; }
|
public string Modalities { get; set; }
|
||||||
|
|
@ -128,8 +126,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
|
||||||
|
|
||||||
public string BodyPart { get; set; }
|
public string BodyPart { get; set; }
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
public string Modality { get; set; }
|
public string Modality { get; set; }
|
||||||
|
|
||||||
public DateTime ImageDate { get; set; }
|
public DateTime ImageDate { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
ModalityForEdit = t.ModalityForEdit,
|
ModalityForEdit = t.ModalityForEdit,
|
||||||
BodyPartExamined = t.BodyPartExamined,
|
BodyPartExamined = t.BodyPartExamined,
|
||||||
BodyPartForEdit = t.BodyPartForEdit,
|
BodyPartForEdit = t.BodyPartForEdit,
|
||||||
BodyPartForEditOther = t.BodyPartForEditOther,
|
|
||||||
|
|
||||||
StudyCode = t.StudyCode,
|
StudyCode = t.StudyCode,
|
||||||
StudyTime = t.StudyTime,
|
StudyTime = t.StudyTime,
|
||||||
|
|
@ -210,7 +209,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
ModalityForEdit = t.ModalityForEdit,
|
ModalityForEdit = t.ModalityForEdit,
|
||||||
BodyPartExamined = t.BodyPartExamined,
|
BodyPartExamined = t.BodyPartExamined,
|
||||||
BodyPartForEdit = t.BodyPartForEdit,
|
BodyPartForEdit = t.BodyPartForEdit,
|
||||||
BodyPartForEditOther = t.BodyPartForEditOther,
|
|
||||||
|
|
||||||
StudyCode = t.StudyCode,
|
StudyCode = t.StudyCode,
|
||||||
StudyTime = t.StudyTime,
|
StudyTime = t.StudyTime,
|
||||||
|
|
@ -437,7 +435,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
studyMonitor.RecordPath = incommand.RecordPath;
|
studyMonitor.RecordPath = incommand.RecordPath;
|
||||||
studyMonitor.FileSize = incommand.Study.SeriesList.SelectMany(t => t.InstanceList).Sum(t => t.FileSize);
|
studyMonitor.FileSize = incommand.Study.SeriesList.SelectMany(t => t.InstanceList).Sum(t => t.FileSize);
|
||||||
|
|
||||||
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString());
|
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString());
|
||||||
var findStudy = await _taskStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
|
var findStudy = await _taskStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -473,7 +471,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
study.Id = studyId;
|
study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString());
|
||||||
study.TrialId = incommand.TrialId;
|
study.TrialId = incommand.TrialId;
|
||||||
study.SubjectId = incommand.SubjectId;
|
study.SubjectId = incommand.SubjectId;
|
||||||
study.VisitTaskId = visiTaskId;
|
study.VisitTaskId = visiTaskId;
|
||||||
|
|
@ -526,9 +524,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
await _taskInstanceRepository.AddAsync(isntance);
|
await _taskInstanceRepository.AddAsync(isntance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
findStudy = study;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -573,25 +568,16 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
//新的序列 那么 检查的序列数量+1
|
//新的序列 那么 检查的序列数量+1
|
||||||
findStudy.SeriesCount += 1;
|
findStudy.SeriesCount += 1;
|
||||||
}
|
}
|
||||||
//else
|
else
|
||||||
//{
|
{
|
||||||
// //该序列掉了instance
|
//该序列掉了instance
|
||||||
// dicomSeries.InstanceCount += seriesItem.InstanceList.Count;
|
dicomSeries.InstanceCount += seriesItem.InstanceList.Count;
|
||||||
//}
|
}
|
||||||
|
|
||||||
//找到该序列已经存在的instanceId
|
|
||||||
var existInstanceIdList = _taskInstanceRepository.Where(t => t.SeriesId == dicomSeries.Id).Select(t => t.Id).ToList();
|
|
||||||
|
|
||||||
foreach (var instanceItem in seriesItem.InstanceList)
|
foreach (var instanceItem in seriesItem.InstanceList)
|
||||||
{
|
{
|
||||||
var insntance = _mapper.Map<TaskInstance>(instanceItem);
|
var insntance = _mapper.Map<TaskInstance>(instanceItem);
|
||||||
|
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), visiTaskId.ToString());
|
||||||
var instanceId = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), visiTaskId.ToString());
|
|
||||||
|
|
||||||
|
|
||||||
if (!existInstanceIdList.Any(t => t == instanceId))
|
|
||||||
{
|
|
||||||
insntance.Id = instanceId;
|
|
||||||
insntance.StudyId = findStudy.Id;
|
insntance.StudyId = findStudy.Id;
|
||||||
insntance.SeriesId = dicomSeries.Id;
|
insntance.SeriesId = dicomSeries.Id;
|
||||||
|
|
||||||
|
|
@ -600,44 +586,17 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
insntance.VisitTaskId = visiTaskId;
|
insntance.VisitTaskId = visiTaskId;
|
||||||
|
|
||||||
await _taskInstanceRepository.AddAsync(insntance);
|
await _taskInstanceRepository.AddAsync(insntance);
|
||||||
|
|
||||||
dicomSeries.InstanceCount++;
|
|
||||||
findStudy.InstanceCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
// 不管是新的序列 还是 该序列 掉了Instance 重传的时候 检查的instance 数量都会增加
|
// 不管是新的序列 还是 该序列 掉了Instance 重传的时候 检查的instance 数量都会增加
|
||||||
//findStudy.InstanceCount += seriesItem.InstanceList.Count;
|
findStudy.InstanceCount += seriesItem.InstanceList.Count;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 只配置单个部位自动赋值
|
|
||||||
|
|
||||||
var originStudy = _dicomStudyRepository.Where(t => t.TrialId == incommand.TrialId && t.StudyInstanceUid == findStudy.StudyInstanceUid).FirstOrDefault();
|
|
||||||
|
|
||||||
if (originStudy != null)
|
|
||||||
{
|
|
||||||
findStudy.BodyPartForEdit = originStudy.BodyPartForEdit;
|
|
||||||
|
|
||||||
findStudy.BodyPartForEditOther = originStudy.BodyPartForEditOther;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////项目配置的影像部位
|
|
||||||
//var trialBodyParts = _trialRepository.Where(t => t.Id == trialId).Select(t => t.BodyPartTypes).FirstOrDefault();
|
|
||||||
|
|
||||||
//var trialBodyPartList = trialBodyParts.Split('|', StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
|
|
||||||
//if (trialBodyPartList.Count() == 1)
|
|
||||||
//{
|
|
||||||
// var first = trialBodyPartList.First();
|
|
||||||
// findStudy.BodyPartForEdit = first;
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
var @lock2 = _distributedLockProvider.CreateLock($"StudyCommit");
|
var @lock2 = _distributedLockProvider.CreateLock($"StudyCommit");
|
||||||
|
|
||||||
using (await @lock2.AcquireAsync())
|
using (await @lock2.AcquireAsync())
|
||||||
|
|
@ -763,7 +722,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
Description = ns.Description,
|
Description = ns.Description,
|
||||||
ImageDate = ns.ImageDate,
|
ImageDate = ns.ImageDate,
|
||||||
BodyPart = ns.BodyPart,
|
BodyPart = ns.BodyPart,
|
||||||
BodyPartForEditOther=ns.BodyPartForEditOther,
|
|
||||||
FileCount = ns.FileCount,
|
FileCount = ns.FileCount,
|
||||||
Modality = ns.Modality,
|
Modality = ns.Modality,
|
||||||
StudyCode = ns.StudyCode,
|
StudyCode = ns.StudyCode,
|
||||||
|
|
@ -1016,13 +974,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
subjectCode = inQuery.SubjectCode;
|
subjectCode = inQuery.SubjectCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
//下载这里查看也需要维护编号,维护的时候不会处理一致性分析任务
|
|
||||||
if (inQuery.SubjectId != null && inQuery.TrialReadingCriterionId != null)
|
|
||||||
{
|
|
||||||
await SubejctRandomReadingTaskNameDeal((Guid)subjectId, inQuery.TrialReadingCriterionId);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TaskState? taskState = null;
|
TaskState? taskState = null;
|
||||||
if (inQuery.VisitTaskId != null)
|
if (inQuery.VisitTaskId != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -323,7 +323,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 只配置单个部位自动赋值
|
||||||
|
//项目配置的影像部位
|
||||||
|
var trialBodyParts = _trialRepository.Where(t => t.Id == trialId).Select(t => t.BodyPartTypes).FirstOrDefault();
|
||||||
|
|
||||||
|
var trialBodyPartList = trialBodyParts.Split('|', StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
if (trialBodyPartList.Count() == 1)
|
||||||
|
{
|
||||||
|
var first = trialBodyPartList.First();
|
||||||
|
findStudy.BodyPartForEdit = first;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
var @lock2 = _distributedLockProvider.CreateLock($"StudyCommit");
|
var @lock2 = _distributedLockProvider.CreateLock($"StudyCommit");
|
||||||
|
|
@ -568,7 +579,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("{subjectVisitId:guid}")]
|
[HttpGet("{subjectVisitId:guid}")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public IResponseOutput<List<RelationStudyDTO>> GetAllRelationStudyList(Guid subjectVisitId, bool? isReading)
|
public IResponseOutput<List<RelationStudyDTO>> GetAllRelationStudyList(Guid subjectVisitId,bool? isReading)
|
||||||
{
|
{
|
||||||
#region 废弃
|
#region 废弃
|
||||||
//var studylist = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId && u.IsDeleted == false).Select(t => new { StudyId = t.Id, t.SubjectId, t.TrialId }).ToList();
|
//var studylist = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId && u.IsDeleted == false).Select(t => new { StudyId = t.Id, t.SubjectId, t.TrialId }).ToList();
|
||||||
|
|
@ -597,17 +608,17 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
var studyInfo = _dicomStudyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException();
|
var studyInfo = _dicomStudyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException();
|
||||||
|
|
||||||
var list = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId)
|
var list = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId)
|
||||||
.Select(t => new RelationStudyDTO()
|
.Select(t=> new RelationStudyDTO()
|
||||||
{
|
{
|
||||||
StudyId = t.Id,
|
StudyId = t.Id,
|
||||||
StudyCode = t.StudyCode,
|
StudyCode = t.StudyCode,
|
||||||
VisitName = t.SubjectVisit.VisitName,
|
VisitName = t.SubjectVisit.VisitName,
|
||||||
Modalities = t.Modalities,
|
Modalities = t.Modalities,
|
||||||
Description = t.Description,
|
Description = t.Description,
|
||||||
SeriesCount = t.SeriesList.Where(t => isReading == true ? t.IsReading == true : true).Count()
|
SeriesCount = t.SeriesList.Where(t=> isReading==true? t.IsReading==true:true).Count()
|
||||||
}).ToList();
|
}) .ToList();
|
||||||
|
|
||||||
list = list.Where(t => t.SeriesCount > 0).OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList();
|
list = list.Where(t=>t.SeriesCount>0).OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList();
|
||||||
|
|
||||||
return ResponseOutput.Ok(list);
|
return ResponseOutput.Ok(list);
|
||||||
}
|
}
|
||||||
|
|
@ -617,7 +628,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
/// <param name="studyId"> Dicom检查的Id </param>
|
/// <param name="studyId"> Dicom检查的Id </param>
|
||||||
[HttpGet, Route("{studyId:guid}")]
|
[HttpGet, Route("{studyId:guid}")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public IResponseOutput<DicomStudyDTO> Item(Guid studyId, bool? isPacs)
|
public IResponseOutput<DicomStudyDTO> Item(Guid studyId,bool? isPacs)
|
||||||
{
|
{
|
||||||
if (isPacs == true)
|
if (isPacs == true)
|
||||||
{
|
{
|
||||||
|
|
@ -850,7 +861,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var verifyStudyInfo = _dicomStudyRepository.Where(t => t.TrialId == trialId && t.Id == expectStudyId, false, true).ProjectTo<VerifyStudyDto>(_mapper.ConfigurationProvider).FirstOrDefault();
|
var verifyStudyInfo = _dicomStudyRepository.Where(t => t.TrialId == trialId && t.Id == expectStudyId,false,true).ProjectTo<VerifyStudyDto>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||||
result.StudyInfo = verifyStudyInfo;
|
result.StudyInfo = verifyStudyInfo;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -292,8 +292,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
public string OrganizationName { get; set; } = string.Empty;
|
public string OrganizationName { get; set; } = string.Empty;
|
||||||
public Guid? UserType { get; set; }
|
public Guid? UserType { get; set; }
|
||||||
|
|
||||||
public UserTypeEnum? UserTypeEnum { get; set; }
|
|
||||||
|
|
||||||
public bool? IsTestUser { get; set; }
|
public bool? IsTestUser { get; set; }
|
||||||
|
|
||||||
public bool? IsZhiZhun { get; set; }
|
public bool? IsZhiZhun { get; set; }
|
||||||
|
|
@ -315,10 +313,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
public DateTime? EndLastChangePassWordTime { get; set; }
|
public DateTime? EndLastChangePassWordTime { get; set; }
|
||||||
|
|
||||||
public UserCeateSource? UserCeateSource { get; set; }
|
public UserCeateSource? UserCeateSource { get; set; }
|
||||||
|
|
||||||
public Guid? AuditRecordId { get; set; }
|
|
||||||
|
|
||||||
public bool? IsAuditRecordUserSelect { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UserRoleInfoDTO
|
public class UserRoleInfoDTO
|
||||||
|
|
@ -358,9 +352,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public int JoinedTrialCount { get; set; }
|
public int JoinedTrialCount { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public bool IsAuditRecordUserSelect { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
Task<IResponseOutput<UserAddedReturnDTO>> AddUser(UserCommand userAddModel);
|
Task<IResponseOutput<UserAddedReturnDTO>> AddUser(UserCommand userAddModel);
|
||||||
//Task<IResponseOutput> DeleteUser(Guid userId);
|
//Task<IResponseOutput> DeleteUser(Guid userId);
|
||||||
//Task<UserDetailDTO> GetUser(Guid id);
|
//Task<UserDetailDTO> GetUser(Guid id);
|
||||||
//Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO param);
|
Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO param);
|
||||||
//Task<IResponseOutput<LoginReturnDTO>> Login(string userName, string password);
|
//Task<IResponseOutput<LoginReturnDTO>> Login(string userName, string password);
|
||||||
Task<IResponseOutput> VerifyMFACodeAsync(string Code);
|
Task<IResponseOutput> VerifyMFACodeAsync(string Code);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -495,7 +495,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inQuery"></param>
|
/// <param name="inQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery, [FromServices] IRepository<AuditRecordIdentityUser> _auditRecordIdentityUserRepository)
|
public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
var userQueryable = _identityUserRepository.Where(x => x.UserRoleList.Any(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin))
|
var userQueryable = _identityUserRepository.Where(x => x.UserRoleList.Any(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin))
|
||||||
|
|
@ -510,36 +510,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
.WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
||||||
.WhereIf(inQuery.BeginLastChangePassWordTime != null, t => t.LastChangePassWordTime >= inQuery.BeginLastChangePassWordTime)
|
.WhereIf(inQuery.BeginLastChangePassWordTime != null, t => t.LastChangePassWordTime >= inQuery.BeginLastChangePassWordTime)
|
||||||
.WhereIf(inQuery.EndLastChangePassWordTime != null, t => t.LastChangePassWordTime <= inQuery.EndLastChangePassWordTime)
|
.WhereIf(inQuery.EndLastChangePassWordTime != null, t => t.LastChangePassWordTime <= inQuery.EndLastChangePassWordTime)
|
||||||
.WhereIf(inQuery.UserType != null, t => t.UserRoleList.Any(t => t.UserTypeId == inQuery.UserType && t.IsUserRoleDisabled == false))
|
.WhereIf(inQuery.UserType != null, t => t.UserRoleList.Any(t => t.UserTypeId == inQuery.UserType && t.IsUserRoleDisabled==false))
|
||||||
.WhereIf(inQuery.UserTypeEnum != null, t => t.UserRoleList.Any(t => t.UserTypeRole.UserTypeEnum == inQuery.UserTypeEnum && t.IsUserRoleDisabled == false))
|
|
||||||
.WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
.WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
||||||
.WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
.WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
||||||
.WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
.WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
||||||
.WhereIf(inQuery.UserCeateSource != null, t => t.UserCeateSource == inQuery.UserCeateSource)
|
.WhereIf(inQuery.UserCeateSource != null, t => t.UserCeateSource == inQuery.UserCeateSource)
|
||||||
.WhereIf(inQuery.AuditRecordId != null && inQuery.IsAuditRecordUserSelect == true, t => t.AuditRecordList.Any(t => t.AuditRecordId == inQuery.AuditRecordId))
|
|
||||||
.WhereIf(inQuery.AuditRecordId != null && inQuery.IsAuditRecordUserSelect == false, t => !t.AuditRecordList.Any(t => t.AuditRecordId == inQuery.AuditRecordId))
|
|
||||||
.ProjectTo<UserListDTO>(_mapper.ConfigurationProvider);
|
.ProjectTo<UserListDTO>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
var pageList = await userQueryable.ToPagedListAsync(inQuery);
|
return await userQueryable.ToPagedListAsync(inQuery);
|
||||||
|
|
||||||
|
|
||||||
if (inQuery.AuditRecordId != null)
|
|
||||||
{
|
|
||||||
var selectIdList = _auditRecordIdentityUserRepository.Where(t => t.AuditRecordId == inQuery.AuditRecordId).Select(t => t.IdentityUserId).ToList();
|
|
||||||
|
|
||||||
foreach (var item in selectIdList)
|
|
||||||
{
|
|
||||||
var find = pageList.CurrentPageData.Where(t => t.Id == item).FirstOrDefault();
|
|
||||||
|
|
||||||
if (find != null)
|
|
||||||
{
|
|
||||||
find.IsAuditRecordUserSelect = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pageList;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -885,7 +863,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.WhereIf(inQuery.OptTypeList != null && inQuery.OptTypeList.Count > 0, t => inQuery.OptTypeList.Contains(t.OptType))
|
.WhereIf(inQuery.OptTypeList != null && inQuery.OptTypeList.Count > 0, t => inQuery.OptTypeList.Contains(t.OptType))
|
||||||
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
|
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
|
||||||
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
|
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
|
||||||
.WhereIf(inQuery.IsLoginUncommonly != null, t => t.IsLoginUncommonly == inQuery.IsLoginUncommonly)
|
.WhereIf(inQuery.IsLoginUncommonly != null , t => t.IsLoginUncommonly== inQuery.IsLoginUncommonly)
|
||||||
|
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.ActionUserName.Contains(inQuery.LoginUserName!))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.ActionUserName.Contains(inQuery.LoginUserName!))
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.ActionUserName.Contains(inQuery.LoginFaildName!))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.ActionUserName.Contains(inQuery.LoginFaildName!))
|
||||||
|
|
@ -944,7 +922,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var password = loginDto.Password;
|
var password = loginDto.Password;
|
||||||
|
|
||||||
var emailConfig = _emailConfig.CurrentValue;
|
var emailConfig = _emailConfig.CurrentValue;
|
||||||
var companyInfo = new SystemEmailSendConfigView() { CompanyName = emailConfig.CompanyName, CompanyNameCN = emailConfig.CompanyNameCN, CompanyShortName = emailConfig.CompanyShortName, CompanyShortNameCN = emailConfig.CompanyShortNameCN, SystemShortName = emailConfig.SystemShortName, EmailRegexStr = emailConfig.EmailRegexStr };
|
var companyInfo = new SystemEmailSendConfigView() { CompanyName = emailConfig.CompanyName, CompanyNameCN = emailConfig.CompanyNameCN, CompanyShortName = emailConfig.CompanyShortName, CompanyShortNameCN = emailConfig.CompanyShortNameCN,SystemShortName=emailConfig.SystemShortName ,EmailRegexStr=emailConfig.EmailRegexStr};
|
||||||
|
|
||||||
|
|
||||||
int maxFailures = _verifyConfig.CurrentValue.LoginMaxFailCount;
|
int maxFailures = _verifyConfig.CurrentValue.LoginMaxFailCount;
|
||||||
|
|
@ -1013,7 +991,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
//超过90天没修改密码
|
//超过90天没修改密码
|
||||||
|
|
||||||
if (loginUser != null && _verifyConfig.CurrentValue.IsNeedChangePassWord && loginUser.LastChangePassWordTime != null && DateTime.Now.AddDays(-_verifyConfig.CurrentValue.ChangePassWordDays) > loginUser.LastChangePassWordTime.Value)
|
if (loginUser!= null&&_verifyConfig.CurrentValue.IsNeedChangePassWord && loginUser.LastChangePassWordTime != null && DateTime.Now.AddDays(-_verifyConfig.CurrentValue.ChangePassWordDays) > loginUser.LastChangePassWordTime.Value)
|
||||||
{
|
{
|
||||||
loginUser.NeedChangePassWord = true;
|
loginUser.NeedChangePassWord = true;
|
||||||
}
|
}
|
||||||
|
|
@ -1024,7 +1002,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
UserOptType.LoginLockedAccount
|
UserOptType.LoginLockedAccount
|
||||||
};
|
};
|
||||||
|
|
||||||
var actionUserName = loginUser != null ? loginUser.UserName : userName;
|
var actionUserName= loginUser!= null ? loginUser.UserName : userName;
|
||||||
|
|
||||||
var lastLoginIPRegion = await _userLogRepository.Where(t => t.ActionUserName == actionUserName && userOptTypes.Contains(t.OptType))
|
var lastLoginIPRegion = await _userLogRepository.Where(t => t.ActionUserName == actionUserName && userOptTypes.Contains(t.OptType))
|
||||||
.OrderByDescending(t => t.CreateTime).Select(t => t.IPRegion).FirstOrDefaultAsync();
|
.OrderByDescending(t => t.CreateTime).Select(t => t.IPRegion).FirstOrDefaultAsync();
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,6 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public string VideoUrl { get; set; } = string.Empty;
|
public string VideoUrl { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,6 @@ namespace IRaCIS.Core.Application.Contracts.DTO
|
||||||
|
|
||||||
public string BodyPart { get; set; } = String.Empty;
|
public string BodyPart { get; set; } = String.Empty;
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class QCQuestionAnswerCommand
|
public class QCQuestionAnswerCommand
|
||||||
|
|
@ -429,8 +427,6 @@ namespace IRaCIS.Core.Application.Contracts.DTO
|
||||||
|
|
||||||
public bool IsCompleteClinicalData { get; set; }
|
public bool IsCompleteClinicalData { get; set; }
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class QASeriesInfoDto
|
public class QASeriesInfoDto
|
||||||
|
|
|
||||||
|
|
@ -518,11 +518,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public int? CheckWaitReplyCount { get; set; }
|
public int? CheckWaitReplyCount { get; set; }
|
||||||
|
|
||||||
public string SuspendReason { get; set; }
|
|
||||||
|
|
||||||
public string Reason { get; set; }
|
|
||||||
|
|
||||||
public string ExportReason => Status == SubjectStatus.OutOfVisit ? Reason : (Status == SubjectStatus.EndOfVisit ? SuspendReason : "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -541,7 +541,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
sv.CheckUserId = _userInfo.UserRoleId;
|
sv.CheckUserId = _userInfo.UserRoleId;
|
||||||
sv.CheckState = CheckStateEnum.CVPassed;
|
sv.CheckState = CheckStateEnum.CVPassed;
|
||||||
sv.CheckTime = DateTime.Now;
|
|
||||||
|
|
||||||
sv.ReadingStatus = ReadingStatusEnum.TaskAllocate;
|
sv.ReadingStatus = ReadingStatusEnum.TaskAllocate;
|
||||||
|
|
||||||
|
|
@ -1067,7 +1066,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
|
|
||||||
study.BodyPartForEdit = updateModalityCommand.BodyPart;
|
study.BodyPartForEdit = updateModalityCommand.BodyPart;
|
||||||
study.BodyPartForEditOther = updateModalityCommand.BodyPartForEditOther;
|
|
||||||
|
|
||||||
study.ModalityForEdit = updateModalityCommand.Modality;
|
study.ModalityForEdit = updateModalityCommand.Modality;
|
||||||
study.StudyName = updateModalityCommand.StudyName;
|
study.StudyName = updateModalityCommand.StudyName;
|
||||||
|
|
|
||||||
|
|
@ -446,11 +446,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ViewStudyPartInDto
|
|
||||||
{
|
|
||||||
public Guid VisitTaskId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DeleteSingleTableQuestionMarkInDto
|
public class DeleteSingleTableQuestionMarkInDto
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
|
|
@ -860,6 +855,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? PicturePath { get; set; }
|
public string? PicturePath { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 第一次添加的任务ID
|
||||||
|
/// </summary>
|
||||||
|
public decimal FristAddTaskNum { get; set; } = 0;
|
||||||
|
|
||||||
|
|
||||||
public SplitOrMergeType? SplitOrMergeType { get; set; }
|
public SplitOrMergeType? SplitOrMergeType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -1032,8 +1033,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public string MergeName { get; set; }
|
public string MergeName { get; set; }
|
||||||
|
|
||||||
public decimal FristAddTaskNum { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 病灶类型
|
/// 病灶类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1868,11 +1867,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? DigitPlaces { get; set; } = 2;
|
public int? DigitPlaces { get; set; } = 2;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 是否查看检查部位
|
|
||||||
/// </summary>
|
|
||||||
public bool IsViewStudyPart { get; set; } = false;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标准类型
|
/// 标准类型
|
||||||
|
|
@ -2356,6 +2350,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public bool? IsCanEditPosition { get; set; }
|
public bool? IsCanEditPosition { get; set; }
|
||||||
|
|
||||||
|
public decimal FristAddTaskNum { get; set; } = 0;
|
||||||
|
|
||||||
public decimal? WW { get; set; }
|
public decimal? WW { get; set; }
|
||||||
|
|
||||||
public decimal? WL { get; set; }
|
public decimal? WL { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public string TaskBlindName { get; set; } = string.Empty;
|
public string TaskBlindName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 是否查看检查部位
|
|
||||||
/// </summary>
|
|
||||||
public bool IsViewStudyPart { get; set; } = false;
|
|
||||||
|
|
||||||
//任务来源访视Id 方便回更访视读片状态
|
//任务来源访视Id 方便回更访视读片状态
|
||||||
public Guid? SourceSubjectVisitId { get; set; }
|
public Guid? SourceSubjectVisitId { get; set; }
|
||||||
public Guid? SouceReadModuleId { get; set; }
|
public Guid? SouceReadModuleId { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<NoneDicomStudy> _noneDicomStudyRepository,
|
IRepository<NoneDicomStudy> _noneDicomStudyRepository,
|
||||||
IRepository<VisitTask> _visitTaskRepository,
|
IRepository<VisitTask> _visitTaskRepository,
|
||||||
IRepository<Trial> _trialRepository,
|
IRepository<Trial> _trialRepository,
|
||||||
IRepository<TaskInstance> _taskInstanceRepository,
|
|
||||||
IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository,
|
IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository,
|
||||||
IRepository<ReadingNoneDicomMark> _readingNoneDicomMarkRepository,
|
IRepository<ReadingNoneDicomMark> _readingNoneDicomMarkRepository,
|
||||||
IRepository<UserLog> _userLogRepository,
|
IRepository<UserLog> _userLogRepository,
|
||||||
|
|
@ -94,22 +93,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查看检查部位
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="inDto"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<bool> ViewStudyPart(ViewStudyPartInDto inDto)
|
|
||||||
{
|
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask()
|
|
||||||
{
|
|
||||||
IsViewStudyPart = true,
|
|
||||||
});
|
|
||||||
return await _visitTaskRepository.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除单个表格问题标记
|
/// 删除单个表格问题标记
|
||||||
|
|
@ -2619,7 +2602,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await VerifyTaskIsSign(inDto.VisitTaskId);
|
await VerifyTaskIsSign(inDto.VisitTaskId);
|
||||||
if (inDto.InstanceId != null && inDto.IsDicomReading)
|
if (inDto.InstanceId != null && inDto.IsDicomReading)
|
||||||
{
|
{
|
||||||
if ((!(await _dicomInstanceRepository.AnyAsync(x => x.Id == inDto.InstanceId && x.SeriesId == inDto.SeriesId))) && (!(await _taskInstanceRepository.AnyAsync(x => x.Id == inDto.InstanceId && x.SeriesId == inDto.SeriesId))))
|
if (!(await _dicomInstanceRepository.AnyAsync(x => x.Id == inDto.InstanceId && x.SeriesId == inDto.SeriesId)))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException(_localizer["ReadingImage_Idnotcorrespond"]);
|
throw new BusinessValidationFailedException(_localizer["ReadingImage_Idnotcorrespond"]);
|
||||||
}
|
}
|
||||||
|
|
@ -3195,9 +3178,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||||
var isBaseline = await _subjectVisitRepository.Where(x => x.Id == taskInfo.SourceSubjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync();
|
var isBaseline = await _subjectVisitRepository.Where(x => x.Id == taskInfo.SourceSubjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync();
|
||||||
|
var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.Type != "group"
|
||||||
|
|
||||||
var readingQuestionList = await _readingQuestionTrialRepository.Where(x => !x.ExcludeShowVisitList.Contains(taskInfo.VisitTaskNum) &&x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.Type != "group"
|
|
||||||
&& (x.IsJudgeQuestion || (x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show))
|
&& (x.IsJudgeQuestion || (x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show))
|
||||||
).ToListAsync();
|
).ToListAsync();
|
||||||
if (isBaseline)
|
if (isBaseline)
|
||||||
|
|
@ -3641,7 +3622,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
task.ReadingVersionEnum = criterionInfo.ReadingVersionEnum;
|
task.ReadingVersionEnum = criterionInfo.ReadingVersionEnum;
|
||||||
task.ReadingToolList = criterionInfo.ReadingToolList;
|
task.ReadingToolList = criterionInfo.ReadingToolList;
|
||||||
task.IsExistUnprocessedFeedback = await _userFeedBackRepository.AnyAsync(x => x.VisitTaskId == task.VisitTaskId && x.State == 0);
|
task.IsExistUnprocessedFeedback = await _userFeedBackRepository.AnyAsync(x => x.VisitTaskId == task.VisitTaskId && x.State == 0);
|
||||||
task.IsViewStudyPart= visitTaskInfo.IsViewStudyPart;
|
|
||||||
// 添加默认答案
|
// 添加默认答案
|
||||||
if (inDto.VisitTaskId == null && visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned)
|
if (inDto.VisitTaskId == null && visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.ReadingQuestionSystemId, u => u.MapFrom(s => s.Id));
|
.ForMember(d => d.ReadingQuestionSystemId, u => u.MapFrom(s => s.Id));
|
||||||
|
|
||||||
CreateMap<ReadingTableAnswerRowInfo, TableAnsweRowInfo>()
|
CreateMap<ReadingTableAnswerRowInfo, TableAnsweRowInfo>()
|
||||||
.ForMember(d => d.FristAddTaskNum, u => u.MapFrom(s => s.FristAddTask.VisitTaskNum))
|
|
||||||
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
|
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
|
||||||
.ForMember(d => d.MergeName, u => u.MapFrom(s => s.MergeRow == null ? string.Empty : s.MergeRow.ReadingQuestionTrial.OrderMark + s.MergeRow.RowIndex.GetLesionMark()))
|
.ForMember(d => d.MergeName, u => u.MapFrom(s => s.MergeRow == null ? string.Empty : s.MergeRow.ReadingQuestionTrial.OrderMark + s.MergeRow.RowIndex.GetLesionMark()))
|
||||||
.ForMember(d => d.SplitName, u => u.MapFrom(s => s.SplitRow == null ? string.Empty : s.SplitRow.ReadingQuestionTrial.OrderMark + s.SplitRow.RowIndex.GetLesionMark()))
|
.ForMember(d => d.SplitName, u => u.MapFrom(s => s.SplitRow == null ? string.Empty : s.SplitRow.ReadingQuestionTrial.OrderMark + s.SplitRow.RowIndex.GetLesionMark()))
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == visitTask.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
|
var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == visitTask.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).Include(x=>x.FristAddTask).ToListAsync();
|
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync();
|
||||||
|
|
||||||
var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect
|
var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect
|
||||||
&& x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
|
&& x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
|
||||||
|
|
@ -228,7 +228,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
RowIndex = x.RowIndex,
|
RowIndex = x.RowIndex,
|
||||||
MeasureData = x.MeasureData,
|
MeasureData = x.MeasureData,
|
||||||
OtherMeasureData = x.OtherMeasureData,
|
OtherMeasureData = x.OtherMeasureData,
|
||||||
FristAddTaskNum = x.FristAddTask.VisitTaskNum,
|
FristAddTaskNum = x.FristAddTaskNum,
|
||||||
TableQuestionList = tableQuestion.Where(y => y.QuestionId == item.QuestionId && y.RowId == x.Id).ToList(),
|
TableQuestionList = tableQuestion.Where(y => y.QuestionId == item.QuestionId && y.RowId == x.Id).ToList(),
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
|
||||||
|
|
@ -702,6 +702,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = taskinfo.TaskBlindName,
|
BlindName = taskinfo.TaskBlindName,
|
||||||
OrderMark = questionInfo.OrderMark,
|
OrderMark = questionInfo.OrderMark,
|
||||||
|
FristAddTaskNum = taskinfo.VisitTaskNum,
|
||||||
FristAddTaskId = taskinfo.Id,
|
FristAddTaskId = taskinfo.Id,
|
||||||
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
@ -841,6 +842,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = inDto.BlindName,
|
BlindName = inDto.BlindName,
|
||||||
OrderMark = questionInfo.OrderMark,
|
OrderMark = questionInfo.OrderMark,
|
||||||
|
FristAddTaskNum = inDto.VisitTaskNum,
|
||||||
FristAddTaskId = inDto.VisitTaskId,
|
FristAddTaskId = inDto.VisitTaskId,
|
||||||
RowMark = questionInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
RowMark = questionInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
@ -901,6 +903,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = inDto.BlindName,
|
BlindName = inDto.BlindName,
|
||||||
OrderMark = pAVquestionInfo.OrderMark,
|
OrderMark = pAVquestionInfo.OrderMark,
|
||||||
|
FristAddTaskNum = inDto.VisitTaskNum,
|
||||||
FristAddTaskId = inDto.VisitTaskId,
|
FristAddTaskId = inDto.VisitTaskId,
|
||||||
RowMark = pAVquestionInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
RowMark = pAVquestionInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -867,38 +867,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
TrialId = x.TrialId,
|
TrialId = x.TrialId,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
// 肛门淋巴结
|
|
||||||
var portalOrgan = await _organInfoRepository.Where(x => x.SystemCriterionId == trialReadingCriterion.ReadingQuestionCriterionSystemId &&
|
|
||||||
|
|
||||||
x.Part == "肝门淋巴结" &&
|
|
||||||
|
|
||||||
x.IsLymphNodes == IsLymph.Yes
|
|
||||||
).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
foreach (var item in recistTableAnswers)
|
foreach (var item in recistTableAnswers)
|
||||||
{
|
{
|
||||||
var rowinfo = tableRowAnswers.Where(y => y.OriginalId == item.RowId).FirstOrDefault();
|
|
||||||
if (rowinfo != null)
|
|
||||||
{
|
|
||||||
item.QuestionId = rowinfo.QuestionId;
|
|
||||||
|
|
||||||
|
|
||||||
if (portalOrgan != null && rowinfo.OrganInfoId == portalOrgan.Id)
|
|
||||||
{
|
|
||||||
var IslymphNode = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.IsLymph).Select(x => x.Answer).FirstIsNullReturnEmpty().EqEnum(YesOrNoOrNa.Yes);
|
|
||||||
var minorAxis = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstIsNullReturnEmpty().IsNullOrEmptyReturn0();
|
|
||||||
|
|
||||||
var iSbetween15and20 = minorAxis >= 15 && minorAxis < 20;
|
|
||||||
if (item.QuestionMark == QuestionMark.State && IslymphNode && iSbetween15and20 && rowinfo.LesionType == LesionType.TargetLesion)
|
|
||||||
{
|
|
||||||
item.Answer = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
item.QuestionId = tableRowAnswers.Where(y => y.OriginalId == item.RowId).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
item.TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == item.QuestionId && x.QuestionMark == item.QuestionMark).Select(x => x.Id).FirstOrDefault();
|
item.TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == item.QuestionId && x.QuestionMark == item.QuestionMark).Select(x => x.Id).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -908,7 +880,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
{
|
{
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var tableAnswers = recistTableAnswers.Select(x => new ReadingTableQuestionAnswer
|
var tableAnswers = recistTableAnswers.Select(x => new ReadingTableQuestionAnswer
|
||||||
{
|
{
|
||||||
Id = NewId.NextGuid(),
|
Id = NewId.NextGuid(),
|
||||||
|
|
|
||||||
|
|
@ -414,6 +414,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
rowlist.Add(new ReadingTableAnswerRowInfo()
|
rowlist.Add(new ReadingTableAnswerRowInfo()
|
||||||
{
|
{
|
||||||
FristAddTaskId = visitTaskId,
|
FristAddTaskId = visitTaskId,
|
||||||
|
FristAddTaskNum = taskinfo.VisitTaskNum,
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = taskinfo.TaskBlindName,
|
BlindName = taskinfo.TaskBlindName,
|
||||||
OrderMark = tableQuestion.OrderMark,
|
OrderMark = tableQuestion.OrderMark,
|
||||||
|
|
|
||||||
|
|
@ -558,6 +558,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = taskinfo.TaskBlindName,
|
BlindName = taskinfo.TaskBlindName,
|
||||||
OrderMark = questionInfo.OrderMark,
|
OrderMark = questionInfo.OrderMark,
|
||||||
|
FristAddTaskNum = taskinfo.VisitTaskNum,
|
||||||
FristAddTaskId = taskinfo.Id,
|
FristAddTaskId = taskinfo.Id,
|
||||||
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
@ -768,6 +769,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = taskinfo.TaskBlindName,
|
BlindName = taskinfo.TaskBlindName,
|
||||||
OrderMark = questionInfo.OrderMark,
|
OrderMark = questionInfo.OrderMark,
|
||||||
|
FristAddTaskNum = taskinfo.VisitTaskNum,
|
||||||
FristAddTaskId = taskinfo.Id,
|
FristAddTaskId = taskinfo.Id,
|
||||||
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
RowMark = questionInfo.OrderMark + decimal.Parse(maxnum.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
@ -1041,6 +1043,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IsCurrentTaskAdd = true,
|
IsCurrentTaskAdd = true,
|
||||||
BlindName = inDto.BlindName,
|
BlindName = inDto.BlindName,
|
||||||
OrderMark = patchDataStatisticsInfo.OrderMark,
|
OrderMark = patchDataStatisticsInfo.OrderMark,
|
||||||
|
FristAddTaskNum = inDto.VisitTaskNum,
|
||||||
FristAddTaskId = inDto.VisitTaskId,
|
FristAddTaskId = inDto.VisitTaskId,
|
||||||
RowMark = patchDataStatisticsInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
RowMark = patchDataStatisticsInfo.OrderMark + decimal.Parse(item.ToString()).GetLesionMark()
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
//测试项目 可以加入 测试用户 或者内部正式用户
|
//测试项目 可以加入 测试用户 或者内部正式用户
|
||||||
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true || (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun))
|
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true || (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun))
|
||||||
.Where(t => t.IdentityUser.Status == UserStateEnum.Enable && t.IsUserRoleDisabled == false)
|
|
||||||
.Where(t => userTypeEnums.Contains(t.UserTypeEnum))
|
.Where(t => userTypeEnums.Contains(t.UserTypeEnum))
|
||||||
.WhereIf(inQuery.UserTypeEnum != null, t => t.UserTypeEnum == inQuery.UserTypeEnum)
|
.WhereIf(inQuery.UserTypeEnum != null, t => t.UserTypeEnum == inQuery.UserTypeEnum)
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => t.IdentityUser.FullName.Contains(inQuery.UserRealName))
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => t.IdentityUser.FullName.Contains(inQuery.UserRealName))
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
public Guid? FinalSubjectVisitId { get; set; }
|
public Guid? FinalSubjectVisitId { get; set; }
|
||||||
|
|
||||||
public bool IsSubjectQuit { get; set; }
|
public bool IsSubjectQuit { get; set; }
|
||||||
|
|
||||||
public string SuspendReason { get; set; } = string.Empty;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -138,7 +136,7 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public Guid LatestSubmitSubjectVisitId { get; set; }
|
public Guid LatestSubmitSubjectVisitId { get; set; }
|
||||||
|
|
||||||
public string SuspendReason { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1029,8 +1029,6 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public int StudyCount { get; set; }
|
public int StudyCount { get; set; }
|
||||||
|
|
||||||
public string UploadJsonStr { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
public Guid TrialSiteId { get; set; }
|
public Guid TrialSiteId { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -272,10 +272,6 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public string StudyName { get; set; } = string.Empty;
|
public string StudyName { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string BodyPartForEdit { get; set; }
|
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
public List<DicomSeriesDTO> SeriesList { get; set; } = new List<DicomSeriesDTO>();
|
public List<DicomSeriesDTO> SeriesList { get; set; } = new List<DicomSeriesDTO>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -515,10 +515,6 @@ namespace IRaCIS.Core.Application.Services
|
||||||
StudyCode = k.StudyCode,
|
StudyCode = k.StudyCode,
|
||||||
StudyId = k.Id,
|
StudyId = k.Id,
|
||||||
|
|
||||||
BodyPartForEdit=k.BodyPartForEdit,
|
|
||||||
BodyPartForEditOther=k.BodyPartForEditOther
|
|
||||||
|
|
||||||
|
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
var studyIds = dicomStudyList.Select(t => t.StudyId).ToList();
|
var studyIds = dicomStudyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
|
|
@ -722,9 +718,6 @@ namespace IRaCIS.Core.Application.Services
|
||||||
StudyCode = x.StudyCode,
|
StudyCode = x.StudyCode,
|
||||||
IsDicom = false,
|
IsDicom = false,
|
||||||
|
|
||||||
BodyPartForEdit=x.BodyPart,
|
|
||||||
BodyPartForEditOther=x.BodyPartForEditOther
|
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
var isExistTaskNoneDicomFile = _noneDicomStudyFileRepository.Any(t => t.VisitTaskId == indto.VisitTaskId);
|
var isExistTaskNoneDicomFile = _noneDicomStudyFileRepository.Any(t => t.VisitTaskId == indto.VisitTaskId);
|
||||||
|
|
|
||||||
|
|
@ -73,72 +73,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
||||||
{
|
{
|
||||||
public static int IntValue = 100;
|
public static int IntValue = 100;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 重建闭包表
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="_auditDocumentClosureRepository"></param>
|
|
||||||
/// <param name="_auditDocumentRepository"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[AllowAnonymous]
|
|
||||||
public async Task<IResponseOutput> RebuildAuditDocumentClosureAsync([FromServices] IRepository<AuditDocumentClosure> _auditDocumentClosureRepository, [FromServices] IRepository<AuditDocument> _auditDocumentRepository)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
await _auditDocumentClosureRepository.BatchDeleteNoTrackingAsync(t => t.Id != Guid.Empty);
|
|
||||||
|
|
||||||
//过滤版本文件,防止污染闭包表
|
|
||||||
var documents = await _auditDocumentRepository.Where(t => t.MainFileId == null).Select(t => new { t.Id, t.ParentId }).ToListAsync();
|
|
||||||
|
|
||||||
var closures = new List<AuditDocumentClosure>();
|
|
||||||
|
|
||||||
// 建立一个字典,加快查找
|
|
||||||
var lookup = documents.ToDictionary(d => d.Id, d => d.ParentId);
|
|
||||||
|
|
||||||
foreach (var doc in documents)
|
|
||||||
{
|
|
||||||
// 1️ 自己 -> 自己 (depth = 0)
|
|
||||||
closures.Add(new AuditDocumentClosure
|
|
||||||
{
|
|
||||||
AncestorId = doc.Id,
|
|
||||||
DescendantId = doc.Id,
|
|
||||||
Depth = 0
|
|
||||||
});
|
|
||||||
|
|
||||||
// 2️ 递归向上找所有祖先
|
|
||||||
int depth = 1;
|
|
||||||
var currentParentId = doc.ParentId;
|
|
||||||
|
|
||||||
|
|
||||||
//脏数据 parentId==Guid.Empty
|
|
||||||
while (currentParentId.HasValue && currentParentId != Guid.Empty)
|
|
||||||
{
|
|
||||||
closures.Add(new AuditDocumentClosure
|
|
||||||
{
|
|
||||||
AncestorId = currentParentId.Value,
|
|
||||||
DescendantId = doc.Id,
|
|
||||||
Depth = depth
|
|
||||||
});
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
|
|
||||||
// 继续向上查找
|
|
||||||
if (!lookup.TryGetValue(currentParentId.Value, out var nextParent))
|
|
||||||
break;
|
|
||||||
|
|
||||||
currentParentId = nextParent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _auditDocumentClosureRepository.AddRangeAsync(closures);
|
|
||||||
await _auditDocumentClosureRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清理一致性分析任务
|
/// 清理一致性分析任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -438,9 +372,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<IResponseOutput> RestoreDBOSSDate(
|
public async Task<IResponseOutput> RestoreDBOSSDate(
|
||||||
[FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment, [FromServices] IRepository<DicomStudy> _studyRepository)
|
[FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment, [FromServices] IRepository<DicomStudy> _studyRepository)
|
||||||
|
|
|
||||||
|
|
@ -297,11 +297,6 @@ public class VisitTask : BaseFullAuditEntity
|
||||||
[Comment("退回原因")]
|
[Comment("退回原因")]
|
||||||
public string PMBackReason { get; set; }
|
public string PMBackReason { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 是否查看检查部位
|
|
||||||
/// </summary>
|
|
||||||
public bool IsViewStudyPart { get; set; } = false;
|
|
||||||
|
|
||||||
#region 完全随机增加字段
|
#region 完全随机增加字段
|
||||||
|
|
||||||
[Comment("完全随机阅片号")]
|
[Comment("完全随机阅片号")]
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[Table("AuditDocument")]
|
[Table("AuditDocument")]
|
||||||
public class AuditDocument : BaseFullAuditEntity
|
public class AuditDocument : BaseFullAuditEntity
|
||||||
{
|
{
|
||||||
// 0=自己, 1=直接子节点, 2=孙节点...
|
|
||||||
[JsonIgnore]
|
|
||||||
public List<AuditDocumentClosure> AncestorList { get; set; } = new List<AuditDocumentClosure>();
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public List<AuditDocumentClosure> DescendantList { get; set; } = new List<AuditDocumentClosure>();
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public List<AuditDocument> AuditDocumentOldVersionList { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
[ForeignKey(nameof(MainFileId))]
|
|
||||||
public AuditDocument MainAuditDocument { get; set; }
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文件夹名或者文件名
|
/// 文件夹名或者文件名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -92,110 +80,4 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
HistoricalVersion = 2,
|
HistoricalVersion = 2,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 稽查文档闭包表
|
|
||||||
/// </summary>
|
|
||||||
public class AuditDocumentClosure : Entity
|
|
||||||
{
|
|
||||||
[JsonIgnore]
|
|
||||||
|
|
||||||
public AuditDocument Ancestor { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
|
|
||||||
public AuditDocument Descendant { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 父Id
|
|
||||||
/// </summary>
|
|
||||||
[Comment("祖先")]
|
|
||||||
public Guid AncestorId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 子Id
|
|
||||||
/// </summary>
|
|
||||||
[Comment("后代")]
|
|
||||||
public Guid DescendantId { get; set; }
|
|
||||||
public int Depth { get; set; } // 0=自己, 1=直接子节点, 2=孙节点...
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class AuditRecord : BaseFullAuditEntity
|
|
||||||
{
|
|
||||||
[JsonIgnore]
|
|
||||||
public List<AuditRecordIdentityUser> AuditRecordIdentityUserList { get; set; }
|
|
||||||
|
|
||||||
public string CompanyName { get; set; }
|
|
||||||
|
|
||||||
public string AuditContent { get; set; }
|
|
||||||
|
|
||||||
[Comment("稽查日期")]
|
|
||||||
public DateOnly AuditTime { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public DateTime? BeginTime { get; set; }
|
|
||||||
|
|
||||||
public DateTime? EndTime { get; set; }
|
|
||||||
|
|
||||||
[Comment("稽查状态")]
|
|
||||||
public AuditState AuditState { get; set; }
|
|
||||||
|
|
||||||
[Comment("稽查形式")]
|
|
||||||
public AuditType AuditType { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class AuditRecordIdentityUser : BaseAddAuditEntity
|
|
||||||
{
|
|
||||||
[JsonIgnore]
|
|
||||||
public IdentityUser IdentityUser { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public AuditRecord AuditRecord { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Guid IdentityUserId { get; set; }
|
|
||||||
|
|
||||||
public Guid AuditRecordId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class AuditRecordPermission : BaseAddAuditEntity
|
|
||||||
{
|
|
||||||
[JsonIgnore]
|
|
||||||
public AuditRecord AuditRecord { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public AuditDocument AuditDocument { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public Guid AuditRecordId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public Guid AuditDocumentId { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public enum AuditState
|
|
||||||
{
|
|
||||||
NotStart = 0,
|
|
||||||
|
|
||||||
Ongoing = 1,
|
|
||||||
|
|
||||||
End = 2
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum AuditType
|
|
||||||
{
|
|
||||||
None = 0,
|
|
||||||
|
|
||||||
Online = 1,
|
|
||||||
|
|
||||||
OnSite = 2
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,6 @@ public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
|
|
||||||
public string BodyPartForEdit { get; set; } = null!;
|
public string BodyPartForEdit { get; set; } = null!;
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
public int Code { get; set; }
|
public int Code { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,5 @@ public class NoneDicomStudy : BaseFullDeleteAuditEntity
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public string ModifyReason { get; set; }
|
public string ModifyReason { get; set; }
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Domain.Models;
|
namespace IRaCIS.Core.Domain.Models;
|
||||||
|
|
||||||
[Comment("项目中心 - 影像推送记录")]
|
[Comment("项目中心 - 影像推送记录")]
|
||||||
|
|
@ -23,36 +21,4 @@ public class SCPImageUpload : BaseAddAuditEntity
|
||||||
public int StudyCount { get; set; }
|
public int StudyCount { get; set; }
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
public Guid TrialSiteId { get; set; }
|
public Guid TrialSiteId { get; set; }
|
||||||
|
|
||||||
[MaxLength]
|
|
||||||
public string UploadJsonStr { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SCPImageLog
|
|
||||||
{
|
|
||||||
////当前传输 检查患者名字,一个检查可能患者名字不同 记录去重的,然后,拼接
|
|
||||||
//public string PatientNames => string.Join(",", UploadList.SelectMany(t => t.PatientNameList).ToList());
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 归档到数据库的检查Id
|
|
||||||
/// </summary>
|
|
||||||
public List<Guid> SCPStudyIdList => UploadList.Select(t => t.SCPStudyId).ToList();
|
|
||||||
|
|
||||||
|
|
||||||
public List<ImageUploadInfo> UploadList { get; set; } = new List<ImageUploadInfo>();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ImageUploadInfo
|
|
||||||
{
|
|
||||||
public List<string> PatientNameList { get; set; } = new List<string>();
|
|
||||||
|
|
||||||
public Guid SCPStudyId { get; set; }
|
|
||||||
|
|
||||||
public string StudyInstanceUid { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public int FailedImageCount { get; set; }
|
|
||||||
|
|
||||||
public int SuccessImageCount { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
@ -40,20 +40,4 @@ public class SCPInstance : BaseFullAuditEntity, IEntitySeqId
|
||||||
public string Path { get; set; } = string.Empty;
|
public string Path { get; set; } = string.Empty;
|
||||||
|
|
||||||
public long? FileSize { get; set; }
|
public long? FileSize { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region DIR 增加
|
|
||||||
|
|
||||||
public string SOPClassUID { get; set; }
|
|
||||||
|
|
||||||
public string MediaStorageSOPClassUID { get; set; }
|
|
||||||
|
|
||||||
public string TransferSytaxUID { get; set; }
|
|
||||||
|
|
||||||
public string MediaStorageSOPInstanceUID { get; set; }
|
|
||||||
|
|
||||||
public bool IsEncapsulated { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,11 +39,4 @@ public class SCPSeries : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
[StringLength(1000)]
|
[StringLength(1000)]
|
||||||
public string ImageResizePath { get; set; } = string.Empty;
|
public string ImageResizePath { get; set; } = string.Empty;
|
||||||
|
|
||||||
#region DIR 增加
|
|
||||||
|
|
||||||
public string DicomSeriesDate { get; set; }
|
|
||||||
|
|
||||||
public string DicomSeriesTime { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,18 +64,4 @@ public class SCPStudy : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
public Guid TrialSiteId { get; set; }
|
public Guid TrialSiteId { get; set; }
|
||||||
|
|
||||||
public Guid? SubjectVisitId { get; set; }
|
public Guid? SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
|
|
||||||
#region DIR 增加字段
|
|
||||||
|
|
||||||
public string DicomStudyDate { get; set; }
|
|
||||||
|
|
||||||
public string DicomStudyTime { get; set; }
|
|
||||||
|
|
||||||
public string StudyDIRPath { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,19 +46,4 @@ public class TaskInstance : BaseFullAuditEntity, IEntitySeqId
|
||||||
|
|
||||||
public long? FileSize { get; set; }
|
public long? FileSize { get; set; }
|
||||||
|
|
||||||
|
|
||||||
#region DIR 增加
|
|
||||||
|
|
||||||
public string SOPClassUID { get; set; }
|
|
||||||
|
|
||||||
public string MediaStorageSOPClassUID { get; set; }
|
|
||||||
|
|
||||||
public string TransferSytaxUID { get; set; }
|
|
||||||
|
|
||||||
public string MediaStorageSOPInstanceUID { get; set; }
|
|
||||||
|
|
||||||
public bool IsEncapsulated { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,12 +41,4 @@ public class TaskSeries : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
[StringLength(1000)]
|
[StringLength(1000)]
|
||||||
public string ImageResizePath { get; set; } = string.Empty;
|
public string ImageResizePath { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
#region DIR 增加
|
|
||||||
|
|
||||||
public string DicomSeriesDate { get; set; }
|
|
||||||
|
|
||||||
public string DicomSeriesTime { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,17 +54,4 @@ public class TaskStudy : BaseFullDeleteAuditEntity, IEntitySeqId
|
||||||
public string BodyPartForEdit { get; set; } = string.Empty;
|
public string BodyPartForEdit { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string ModalityForEdit { get; set; } = string.Empty;
|
public string ModalityForEdit { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public string BodyPartForEditOther { get; set; }
|
|
||||||
#region DIR 增加字段
|
|
||||||
|
|
||||||
public string DicomStudyDate { get; set; }
|
|
||||||
|
|
||||||
public string DicomStudyTime { get; set; }
|
|
||||||
|
|
||||||
public string StudyDIRPath { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,6 @@ public class IdentityUser : BaseFullAuditEntity
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<TrialIdentityUser> UserTrialList { get; set; }
|
public List<TrialIdentityUser> UserTrialList { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
|
|
||||||
public List<AuditRecordIdentityUser> AuditRecordList { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<UserRole> UserRoleList { get; set; } = new List<UserRole>();
|
public List<UserRole> UserRoleList { get; set; } = new List<UserRole>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,12 @@ public class ReadingTableAnswerRowInfo : BaseFullDeleteAuditEntity
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("InstanceId")]
|
[ForeignKey("InstanceId")]
|
||||||
public DicomInstance Instance { get; set; }
|
public DicomInstance Instance { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
[ForeignKey("OrganInfoId")]
|
|
||||||
public OrganInfo OrganInfo { get; set; }
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("VisitTaskId")]
|
[ForeignKey("VisitTaskId")]
|
||||||
public VisitTask VisitTask { get; set; }
|
public VisitTask VisitTask { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("FristAddTaskId")]
|
[ForeignKey("OrganInfoId")]
|
||||||
public VisitTask FristAddTask { get; set; }
|
public OrganInfo OrganInfo { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("SplitRowId")]
|
[ForeignKey("SplitRowId")]
|
||||||
public ReadingTableAnswerRowInfo SplitRow { get; set; }
|
public ReadingTableAnswerRowInfo SplitRow { get; set; }
|
||||||
|
|
@ -83,6 +76,9 @@ public class ReadingTableAnswerRowInfo : BaseFullDeleteAuditEntity
|
||||||
[StringLength(1000)]
|
[StringLength(1000)]
|
||||||
public string PicturePath { get; set; } = string.Empty;
|
public string PicturePath { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Comment("第一次添加的任务ID")]
|
||||||
|
public decimal FristAddTaskNum { get; set; } = 0;
|
||||||
|
|
||||||
[Comment("首次添加任务ID")]
|
[Comment("首次添加任务ID")]
|
||||||
public Guid FristAddTaskId { get; set; }
|
public Guid FristAddTaskId { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,4 @@ public class Subject : BaseFullDeleteAuditEntity
|
||||||
|
|
||||||
[Comment("受试者退出")]
|
[Comment("受试者退出")]
|
||||||
public bool IsSubjectQuit { get; set; }
|
public bool IsSubjectQuit { get; set; }
|
||||||
|
|
||||||
[Comment("访视中止原因")]
|
|
||||||
public string SuspendReason { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
using IRaCIS.Core.Infrastructure.Encryption;
|
using IRaCIS.Core.Infrastructure.Encryption;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
|
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
@ -59,9 +58,6 @@ public class IRaCISDBContext : DbContext
|
||||||
//configurationBuilder.Conventions.Add(_ => new DecimalPrecisionConvention(18,2));
|
//configurationBuilder.Conventions.Add(_ => new DecimalPrecisionConvention(18,2));
|
||||||
//针对字符串使用默认的长度配置为200,如果标注了StringLength 其他长度,就是标注的长度,如果标注了MaxLength 那么就是nvarcharMax
|
//针对字符串使用默认的长度配置为200,如果标注了StringLength 其他长度,就是标注的长度,如果标注了MaxLength 那么就是nvarcharMax
|
||||||
configurationBuilder.Conventions.Add(_ => new DefaultStringLengthConvention(400));
|
configurationBuilder.Conventions.Add(_ => new DefaultStringLengthConvention(400));
|
||||||
|
|
||||||
//https://learn.microsoft.com/zh-cn/ef/core/modeling/relationships/conventions?utm_source=chatgpt.com
|
|
||||||
//configurationBuilder.Conventions.Remove(typeof(ForeignKeyIndexConvention));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
|
@ -674,14 +670,6 @@ public class IRaCISDBContext : DbContext
|
||||||
|
|
||||||
public virtual DbSet<SubjectVisitImageBackRecord> SubjectVisitImageBackRecord { get; set; }
|
public virtual DbSet<SubjectVisitImageBackRecord> SubjectVisitImageBackRecord { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public virtual DbSet<AuditRecord> AuditRecord { get; set; }
|
|
||||||
public virtual DbSet<AuditRecordIdentityUser> AuditRecordIdentityUser { get; set; }
|
|
||||||
public virtual DbSet<AuditRecordPermission> AuditRecordPermission { get; set; }
|
|
||||||
|
|
||||||
public virtual DbSet<AuditDocumentClosure> AuditDocumentClosure { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TestLength : Entity
|
public class TestLength : Entity
|
||||||
|
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
using IRaCIS.Core.Domain.Models;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
||||||
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
|
||||||
{
|
|
||||||
public class AuditDocumentConfigration : IEntityTypeConfiguration<AuditDocument>
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
public void Configure(EntityTypeBuilder<AuditDocument> builder)
|
|
||||||
{
|
|
||||||
|
|
||||||
builder.HasMany(r => r.AncestorList).WithOne(t => t.Descendant).HasForeignKey(f => f.DescendantId);
|
|
||||||
|
|
||||||
builder.HasMany(r => r.DescendantList).WithOne(t => t.Ancestor).HasForeignKey(f => f.AncestorId);
|
|
||||||
|
|
||||||
|
|
||||||
builder.HasMany(r => r.AuditDocumentOldVersionList).WithOne(t => t.MainAuditDocument).HasForeignKey(f => f.MainFileId);
|
|
||||||
|
|
||||||
|
|
||||||
// builder.HasOne(r => r.WordFileRecord)
|
|
||||||
//.WithOne(t => t.WordFileRecord)
|
|
||||||
//.HasForeignKey<TrialFile>(t => t.WordFileRecordId)
|
|
||||||
//.OnDelete(DeleteBehavior.Cascade);
|
|
||||||
// builder.HasOne(r => r.PDFFileRecord).WithOne().HasForeignKey<TrialFile>(f => f.TrialFileTypeId);
|
|
||||||
|
|
||||||
// builder.HasOne(r => r.WordFileRecord).WithOne().HasForeignKey<TrialFile>(f => f.TrialFileTypeId);
|
|
||||||
|
|
||||||
// builder.HasOne(r => r.SignFileRecord).WithOne().HasForeignKey<TrialFile>(f => f.TrialFileTypeId);
|
|
||||||
|
|
||||||
// builder.HasOne(r => r.HistoryFileRecord).WithOne().HasForeignKey<TrialFile>(f => f.TrialFileTypeId);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -23,10 +23,6 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
||||||
//subject 删除了,但是任务没删除,导致的查询问题
|
//subject 删除了,但是任务没删除,导致的查询问题
|
||||||
builder.HasQueryFilter(b => b.Subject.IsDeleted == false);
|
builder.HasQueryFilter(b => b.Subject.IsDeleted == false);
|
||||||
|
|
||||||
|
|
||||||
builder.HasMany(t => t.LesionList).WithOne(s => s.VisitTask).HasForeignKey(t => t.VisitTaskId);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class ReadingQuestionTrialConfigration : IEntityTypeConfiguration<ReadingQuestionTrial>
|
public class ReadingQuestionTrialConfigration : IEntityTypeConfiguration<ReadingQuestionTrial>
|
||||||
|
|
@ -39,6 +35,4 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,12 +31,12 @@
|
||||||
<PackageReference Include="Hangfire.Core" Version="1.8.18" />
|
<PackageReference Include="Hangfire.Core" Version="1.8.18" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="8.0.10" />
|
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="8.0.10" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.19" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.15" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.19">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.15">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.19">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.10">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,32 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class FristAddTaskNum : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "FristAddTaskNum",
|
|
||||||
table: "ReadingTableAnswerRowInfo");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<decimal>(
|
|
||||||
name: "FristAddTaskNum",
|
|
||||||
table: "ReadingTableAnswerRowInfo",
|
|
||||||
type: "decimal(18,2)",
|
|
||||||
precision: 18,
|
|
||||||
scale: 2,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: 0m,
|
|
||||||
comment: "第一次添加的任务ID");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,39 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class FristAddTaskNum1 : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_ReadingTableAnswerRowInfo_FristAddTaskId",
|
|
||||||
table: "ReadingTableAnswerRowInfo",
|
|
||||||
column: "FristAddTaskId");
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_ReadingTableAnswerRowInfo_VisitTask_FristAddTaskId",
|
|
||||||
table: "ReadingTableAnswerRowInfo",
|
|
||||||
column: "FristAddTaskId",
|
|
||||||
principalTable: "VisitTask",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_ReadingTableAnswerRowInfo_VisitTask_FristAddTaskId",
|
|
||||||
table: "ReadingTableAnswerRowInfo");
|
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
|
||||||
name: "IX_ReadingTableAnswerRowInfo_FristAddTaskId",
|
|
||||||
table: "ReadingTableAnswerRowInfo");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,31 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class addSubjectReson : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "SuspendReason",
|
|
||||||
table: "Subject",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "",
|
|
||||||
comment: "访视中止原因");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "SuspendReason",
|
|
||||||
table: "Subject");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,42 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class studyAddBodyPart : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "NoneDicomStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "DicomStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "NoneDicomStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "DicomStudy");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,29 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class ViewStudyPart : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<bool>(
|
|
||||||
name: "IsViewStudyPart",
|
|
||||||
table: "VisitTask",
|
|
||||||
type: "bit",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "IsViewStudyPart",
|
|
||||||
table: "VisitTask");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,291 +0,0 @@
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class ImageModify : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "TaskStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomStudyDate",
|
|
||||||
table: "TaskStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomStudyTime",
|
|
||||||
table: "TaskStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "StudyDIRPath",
|
|
||||||
table: "TaskStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomSeriesDate",
|
|
||||||
table: "TaskSeries",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomSeriesTime",
|
|
||||||
table: "TaskSeries",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<bool>(
|
|
||||||
name: "IsEncapsulated",
|
|
||||||
table: "TaskInstance",
|
|
||||||
type: "bit",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: false);
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "MediaStorageSOPClassUID",
|
|
||||||
table: "TaskInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "MediaStorageSOPInstanceUID",
|
|
||||||
table: "TaskInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "SOPClassUID",
|
|
||||||
table: "TaskInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "TransferSytaxUID",
|
|
||||||
table: "TaskInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "SCPStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomStudyDate",
|
|
||||||
table: "SCPStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomStudyTime",
|
|
||||||
table: "SCPStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "StudyDIRPath",
|
|
||||||
table: "SCPStudy",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomSeriesDate",
|
|
||||||
table: "SCPSeries",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "DicomSeriesTime",
|
|
||||||
table: "SCPSeries",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<bool>(
|
|
||||||
name: "IsEncapsulated",
|
|
||||||
table: "SCPInstance",
|
|
||||||
type: "bit",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: false);
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "MediaStorageSOPClassUID",
|
|
||||||
table: "SCPInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "MediaStorageSOPInstanceUID",
|
|
||||||
table: "SCPInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "SOPClassUID",
|
|
||||||
table: "SCPInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "TransferSytaxUID",
|
|
||||||
table: "SCPInstance",
|
|
||||||
type: "nvarchar(400)",
|
|
||||||
maxLength: 400,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "UploadJsonStr",
|
|
||||||
table: "SCPImageUpload",
|
|
||||||
type: "nvarchar(max)",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "TaskStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomStudyDate",
|
|
||||||
table: "TaskStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomStudyTime",
|
|
||||||
table: "TaskStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "StudyDIRPath",
|
|
||||||
table: "TaskStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomSeriesDate",
|
|
||||||
table: "TaskSeries");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomSeriesTime",
|
|
||||||
table: "TaskSeries");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "IsEncapsulated",
|
|
||||||
table: "TaskInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "MediaStorageSOPClassUID",
|
|
||||||
table: "TaskInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "MediaStorageSOPInstanceUID",
|
|
||||||
table: "TaskInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "SOPClassUID",
|
|
||||||
table: "TaskInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "TransferSytaxUID",
|
|
||||||
table: "TaskInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "BodyPartForEditOther",
|
|
||||||
table: "SCPStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomStudyDate",
|
|
||||||
table: "SCPStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomStudyTime",
|
|
||||||
table: "SCPStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "StudyDIRPath",
|
|
||||||
table: "SCPStudy");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomSeriesDate",
|
|
||||||
table: "SCPSeries");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "DicomSeriesTime",
|
|
||||||
table: "SCPSeries");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "IsEncapsulated",
|
|
||||||
table: "SCPInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "MediaStorageSOPClassUID",
|
|
||||||
table: "SCPInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "MediaStorageSOPInstanceUID",
|
|
||||||
table: "SCPInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "SOPClassUID",
|
|
||||||
table: "SCPInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "TransferSytaxUID",
|
|
||||||
table: "SCPInstance");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "UploadJsonStr",
|
|
||||||
table: "SCPImageUpload");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,157 +0,0 @@
|
||||||
using System;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class auditRecord : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "AuditRecord",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CompanyName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
|
|
||||||
AuditContent = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
|
|
||||||
AuditTime = table.Column<DateOnly>(type: "date", nullable: false, comment: "稽查日期"),
|
|
||||||
BeginTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
||||||
EndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
||||||
AuditState = table.Column<int>(type: "int", nullable: false, comment: "稽查状态"),
|
|
||||||
AuditType = table.Column<int>(type: "int", nullable: false, comment: "稽查形式"),
|
|
||||||
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
||||||
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_AuditRecord", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecord_User_CreateUserId",
|
|
||||||
column: x => x.CreateUserId,
|
|
||||||
principalTable: "User",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "AuditRecordIdentityUser",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
IdentityUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
AuditRecordId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_AuditRecordIdentityUser", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordIdentityUser_AuditRecord_AuditRecordId",
|
|
||||||
column: x => x.AuditRecordId,
|
|
||||||
principalTable: "AuditRecord",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordIdentityUser_IdentityUser_IdentityUserId",
|
|
||||||
column: x => x.IdentityUserId,
|
|
||||||
principalTable: "IdentityUser",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordIdentityUser_User_CreateUserId",
|
|
||||||
column: x => x.CreateUserId,
|
|
||||||
principalTable: "User",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "AuditRecordPermission",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
AuditRecordId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
AuditDocumentId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_AuditRecordPermission", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordPermission_AuditDocument_AuditDocumentId",
|
|
||||||
column: x => x.AuditDocumentId,
|
|
||||||
principalTable: "AuditDocument",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordPermission_AuditRecord_AuditRecordId",
|
|
||||||
column: x => x.AuditRecordId,
|
|
||||||
principalTable: "AuditRecord",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditRecordPermission_User_CreateUserId",
|
|
||||||
column: x => x.CreateUserId,
|
|
||||||
principalTable: "User",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecord_CreateUserId",
|
|
||||||
table: "AuditRecord",
|
|
||||||
column: "CreateUserId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordIdentityUser_AuditRecordId",
|
|
||||||
table: "AuditRecordIdentityUser",
|
|
||||||
column: "AuditRecordId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordIdentityUser_CreateUserId",
|
|
||||||
table: "AuditRecordIdentityUser",
|
|
||||||
column: "CreateUserId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordIdentityUser_IdentityUserId",
|
|
||||||
table: "AuditRecordIdentityUser",
|
|
||||||
column: "IdentityUserId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordPermission_AuditDocumentId",
|
|
||||||
table: "AuditRecordPermission",
|
|
||||||
column: "AuditDocumentId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordPermission_AuditRecordId",
|
|
||||||
table: "AuditRecordPermission",
|
|
||||||
column: "AuditRecordId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditRecordPermission_CreateUserId",
|
|
||||||
table: "AuditRecordPermission",
|
|
||||||
column: "CreateUserId");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "AuditRecordIdentityUser");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "AuditRecordPermission");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "AuditRecord");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,78 +0,0 @@
|
||||||
using System;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class modifyAudictDoc : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "AuditDocumentClosure",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
||||||
AncestorId = table.Column<Guid>(type: "uniqueidentifier", nullable: false, comment: "祖先"),
|
|
||||||
DescendantId = table.Column<Guid>(type: "uniqueidentifier", nullable: false, comment: "后代"),
|
|
||||||
Depth = table.Column<int>(type: "int", nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_AuditDocumentClosure", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditDocumentClosure_AuditDocument_AncestorId",
|
|
||||||
column: x => x.AncestorId,
|
|
||||||
principalTable: "AuditDocument",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_AuditDocumentClosure_AuditDocument_DescendantId",
|
|
||||||
column: x => x.DescendantId,
|
|
||||||
principalTable: "AuditDocument",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditDocument_MainFileId",
|
|
||||||
table: "AuditDocument",
|
|
||||||
column: "MainFileId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditDocumentClosure_AncestorId",
|
|
||||||
table: "AuditDocumentClosure",
|
|
||||||
column: "AncestorId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_AuditDocumentClosure_DescendantId",
|
|
||||||
table: "AuditDocumentClosure",
|
|
||||||
column: "DescendantId");
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_AuditDocument_AuditDocument_MainFileId",
|
|
||||||
table: "AuditDocument",
|
|
||||||
column: "MainFileId",
|
|
||||||
principalTable: "AuditDocument",
|
|
||||||
principalColumn: "Id");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_AuditDocument_AuditDocument_MainFileId",
|
|
||||||
table: "AuditDocument");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "AuditDocumentClosure");
|
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
|
||||||
name: "IX_AuditDocument_MainFileId",
|
|
||||||
table: "AuditDocument");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "8.0.19")
|
.HasAnnotation("ProductVersion", "8.0.15")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||||
|
|
||||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||||
|
|
@ -149,147 +149,12 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
b.HasIndex("CreateUserId");
|
||||||
|
|
||||||
b.HasIndex("MainFileId");
|
|
||||||
|
|
||||||
b.ToTable("AuditDocument", t =>
|
b.ToTable("AuditDocument", t =>
|
||||||
{
|
{
|
||||||
t.HasComment("稽查文档管理");
|
t.HasComment("稽查文档管理");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocumentClosure", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<Guid>("AncestorId")
|
|
||||||
.HasColumnType("uniqueidentifier")
|
|
||||||
.HasComment("祖先");
|
|
||||||
|
|
||||||
b.Property<int>("Depth")
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
b.Property<Guid>("DescendantId")
|
|
||||||
.HasColumnType("uniqueidentifier")
|
|
||||||
.HasComment("后代");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("AncestorId");
|
|
||||||
|
|
||||||
b.HasIndex("DescendantId");
|
|
||||||
|
|
||||||
b.ToTable("AuditDocumentClosure");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecord", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<string>("AuditContent")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("AuditState")
|
|
||||||
.HasColumnType("int")
|
|
||||||
.HasComment("稽查状态");
|
|
||||||
|
|
||||||
b.Property<DateOnly>("AuditTime")
|
|
||||||
.HasColumnType("date")
|
|
||||||
.HasComment("稽查日期");
|
|
||||||
|
|
||||||
b.Property<int>("AuditType")
|
|
||||||
.HasColumnType("int")
|
|
||||||
.HasComment("稽查形式");
|
|
||||||
|
|
||||||
b.Property<DateTime?>("BeginTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<string>("CompanyName")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreateTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreateUserId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<DateTime?>("EndTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<DateTime>("UpdateTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<Guid>("UpdateUserId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
|
||||||
|
|
||||||
b.ToTable("AuditRecord");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordIdentityUser", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<Guid>("AuditRecordId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreateTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreateUserId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<Guid>("IdentityUserId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("AuditRecordId");
|
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
|
||||||
|
|
||||||
b.HasIndex("IdentityUserId");
|
|
||||||
|
|
||||||
b.ToTable("AuditRecordIdentityUser");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordPermission", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<Guid>("AuditDocumentId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<Guid>("AuditRecordId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreateTime")
|
|
||||||
.HasColumnType("datetime2");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreateUserId")
|
|
||||||
.HasColumnType("uniqueidentifier");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("AuditDocumentId");
|
|
||||||
|
|
||||||
b.HasIndex("AuditRecordId");
|
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
|
||||||
|
|
||||||
b.ToTable("AuditRecordPermission");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
|
|
@ -1365,11 +1230,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("BodyPartForEditOther")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("Code")
|
b.Property<int>("Code")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -3402,11 +3262,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("BodyPartForEditOther")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("Code")
|
b.Property<int>("Code")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -6786,6 +6641,11 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasColumnType("uniqueidentifier")
|
.HasColumnType("uniqueidentifier")
|
||||||
.HasComment("首次添加任务ID");
|
.HasComment("首次添加任务ID");
|
||||||
|
|
||||||
|
b.Property<decimal>("FristAddTaskNum")
|
||||||
|
.HasPrecision(18, 2)
|
||||||
|
.HasColumnType("decimal(18,2)")
|
||||||
|
.HasComment("第一次添加的任务ID");
|
||||||
|
|
||||||
b.Property<string>("FromMark")
|
b.Property<string>("FromMark")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
|
|
@ -6926,8 +6786,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
b.HasIndex("CreateUserId");
|
||||||
|
|
||||||
b.HasIndex("FristAddTaskId");
|
|
||||||
|
|
||||||
b.HasIndex("InstanceId");
|
b.HasIndex("InstanceId");
|
||||||
|
|
||||||
b.HasIndex("MergeRowId");
|
b.HasIndex("MergeRowId");
|
||||||
|
|
@ -7861,10 +7719,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<Guid>("TrialSiteId")
|
b.Property<Guid>("TrialSiteId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
b.Property<string>("UploadJsonStr")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
|
||||||
b.HasIndex("CreateUserId");
|
b.HasIndex("CreateUserId");
|
||||||
|
|
@ -7925,19 +7779,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<DateTime?>("InstanceTime")
|
b.Property<DateTime?>("InstanceTime")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<bool>("IsEncapsulated")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("MediaStorageSOPClassUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("MediaStorageSOPInstanceUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("NumberOfFrames")
|
b.Property<int>("NumberOfFrames")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -7951,11 +7792,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("SOPClassUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("SeriesId")
|
b.Property<Guid>("SeriesId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -7985,11 +7821,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("TransferSytaxUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("UpdateTime")
|
b.Property<DateTime>("UpdateTime")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
|
@ -8139,16 +7970,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("DicomSeriesDate")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("DicomSeriesTime")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -8271,11 +8092,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("BodyPartForEditOther")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("CalledAE")
|
b.Property<string>("CalledAE")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
|
|
@ -8303,16 +8119,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("DicomStudyDate")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("DicomStudyTime")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -8371,11 +8177,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<int>("SeriesCount")
|
b.Property<int>("SeriesCount")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<string>("StudyDIRPath")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("StudyId")
|
b.Property<string>("StudyId")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
|
|
@ -8827,12 +8628,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasColumnType("int")
|
.HasColumnType("int")
|
||||||
.HasComment("1 访视中,2 出组 3 访视结束");
|
.HasComment("1 访视中,2 出组 3 访视结束");
|
||||||
|
|
||||||
b.Property<string>("SuspendReason")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)")
|
|
||||||
.HasComment("访视中止原因");
|
|
||||||
|
|
||||||
b.Property<Guid>("TrialId")
|
b.Property<Guid>("TrialId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -10501,19 +10296,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<DateTime?>("InstanceTime")
|
b.Property<DateTime?>("InstanceTime")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<bool>("IsEncapsulated")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("MediaStorageSOPClassUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("MediaStorageSOPInstanceUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("NumberOfFrames")
|
b.Property<int>("NumberOfFrames")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -10527,11 +10309,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("SOPClassUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("SeriesId")
|
b.Property<Guid>("SeriesId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -10564,11 +10341,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<Guid>("SubjectId")
|
b.Property<Guid>("SubjectId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
b.Property<string>("TransferSytaxUID")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("TrialId")
|
b.Property<Guid>("TrialId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -10840,16 +10612,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("DicomSeriesDate")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("DicomSeriesTime")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -10981,11 +10743,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("BodyPartForEditOther")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<int>("Code")
|
b.Property<int>("Code")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
|
@ -11006,16 +10763,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("DicomStudyDate")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("DicomStudyTime")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
|
@ -11073,11 +10820,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<string>("StudyDIRPath")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(400)
|
|
||||||
.HasColumnType("nvarchar(400)");
|
|
||||||
|
|
||||||
b.Property<string>("StudyId")
|
b.Property<string>("StudyId")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
|
|
@ -14974,9 +14716,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Property<bool>("IsUrgent")
|
b.Property<bool>("IsUrgent")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
b.Property<bool>("IsViewStudyPart")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("JudgeResultImagePath")
|
b.Property<string>("JudgeResultImagePath")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(1000)
|
.HasMaxLength(1000)
|
||||||
|
|
@ -15396,96 +15135,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditDocument", "MainAuditDocument")
|
|
||||||
.WithMany("AuditDocumentOldVersionList")
|
|
||||||
.HasForeignKey("MainFileId");
|
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
|
||||||
|
|
||||||
b.Navigation("MainAuditDocument");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocumentClosure", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditDocument", "Ancestor")
|
|
||||||
.WithMany("DescendantList")
|
|
||||||
.HasForeignKey("AncestorId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditDocument", "Descendant")
|
|
||||||
.WithMany("AncestorList")
|
|
||||||
.HasForeignKey("DescendantId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("Ancestor");
|
|
||||||
|
|
||||||
b.Navigation("Descendant");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecord", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreateUserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordIdentityUser", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditRecord", "AuditRecord")
|
|
||||||
.WithMany("AuditRecordIdentityUserList")
|
|
||||||
.HasForeignKey("AuditRecordId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreateUserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.IdentityUser", "IdentityUser")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("IdentityUserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("AuditRecord");
|
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
|
||||||
|
|
||||||
b.Navigation("IdentityUser");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordPermission", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditDocument", "AuditDocument")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("AuditDocumentId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.AuditRecord", "AuditRecord")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("AuditRecordId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreateUserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("AuditDocument");
|
|
||||||
|
|
||||||
b.Navigation("AuditRecord");
|
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -17138,12 +16787,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.VisitTask", "FristAddTask")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("FristAddTaskId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.DicomInstance", "Instance")
|
b.HasOne("IRaCIS.Core.Domain.Models.DicomInstance", "Instance")
|
||||||
.WithMany("ReadingTableAnswerRowInfoList")
|
.WithMany("ReadingTableAnswerRowInfoList")
|
||||||
.HasForeignKey("InstanceId")
|
.HasForeignKey("InstanceId")
|
||||||
|
|
@ -17175,8 +16818,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
|
|
||||||
b.Navigation("FristAddTask");
|
|
||||||
|
|
||||||
b.Navigation("Instance");
|
b.Navigation("Instance");
|
||||||
|
|
||||||
b.Navigation("MergeRow");
|
b.Navigation("MergeRow");
|
||||||
|
|
@ -19854,20 +19495,6 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocument", b =>
|
|
||||||
{
|
|
||||||
b.Navigation("AncestorList");
|
|
||||||
|
|
||||||
b.Navigation("AuditDocumentOldVersionList");
|
|
||||||
|
|
||||||
b.Navigation("DescendantList");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecord", b =>
|
|
||||||
{
|
|
||||||
b.Navigation("AuditRecordIdentityUserList");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalDataTrialSet", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalDataTrialSet", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("ReadingClinicalDataList");
|
b.Navigation("ReadingClinicalDataList");
|
||||||
|
|
|
||||||
|
|
@ -185,15 +185,5 @@ namespace IRaCIS.Core.Infrastructure.Extention
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<List<T>> SortToListAsync<T>(this IQueryable<T> source, string[] sortArray = default, CancellationToken cancellationToken = default)
|
|
||||||
{
|
|
||||||
var sortString = string.Join(',', sortArray);
|
|
||||||
|
|
||||||
source = source.OrderBy(sortString);
|
|
||||||
|
|
||||||
return await source.ToListAsync(cancellationToken);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,10 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Fluid.Core" Version="2.21.0" />
|
<PackageReference Include="Fluid.Core" Version="2.21.0" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.19" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.15" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="8.0.19" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="8.0.15" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.11" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.11" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.19">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.15">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue