Merge branch 'Test.IRC' of http://192.168.3.69:2000/XCKJ/irc-netcore-api into Test.IRC

IRC_NewDev
he 2023-11-03 16:12:58 +08:00
commit 53c56f5c0a
12 changed files with 63 additions and 46 deletions

View File

@ -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",

View File

@ -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 =>
{ {

View File

@ -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")));
} }

View File

@ -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>
删除病灶获取起始病灶序号 删除病灶获取起始病灶序号

View File

@ -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;

View File

@ -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;

View File

@ -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 });
} }

View File

@ -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);
} }

View File

@ -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)

View File

@ -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,

View File

@ -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)

View File

@ -26,12 +26,12 @@
Dashboard = 6, Dashboard = 6,
// 超级管理员用户类型,用于取代 SuperAdmin字段 数据库不内置这个用户类型和角色的配置,因为只允许有一个 // 超级管理员用户类型,用于取代 SuperAdmin字段 数据库不内置这个用户类型和角色的配置,因为只允许有一个
SuperAdmin=8, SuperAdmin=7,
Admin = 8,
CRA =9,
CRA=9,
SPM=10, SPM=10,