Merge branch 'Test.IRC' of http://192.168.3.69:2000/XCKJ/irc-netcore-api into Test.IRC
commit
53c56f5c0a
|
@ -36,7 +36,7 @@
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Staging"
|
"ASPNETCORE_ENVIRONMENT": "Staging"
|
||||||
},
|
},
|
||||||
"applicationUrl": "http://localhost:6200"
|
"applicationUrl": "http://localhost:6100"
|
||||||
},
|
},
|
||||||
"IRaCIS.Production": {
|
"IRaCIS.Production": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
|
|
|
@ -179,6 +179,7 @@ namespace IRaCIS.Core.API
|
||||||
//不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication.
|
//不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication.
|
||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
|
|
||||||
|
app.UseMiddleware<MultiDiskStaticFilesMiddleware>();
|
||||||
|
|
||||||
//LogDashboard
|
//LogDashboard
|
||||||
app.UseLogDashboard("/LogDashboard");
|
app.UseLogDashboard("/LogDashboard");
|
||||||
|
@ -186,8 +187,7 @@ namespace IRaCIS.Core.API
|
||||||
//hangfire
|
//hangfire
|
||||||
app.UseHangfireConfig(env);
|
app.UseHangfireConfig(env);
|
||||||
|
|
||||||
////暂时废弃
|
|
||||||
//app.UseHttpReports();
|
|
||||||
|
|
||||||
////限流 中间件
|
////限流 中间件
|
||||||
//app.UseIpRateLimiting();
|
//app.UseIpRateLimiting();
|
||||||
|
@ -204,7 +204,6 @@ namespace IRaCIS.Core.API
|
||||||
}
|
}
|
||||||
Console.WriteLine("当前环境: " + env.EnvironmentName);
|
Console.WriteLine("当前环境: " + env.EnvironmentName);
|
||||||
|
|
||||||
//app.UseMiddleware<AuthMiddleware>();
|
|
||||||
|
|
||||||
// 特殊异常处理 比如 404
|
// 特殊异常处理 比如 404
|
||||||
app.UseStatusCodePagesWithReExecute("/Error/{0}");
|
app.UseStatusCodePagesWithReExecute("/Error/{0}");
|
||||||
|
@ -221,15 +220,13 @@ namespace IRaCIS.Core.API
|
||||||
app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
|
app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
|
||||||
|
|
||||||
//app.UseIRacisHostStaticFileStore(env);
|
//app.UseIRacisHostStaticFileStore(env);
|
||||||
app.UseMiddleware<MultiDiskStaticFilesMiddleware>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
//app.UseJwtBearerQueryString();
|
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
////文件伺服 必须带Token 访问
|
|
||||||
////app.UseIRacisHostStaticFileStore(env);
|
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
app.UseEndpoints(endpoints =>
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
using IRaCIS.Core.Application.Helper;
|
using Azure;
|
||||||
|
using IRaCIS.Core.Application.Helper;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.StaticFiles;
|
using Microsoft.AspNetCore.StaticFiles;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.FileProviders.Physical;
|
using Microsoft.Extensions.FileProviders.Physical;
|
||||||
|
@ -11,6 +14,7 @@ using Microsoft.Extensions.Hosting.Internal;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.VisualBasic;
|
using Microsoft.VisualBasic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using SharpCompress.Common;
|
using SharpCompress.Common;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -147,6 +151,12 @@ namespace IRaCIS.Core.API
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 如果没有找到文件,返回404
|
||||||
|
context.Response.StatusCode = 404;
|
||||||
|
context.Response.ContentType = "application/json";
|
||||||
|
|
||||||
|
await context.Response.WriteAsync(JsonConvert.SerializeObject(ResponseOutput.NotOk("File not found")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -405,14 +405,8 @@
|
||||||
<param name="applyReReadingCommand"></param>
|
<param name="applyReReadingCommand"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.ReReadingTaskTrackingDeal(IRaCIS.Core.Domain.Models.VisitTask,IRaCIS.Core.Application.ViewModel.ConfirmReReadingCommand)">
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.ReReadingTaskTrackingDeal(IRaCIS.Core.Domain.Models.VisitTask,IRaCIS.Core.Application.ViewModel.ConfirmReReadingCommand)" -->
|
||||||
<summary>
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.PMReReadingConfirmOrBackInfluenceAnalysisAsync(System.Guid)">
|
||||||
重阅原任务跟踪处理 只会在同意的时候调用这个
|
|
||||||
</summary>
|
|
||||||
<param name="origenalTask"></param>
|
|
||||||
<param name="agreeReReadingCommand"></param>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.SetReReadingOrBackInfluenceAnalysisAsync(System.Guid)">
|
|
||||||
<summary>
|
<summary>
|
||||||
PM 申请重阅 被同意 或者 PM 直接退回的时候影响
|
PM 申请重阅 被同意 或者 PM 直接退回的时候影响
|
||||||
</summary>
|
</summary>
|
||||||
|
@ -2045,6 +2039,14 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.ReserveDecimal(System.Decimal,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
保留小数
|
||||||
|
</summary>
|
||||||
|
<param name="answer"></param>
|
||||||
|
<param name="digitPlaces"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
删除病灶获取起始病灶序号
|
删除病灶获取起始病灶序号
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
|
|
||||||
public List<string> InstancePathList { get; set; } = new List<string>();
|
public List<string> InstancePathList { get; set; } = new List<string>();
|
||||||
|
|
||||||
|
public List<string> InstanceHtmlPathList { get; set; }
|
||||||
|
|
||||||
//存放在instance 上面
|
//存放在instance 上面
|
||||||
public string WindowCenter { get; set; } = string.Empty;
|
public string WindowCenter { get; set; } = string.Empty;
|
||||||
public string WindowWidth { get; set; } = string.Empty;
|
public string WindowWidth { get; set; } = string.Empty;
|
||||||
|
|
|
@ -264,17 +264,17 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public string SeriesInstanceUid { get; set; }
|
public string SeriesInstanceUid { get; set; }
|
||||||
public int SeriesNumber { get; set; }
|
public int SeriesNumber { get; set; }
|
||||||
public DateTime? SeriesTime { get; set; }
|
public DateTime? SeriesTime { get; set; }
|
||||||
public string Modality { get; set; }
|
public string Modality { get; set; } = string.Empty;
|
||||||
public string Description { get; set; }
|
public string Description { get; set; } = string.Empty;
|
||||||
public int InstanceCount { get; set; }
|
public int InstanceCount { get; set; }
|
||||||
public string SliceThickness { get; set; }
|
public string SliceThickness { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string ImagePositionPatient { get; set; }
|
public string ImagePositionPatient { get; set; } = string.Empty;
|
||||||
public string ImageOrientationPatient { get; set; }
|
public string ImageOrientationPatient { get; set; } = string.Empty;
|
||||||
public string BodyPartExamined { get; set; }
|
public string BodyPartExamined { get; set; } = string.Empty;
|
||||||
public string SequenceName { get; set; }
|
public string SequenceName { get; set; } = string.Empty;
|
||||||
public string ProtocolName { get; set; }
|
public string ProtocolName { get; set; } = string.Empty;
|
||||||
public string ImagerPixelSpacing { get; set; }
|
public string ImagerPixelSpacing { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string AcquisitionTime { get; set; } = string.Empty;
|
public string AcquisitionTime { get; set; } = string.Empty;
|
||||||
public string AcquisitionNumber { get; set; } = string.Empty;
|
public string AcquisitionNumber { get; set; } = string.Empty;
|
||||||
|
@ -300,14 +300,14 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public int SliceLocation { get; set; }
|
public int SliceLocation { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public string SliceThickness { get; set; }
|
public string SliceThickness { get; set; } = string.Empty;
|
||||||
public int NumberOfFrames { get; set; }
|
public int NumberOfFrames { get; set; }
|
||||||
public string PixelSpacing { get; set; }
|
public string PixelSpacing { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string ImagerPixelSpacing { get; set; }
|
public string ImagerPixelSpacing { get; set; } = string.Empty;
|
||||||
public string FrameOfReferenceUID { get; set; }
|
public string FrameOfReferenceUID { get; set; } = string.Empty;
|
||||||
public string WindowCenter { get; set; }
|
public string WindowCenter { get; set; } = string.Empty;
|
||||||
public string WindowWidth { get; set; }
|
public string WindowWidth { get; set; } = string.Empty;
|
||||||
|
|
||||||
public bool Anonymize { get; set; }
|
public bool Anonymize { get; set; }
|
||||||
public string Path { get; set; } = string.Empty;
|
public string Path { get; set; } = string.Empty;
|
||||||
|
|
|
@ -23,11 +23,15 @@ namespace IRaCIS.Core.Application.Services
|
||||||
/// <summary> 指定资源Id,获取Dicom序列所属的实例信息列表 </summary>
|
/// <summary> 指定资源Id,获取Dicom序列所属的实例信息列表 </summary>
|
||||||
/// <param name="seriesId"> Dicom序列的Id </param>
|
/// <param name="seriesId"> Dicom序列的Id </param>
|
||||||
[HttpGet("{seriesId:guid}")]
|
[HttpGet("{seriesId:guid}")]
|
||||||
public async Task<IEnumerable<DicomInstanceDTO>> List(Guid seriesId)
|
public async Task<IResponseOutput<List<DicomInstanceDTO>>> List(Guid seriesId)
|
||||||
{
|
{
|
||||||
return await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber).
|
var list = await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber).
|
||||||
ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||||
.ProjectTo<DicomInstanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<DicomInstanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
var imageResizePath = await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t => t.DicomSerie.ImageResizePath).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(list, new { ImageResizePath = imageResizePath });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
public interface IInstanceService
|
public interface IInstanceService
|
||||||
{
|
{
|
||||||
Task<FileContentResult> Content(Guid instanceId);
|
Task<FileContentResult> Content(Guid instanceId);
|
||||||
Task<IEnumerable<DicomInstanceDTO>> List(Guid seriesId);
|
Task<IResponseOutput<List<DicomInstanceDTO>>> List(Guid seriesId);
|
||||||
IEnumerable<Guid> List(Guid seriesId, string tpCode, bool? key);
|
IEnumerable<Guid> List(Guid seriesId, string tpCode, bool? key);
|
||||||
Task<FileContentResult> Preview(Guid instanceId);
|
Task<FileContentResult> Preview(Guid instanceId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<VisitTaskDTO_UltrasonicDicom>> GetVisitTaskList(VisitTaskQuery_UltrasonicDicom queryVisitTask)
|
public async Task<PageOutput<VisitTaskDTO_UltrasonicDicom>> GetVisitTaskList(VisitTaskQuery_UltrasonicDicom queryVisitTask)
|
||||||
{
|
{
|
||||||
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect && t.SourceSubjectVisitId != null)
|
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect &&t.TaskAllocationState==TaskAllocationState.Allocated && t.SourceSubjectVisitId != null)
|
||||||
|
|
||||||
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
|
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
|
||||||
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
|
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
|
||||||
|
|
|
@ -1108,7 +1108,7 @@ namespace IRaCIS.Core.Application
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.Code), o => o.TrialCode.Contains(inQuery.Code))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.Code), o => o.TrialCode.Contains(inQuery.Code))
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.ResearchProgramNo), o => o.ResearchProgramNo.Contains(inQuery.ResearchProgramNo))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.ResearchProgramNo), o => o.ResearchProgramNo.Contains(inQuery.ResearchProgramNo))
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
|
||||||
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false)
|
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false)
|
||||||
.Select(t => new TrialToBeDoneDto()
|
.Select(t => new TrialToBeDoneDto()
|
||||||
{
|
{
|
||||||
TrialId = t.Id,
|
TrialId = t.Id,
|
||||||
|
|
|
@ -262,7 +262,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
||||||
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames }).ToListAsync();
|
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.HtmlPath }).ToListAsync();
|
||||||
|
|
||||||
foreach (var t in studyList)
|
foreach (var t in studyList)
|
||||||
{
|
{
|
||||||
|
@ -275,7 +275,9 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
||||||
|
|
||||||
//series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList();
|
|
||||||
|
series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList();
|
||||||
|
|
||||||
|
|
||||||
//处理多帧
|
//处理多帧
|
||||||
series.InstancePathList = instanceList.OrderBy(t => t.InstanceNumber).Where(s => s.SeriesId == series.Id)
|
series.InstancePathList = instanceList.OrderBy(t => t.InstanceNumber).Where(s => s.SeriesId == series.Id)
|
||||||
|
@ -458,7 +460,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||||
|
|
||||||
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
||||||
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth }).ToListAsync();
|
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth,t.HtmlPath }).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -478,7 +480,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList();
|
||||||
|
|
||||||
|
|
||||||
//series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList();
|
series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath!=string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList();
|
||||||
|
|
||||||
//处理多帧
|
//处理多帧
|
||||||
series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber)
|
series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber)
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
Dashboard = 6,
|
Dashboard = 6,
|
||||||
|
|
||||||
// 超级管理员用户类型,用于取代 SuperAdmin字段 数据库不内置这个用户类型和角色的配置,因为只允许有一个
|
// 超级管理员用户类型,用于取代 SuperAdmin字段 数据库不内置这个用户类型和角色的配置,因为只允许有一个
|
||||||
SuperAdmin=8,
|
SuperAdmin=7,
|
||||||
|
|
||||||
|
|
||||||
|
Admin = 8,
|
||||||
|
|
||||||
|
|
||||||
CRA =9,
|
CRA =9,
|
||||||
|
|
Loading…
Reference in New Issue