Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5660d2e83b | |||
| 5e3e242981 | |||
| 65c31fb457 | |||
| 0f891075cc | |||
| 6d898367e4 | |||
| 003e63b7fb | |||
| 73c9e15976 | |||
| 1dc1d673dd | |||
| 46818d9a02 | |||
| d6a585c6cc | |||
| c54fcf920c | |||
| 467c7f77f5 | |||
| 3c51287178 | |||
| 9d8fdcfa12 | |||
| fadd8a7f79 | |||
| f2afb7ab1a | |||
| b52d8785bb | |||
| 70846525bf | |||
| abe77916a3 | |||
| 660846a0d8 | |||
| 8dec77f30a | |||
| 5812c8f939 | |||
| 1c673e11ac | |||
| bf54bcfd9b | |||
| 33a0b8f11f | |||
| 61ffdabc51 | |||
| 2f224047bc | |||
| 2747fa82e3 | |||
| 5dd80c91cf | |||
| 495e602599 | |||
| 545ddd4ec9 | |||
| 9fff53f137 | |||
| 1d38fc0879 | |||
| 48f44b8920 | |||
| e365818ef5 | |||
| c2bb3010cc | |||
| 4ca8003d24 | |||
| 6a212926e0 | |||
| dae5c0440f | |||
| 6b1d083faa | |||
| c8510bea2a | |||
| a00e84018a | |||
| 3435806020 | |||
| 27f0a0fcfa | |||
| 1f4bb0128a | |||
| e686b6b7d4 | |||
| b74d46b425 |
@@ -0,0 +1,30 @@
|
||||
**/.classpath
|
||||
**/.dockerignore
|
||||
**/.env
|
||||
**/.git
|
||||
**/.gitignore
|
||||
**/.project
|
||||
**/.settings
|
||||
**/.toolstarget
|
||||
**/.vs
|
||||
**/.vscode
|
||||
**/*.*proj.user
|
||||
**/*.dbmdl
|
||||
**/*.jfm
|
||||
**/azds.yaml
|
||||
**/bin
|
||||
**/charts
|
||||
**/docker-compose*
|
||||
**/Dockerfile*
|
||||
**/node_modules
|
||||
**/npm-debug.log
|
||||
**/obj
|
||||
**/secrets.dev.yaml
|
||||
**/values.dev.yaml
|
||||
LICENSE
|
||||
README.md
|
||||
!**/.gitignore
|
||||
!.git/HEAD
|
||||
!.git/config
|
||||
!.git/packed-refs
|
||||
!.git/refs/heads/**
|
||||
@@ -29,8 +29,7 @@ namespace IRaCIS.Core.API
|
||||
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine}")
|
||||
|
||||
.WriteTo.File($"{AppContext.BaseDirectory}Serilogs/.log", rollingInterval: RollingInterval.Day,
|
||||
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine}")
|
||||
.Filter.ByExcluding(logEvent => logEvent.Properties.ContainsKey("SourceContext") && logEvent.Properties["SourceContext"].ToString().Contains("health"));
|
||||
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine}");
|
||||
|
||||
//.WriteTo.MSSqlServer("Data Source=DESKTOP-4TU9A6M;Initial Catalog=CoreFrame;User ID=sa;Password=123456", "logs", autoCreateSqlTable: true, restrictedToMinimumLevel: LogEventLevel.Information)//从左至右四个参数分别是数据库连接字符串、表名、如果表不存在是否创建、最低等级。Serilog会默认创建一些列。
|
||||
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=101.132.193.237,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=101.132.193.237,1434;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
// "RemoteNew": "Server=47.117.165.18,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
// "Hangfire": "Server=47.117.165.18,1434;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||
},
|
||||
"ObjectStoreService": {
|
||||
"ObjectStoreUse": "AliyunOSS",
|
||||
|
||||
@@ -342,7 +342,7 @@ public static class ExcelExportHelper
|
||||
IgnoreTemplateParameterMissing = true,
|
||||
};
|
||||
|
||||
await MiniExcel.SaveAsByTemplateAsync(memoryStream, tplPath, translateData, config);
|
||||
await MiniExcel.SaveAsByTemplateAsync(memoryStream, templateStream.ToArray(), translateData, config);
|
||||
|
||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
|
||||
@@ -1764,6 +1764,19 @@
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.CalculateTargetLesionStatus(IRaCIS.Core.Application.ViewModel.CalculateTargetLesionStatusInDto)">
|
||||
<summary>
|
||||
计算靶病灶状态
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetSplitPPdSum(IRaCIS.Core.Application.ViewModel.GetSplitPPdInDto)">
|
||||
<summary>
|
||||
获取分裂病灶的PPd之和 不包括当前的主病灶
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.AddTaskLesionAnswerFromLastTask(IRaCIS.Core.Application.ViewModel.AddTaskLesionAnswerFromLastTaskInDto)">
|
||||
<summary>
|
||||
将上一次的访视病灶添加到这一次
|
||||
@@ -6702,6 +6715,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionTrialAddOrEdit.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionTrialAddOrEdit.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -6790,6 +6808,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionSystemAddOrEdit.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionSystemAddOrEdit.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -7153,6 +7176,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -7213,6 +7241,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -7558,6 +7591,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -7903,6 +7941,11 @@
|
||||
限制编辑
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.LimitShow">
|
||||
<summary>
|
||||
限制显示
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.MaxAnswerLength">
|
||||
<summary>
|
||||
最大答案长度
|
||||
@@ -13360,7 +13403,7 @@
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SplitLesion(IRaCIS.Core.Application.Service.Reading.Dto.SplitLesionInDto)">
|
||||
<summary>
|
||||
拆分病灶
|
||||
拆分病灶 分裂病灶
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
||||
@@ -693,7 +693,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var existCurrentVisitTaskList = _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId
|
||||
&& t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect
|
||||
&& t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.SourceSubjectVisitId == subjectVisit.Id).ToList();
|
||||
/* && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null*/ && t.SourceSubjectVisitId == subjectVisit.Id).ToList();
|
||||
|
||||
VisitTask? task1 = null;
|
||||
VisitTask? task2 = null;
|
||||
|
||||
@@ -1088,7 +1088,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||
.WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
|
||||
|
||||
// 前序 不存在 未一致性核查未通过的
|
||||
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
||||
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum >= sv.VisitNum))
|
||||
//.WhereIf(critrion.IsAutoCreate == false, t => t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.IsGeneratedTask == false) ?
|
||||
//t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsGeneratedTask == false).Min(t => t.SubjectVisit.VisitNum) : true)
|
||||
//.Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <= t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
|
||||
@@ -2281,7 +2281,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||
|
||||
#region 方式二
|
||||
|
||||
var origenalTask = influenceTaskList.Where(t => t.Id == task.Id).FirstOrDefault();
|
||||
|
||||
//pm退回的时候,影响的任务里不一定有该任务id 双重 分配了一个人,退回的时候,选择的是未分配的
|
||||
|
||||
//var origenalTask = influenceTaskList.Where(t => t.Id == task.Id).FirstOrDefault();
|
||||
|
||||
var origenalTask = await _visitTaskRepository.FindAsync(task.Id);
|
||||
|
||||
|
||||
foreach (var influenceTask in influenceTaskList)
|
||||
{
|
||||
@@ -2340,7 +2346,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||
|
||||
await SetMedicalReviewInvalidAsync(currentVisitList);
|
||||
|
||||
var origenalTask = currentVisitList.Where(t => t.Id == task.Id).First();
|
||||
//var origenalTask = currentVisitList.Where(t => t.Id == task.Id).First();
|
||||
|
||||
var origenalTask = await _visitTaskRepository.FindAsync(task.Id);
|
||||
|
||||
foreach (var influenceTask in currentVisitList)
|
||||
{
|
||||
@@ -2695,7 +2703,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||
|
||||
//throw new BusinessValidationFailedException("仅允许PM 同意 IR 申请的任务");
|
||||
}
|
||||
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 掉用
|
||||
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用
|
||||
|
||||
else if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.ProjectManager) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit)
|
||||
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId == null))
|
||||
|
||||
@@ -248,6 +248,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
|
||||
builder.HtmlBody = string.Format(templateInfo,
|
||||
"",
|
||||
//---您正在参与展影医疗IRC项目
|
||||
_localizer["Mail_IRCProject"],
|
||||
verificationCode
|
||||
|
||||
@@ -432,11 +432,11 @@ namespace IRaCIS.Application.Services
|
||||
//判断 合作协议、正式简历 是否有。如果没有,显示提示信息,并且不能保存
|
||||
var attachmentList = await _attachmentRepository.Where(u => u.DoctorId == auditResumeParam.Id)
|
||||
.Select(u => u.Type).ToListAsync();
|
||||
if (auditResumeParam.ResumeStatus == ResumeStatusEnum.Pass && ((!attachmentList.Contains("Resume")) || (!attachmentList.Contains("Consultant Agreement"))))
|
||||
{
|
||||
//---Resume & Consultant Agreement must be upload
|
||||
return ResponseOutput.NotOk(_localizer["Doctor_RequiredDocumentsError"]);
|
||||
}
|
||||
//if (auditResumeParam.ResumeStatus == ResumeStatusEnum.Pass && ((!attachmentList.Contains("Resume")) || (!attachmentList.Contains("Consultant Agreement"))))
|
||||
//{
|
||||
// //---Resume & Consultant Agreement must be upload
|
||||
// return ResponseOutput.NotOk(_localizer["Doctor_RequiredDocumentsError"]);
|
||||
//}
|
||||
var success = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == auditResumeParam.Id, u => new Doctor()
|
||||
{
|
||||
CooperateStatus = auditResumeParam.CooperateStatus,
|
||||
|
||||
@@ -147,12 +147,12 @@ namespace IRaCIS.Application.Services
|
||||
var successs = await _repository.BatchUpdateAsync<Doctor>(o => o.Id == updateGCPExperienceParam.Id, u => new Doctor()
|
||||
{
|
||||
GCP = updateGCPExperienceParam.GCP,
|
||||
GCPId = updateGCPExperienceParam.GCP==0&&updateGCPExperienceParam.GCPId==null?Guid.Empty: updateGCPExperienceParam.GCPId!.Value
|
||||
GCPId = (updateGCPExperienceParam.GCP==0||updateGCPExperienceParam.GCPId==null)?Guid.Empty: updateGCPExperienceParam.GCPId!.Value
|
||||
});
|
||||
|
||||
if (updateGCPExperienceParam.GCP == 0 && updateGCPExperienceParam.GCPId != null)
|
||||
if (updateGCPExperienceParam.GCP == 0 )
|
||||
{
|
||||
await _repository.BatchDeleteAsync<Attachment>(a => a.Id == updateGCPExperienceParam.GCPId);
|
||||
await _repository.BatchDeleteAsync<Attachment>(a => a.DoctorId == updateGCPExperienceParam.Id && a.Type=="GCP");
|
||||
}
|
||||
|
||||
return ResponseOutput.Result(successs, updateGCPExperienceParam.GCPId.ToString());
|
||||
|
||||
@@ -121,6 +121,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
CreateMap<Doctor, SpecialtyDTO>()
|
||||
.ForMember(o => o.Speciality, t => t.MapFrom(u => u.Speciality.Value))
|
||||
.ForMember(o => o.SpecialityCN, t => t.MapFrom(u => u.Speciality.ValueCN))
|
||||
.ForMember(o => o.DictionaryList, t => t.MapFrom(u => u.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder)));
|
||||
CreateMap<SpecialtyCommand, Doctor>();
|
||||
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false)
|
||||
if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false || trialEmailConfig.IsEnable==false)
|
||||
{
|
||||
return (null,null);
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public class DicomTrialSiteSubjectInfo
|
||||
{
|
||||
public string TrialSiteCode { get; set; } = string.Empty;
|
||||
public string SiteCode { get; set; } = string.Empty;
|
||||
public string SiteName { get; set; } = string.Empty;
|
||||
public string TrialSiteAliasName { get; set; } = string.Empty;
|
||||
|
||||
public string SubjectCode { get; set; } = string.Empty;
|
||||
public int? SubjectAge { get; set; }
|
||||
public string SubjectSex { get; set; } = string.Empty;
|
||||
|
||||
@@ -132,7 +132,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
[HttpGet]
|
||||
public IResponseOutput DicomUploadInProgress(Guid trialId, string studyInstanceUid)
|
||||
{
|
||||
_provider.Set($"StudyUid_{trialId}_{studyInstanceUid}", _userInfo.Id, TimeSpan.FromSeconds(30));
|
||||
_provider.Set($"StudyUid_{trialId}_{studyInstanceUid}", _userInfo.Id, TimeSpan.FromSeconds(15));
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
@@ -247,6 +247,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
|
||||
//重传的时候也要赋值检查Id
|
||||
studyMonitor.StudyId = study.Id;
|
||||
studyMonitor.StudyCode = study.StudyCode;
|
||||
|
||||
//特殊处理逻辑
|
||||
study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Union(study.Modalities.Split("、", StringSplitOptions.RemoveEmptyEntries)).Distinct());
|
||||
@@ -339,8 +340,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<UnionStudyViewModel>> GetDicomAndNoneDicomStudyList(StudyQuery studyQuery)
|
||||
{
|
||||
|
||||
@@ -1398,7 +1398,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 拆分病灶
|
||||
/// 拆分病灶 分裂病灶
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
@@ -1444,7 +1444,12 @@ namespace IRaCIS.Application.Services
|
||||
});
|
||||
await _readingTableAnswerRowInfoRepository.AddAsync(rowAnswer);
|
||||
await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers);
|
||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo()
|
||||
{
|
||||
SplitOrMergeType = SplitOrMergeType.SplitMain
|
||||
});
|
||||
|
||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,32 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public Guid VisitTaskId { get; set; }
|
||||
}
|
||||
|
||||
public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer
|
||||
public class CalculateTargetLesionStatusInDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set;}
|
||||
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
public decimal RowNumber { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class GetSplitPPdOutDto
|
||||
{
|
||||
public Guid RowId { get; set; }
|
||||
|
||||
public string RowIndex { get; set; }
|
||||
|
||||
public decimal AllPPD { get; set; }
|
||||
}
|
||||
|
||||
public class GetSplitPPdInDto
|
||||
{
|
||||
|
||||
public Guid VisitTaskId { get; set; }
|
||||
}
|
||||
|
||||
public class ReadingTaskQuestionAnswerDto : ReadingTaskQuestionAnswer
|
||||
{
|
||||
public QuestionType QuestionType { get; set; }
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ using MassTransit;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Linq;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using DocumentFormat.OpenXml.Drawing.Charts;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
{
|
||||
@@ -404,7 +405,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
if (lowPddTaskid != default(Guid))
|
||||
{
|
||||
|
||||
var lowPPDAnswerList = await _readingTableQuestionAnswerRepository.Where(x =>x.VisitTaskId== lowPddTaskid
|
||||
var lowPPDAnswerList = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == lowPddTaskid
|
||||
&& x.QuestionId == inDto.QuestionId
|
||||
&& x.RowIndex == inDto.RowIndex).Include(x => x.ReadingTableQuestionTrial)
|
||||
.Select(x => new
|
||||
@@ -447,7 +448,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
var calculateDto = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId);
|
||||
return new GetReportVerifyOutDto()
|
||||
{
|
||||
TumorEvaluate = calculateDto.QuestionInfo.Where(x=>x.QuestionType==QuestionType.ImgOncology).Select(x=>x.Answer).FirstOrDefault(),
|
||||
TumorEvaluate = calculateDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ImgOncology).Select(x => x.Answer).FirstOrDefault(),
|
||||
IsExistDisease = await this.GetReportIsExistDisease(inDto.VisitTaskId),
|
||||
|
||||
};
|
||||
@@ -676,7 +677,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
|
||||
if (valueOfTypes.Contains(item.ValueType))
|
||||
{
|
||||
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F"+ inDto.DigitPlaces.ToString());
|
||||
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString());
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -829,18 +830,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
if (await _readingTaskQuestionAnswerRepository.AnyAsync(x => x.ReadingQuestionTrial.QuestionType == QuestionType.ExistPET && x.VisitTaskId == inDto.VisitTaskId && x.Answer == ReadingYesOrNo.Yes.GetEnumInt()))
|
||||
{
|
||||
|
||||
List<QuestionType?> required=new List<QuestionType?>() {
|
||||
QuestionType.LiverSUVmax,
|
||||
QuestionType.MediastinumSUVmax,
|
||||
QuestionType.SUVmax,
|
||||
QuestionType.SUVmaxLesion,
|
||||
QuestionType.PET5PS,
|
||||
};
|
||||
List<QuestionType?> required = new List<QuestionType?>() {
|
||||
QuestionType.LiverSUVmax,
|
||||
QuestionType.MediastinumSUVmax,
|
||||
QuestionType.SUVmax,
|
||||
QuestionType.SUVmaxLesion,
|
||||
QuestionType.PET5PS,
|
||||
};
|
||||
if (taskinfo.VisitTaskNum != 0m)
|
||||
{
|
||||
required.Add(QuestionType.UptakeChange);
|
||||
required.Add(QuestionType.EvidenceFocalFDG);
|
||||
}
|
||||
required.Add(QuestionType.UptakeChange);
|
||||
required.Add(QuestionType.EvidenceFocalFDG);
|
||||
}
|
||||
|
||||
if ((await _readingTaskQuestionAnswerRepository.CountAsync(x => required.Contains(x.ReadingQuestionTrial.QuestionType) && x.VisitTaskId == inDto.VisitTaskId && x.Answer != string.Empty)) != required.Count())
|
||||
{
|
||||
@@ -848,12 +849,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
{
|
||||
errorMassage += _localizer["ReadingCalculate_LuganoPetVerification"];
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
errorMassage += _localizer["ReadingCalculate_LuganoBaseLinePetVerification"];
|
||||
}
|
||||
|
||||
}
|
||||
errorMassage += _localizer["ReadingCalculate_LuganoBaseLinePetVerification"];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -866,16 +867,189 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region 将上一次的访视病灶添加到这一次
|
||||
|
||||
/// <summary>
|
||||
/// 将上一次的访视病灶添加到这一次
|
||||
/// 计算靶病灶状态
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AddTaskLesionAnswerFromLastTaskOutDto> AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto)
|
||||
public async Task CalculateTargetLesionStatus(CalculateTargetLesionStatusInDto inDto)
|
||||
{
|
||||
if (inDto.RowNumber % 1 != 0)
|
||||
{
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
|
||||
// 找到靶病灶问题
|
||||
var targetQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType == LesionType.TargetLesion).FirstOrDefaultAsync();
|
||||
if(targetQuestion!=null)
|
||||
{
|
||||
// 找到状态问题
|
||||
var stateQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.State).FirstOrDefaultAsync();
|
||||
if (stateQuestion != null)
|
||||
{
|
||||
|
||||
// 找到主病灶的状态
|
||||
var state =await _readingTableQuestionAnswerRepository.Where(x=>x.VisitTaskId==inDto.VisitTaskId&&x.RowIndex== (int)Math.Floor(inDto.RowNumber)&&x.TableQuestionId== stateQuestion.Id).Select(x=>x.Answer).FirstOrDefaultAsync();
|
||||
|
||||
// 长径
|
||||
var majorAxis = (await _readingTableQuestionAnswerRepository.Where(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.MajorAxis &&
|
||||
x.QuestionId== targetQuestion.Id
|
||||
).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 短径
|
||||
var shortAxis = (await _readingTableQuestionAnswerRepository.Where(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis &&
|
||||
x.QuestionId == targetQuestion.Id
|
||||
).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 找到ppd问题
|
||||
var ppdQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionId == targetQuestion.Id && x.QuestionMark == QuestionMark.PPD).FirstOrDefaultAsync();
|
||||
|
||||
if(ppdQuestion!=null)
|
||||
{
|
||||
var ppdAnswerList= await _readingTableQuestionAnswerRepository.Where(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.PPD &&
|
||||
x.QuestionId == targetQuestion.Id &&
|
||||
x.RowIndex >= (int)Math.Floor(inDto.RowNumber) && x.RowIndex < ((int)Math.Floor(inDto.RowNumber) + 1)
|
||||
).Select(x => x.Answer).ToListAsync();
|
||||
|
||||
var allPPd = ppdAnswerList.Select(x => x.IsNullOrEmptyReturn0()).Sum();
|
||||
|
||||
// 是否符合疾病进展
|
||||
var accord = false;
|
||||
|
||||
var lowPPDInfo = await GetLowPPDInfo(new GetPPDInfoInDto()
|
||||
{
|
||||
RowIndex = (int)Math.Floor(inDto.RowNumber),
|
||||
VisitTaskId = inDto.VisitTaskId,
|
||||
QuestionId = inDto.QuestionId,
|
||||
});
|
||||
|
||||
|
||||
if (lowPPDInfo.NadirPPD != 0)
|
||||
{
|
||||
//15mm < 当前靶病灶LDi≤20mm &&
|
||||
//&& 相比最低点PPD增加百分比 ≥50% &&
|
||||
//(相比PPD最低点LDi增加值 ≥5 mm
|
||||
//or相比PPD最低点SDi增加值≥5 mm)
|
||||
if (15 < majorAxis && majorAxis <= 20 &&
|
||||
(allPPd - lowPPDInfo.NadirPPD) * 100 / lowPPDInfo.NadirPPD >= 50 &&
|
||||
(majorAxis - lowPPDInfo.LowPPDLDi >= 5 ||
|
||||
shortAxis - lowPPDInfo.LowPPDSDi >= 5)
|
||||
)
|
||||
{
|
||||
accord = true;
|
||||
}
|
||||
|
||||
//当前靶病灶LDi>20 mm
|
||||
//相比最低点PPD增加百分比 ≥50%
|
||||
// (相比PPD最低点LDi增加值 ≥10 mm
|
||||
// 或者相比PPD最低点SDi增加值Sdi ≥10 mm)
|
||||
if ( majorAxis > 20 &&
|
||||
(allPPd - lowPPDInfo.NadirPPD) * 100 / lowPPDInfo.NadirPPD >= 50 &&
|
||||
(majorAxis - lowPPDInfo.LowPPDLDi >= 10 ||
|
||||
shortAxis - lowPPDInfo.LowPPDSDi >= 10)
|
||||
)
|
||||
{
|
||||
accord = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 符合疾病进展
|
||||
if (accord)
|
||||
{
|
||||
await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State &&
|
||||
x.QuestionId == targetQuestion.Id, x => new ReadingTableQuestionAnswer()
|
||||
{
|
||||
Answer = TargetState.DiseaseProgression.GetEnumInt()
|
||||
}
|
||||
);
|
||||
}
|
||||
else if (state == TargetState.DiseaseProgression.GetEnumInt())
|
||||
{
|
||||
await _readingTableQuestionAnswerRepository.UpdatePartialFromQueryAsync(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.RowIndex == (int)Math.Floor(inDto.RowNumber) &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State &&
|
||||
x.QuestionId == targetQuestion.Id, x => new ReadingTableQuestionAnswer()
|
||||
{
|
||||
Answer = TargetState.Exist.GetEnumInt()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取分裂病灶的PPd之和 不包括当前的主病灶
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetSplitPPdOutDto>> GetSplitPPdSum(GetSplitPPdInDto inDto)
|
||||
{
|
||||
List<GetSplitPPdOutDto> result = new List<GetSplitPPdOutDto>();
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var targetQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType == LesionType.TargetLesion).FirstOrDefaultAsync();
|
||||
if (targetQuestion != null)
|
||||
{
|
||||
var ppdAnswerList = await _readingTableQuestionAnswerRepository.Where(x =>
|
||||
x.VisitTaskId == inDto.VisitTaskId &&
|
||||
x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.PPD &&
|
||||
x.QuestionId == targetQuestion.Id)
|
||||
.Select(x => new {
|
||||
x.RowId,
|
||||
x.RowIndex,
|
||||
x.Answer
|
||||
}).ToListAsync();
|
||||
var answerList = ppdAnswerList.Select(x => new {
|
||||
x.RowId,
|
||||
x.RowIndex,
|
||||
Answer = x.Answer.IsNullOrEmptyReturn0()
|
||||
}).ToList();
|
||||
var maxRowIndex = answerList.MaxOrDefault(x => x.RowIndex);
|
||||
for (int i = 1; i < maxRowIndex; i++)
|
||||
{
|
||||
result.Add(new GetSplitPPdOutDto()
|
||||
{
|
||||
RowId = answerList.Where(x => x.RowIndex == i).Select(x => x.RowId).FirstOrDefault(),
|
||||
RowIndex = answerList.Where(x => x.RowIndex == i).Select(x => x.RowIndex).FirstOrDefault().ToString(),
|
||||
AllPPD = answerList.Where(x => x.RowIndex > i && x.RowIndex < (i + 1)).Sum(x => x.Answer),
|
||||
});
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#region 将上一次的访视病灶添加到这一次
|
||||
|
||||
/// <summary>
|
||||
/// 将上一次的访视病灶添加到这一次
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AddTaskLesionAnswerFromLastTaskOutDto> AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto)
|
||||
{
|
||||
var visitTaskId = inDto.VisitTaskId;
|
||||
|
||||
|
||||
@@ -108,6 +108,14 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
else //验证码正确 并且 没有超时
|
||||
{
|
||||
var dockerInfo=await _repository.Where<Doctor>(t=>t.EMail==inDto.EmailOrPhone||t.Phone==inDto.EmailOrPhone).FirstOrDefaultAsync();
|
||||
|
||||
if (dockerInfo != null)
|
||||
{
|
||||
result.DoctorId = dockerInfo.Id;
|
||||
result.ReviewStatus = dockerInfo.ReviewStatus;
|
||||
}
|
||||
|
||||
result.Token = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,10 +194,10 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
|
||||
var siteQueryable = _siteRepository.AsQueryable(true)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName) || t.SiteNameCN.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName) || t.SiteNameCN.Contains(searchModel.SiteName) || t.AliasName.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.AliasName), t => t.AliasName.Contains(searchModel.AliasName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
|
||||
.ProjectTo<TrialSiteScreeningDTO>(_mapper.ConfigurationProvider, new { trialId = searchModel.TrialId , isEn_Us =_userInfo.IsEn_Us});
|
||||
|
||||
|
||||
|
||||
@@ -449,14 +449,14 @@ namespace IRaCIS.Core.Application.Services
|
||||
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId)
|
||||
.WhereIf(isManualGenerate,t=>t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t=>t.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId && t.IsConfirmed &&t.IsReading ))
|
||||
.Select(k => new VisitStudyDTO()
|
||||
{
|
||||
InstanceCount = k.InstanceCount,
|
||||
Modalities = k.Modalities,
|
||||
SeriesCount = k.SeriesCount,
|
||||
StudyCode = k.StudyCode,
|
||||
StudyId = k.Id,
|
||||
{
|
||||
InstanceCount = k.InstanceCount,
|
||||
Modalities = k.Modalities,
|
||||
SeriesCount = k.SeriesCount,
|
||||
StudyCode = k.StudyCode,
|
||||
StudyId = k.Id,
|
||||
|
||||
}).ToListAsync();
|
||||
}).ToListAsync();
|
||||
var studyIds = studyList.Select(t => t.StudyId).ToList();
|
||||
|
||||
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
|
||||
@@ -534,23 +534,35 @@ namespace IRaCIS.Core.Application.Services
|
||||
foreach (var item in noDicomStudyList)
|
||||
{
|
||||
var nodicom = noDicomList.Where(x => x.Id == item.StudyId).First();
|
||||
item.SeriesList = new List<DicomSeriesDTO>()
|
||||
{
|
||||
new DicomSeriesDTO (){
|
||||
IsDicom=false,
|
||||
Id=item.StudyId,
|
||||
InstanceCount=await _noneDicomStudyFileRepository.Where(x=>x.NoneDicomStudyId==item.StudyId).CountAsync(),
|
||||
Modality=item.Modalities,
|
||||
StudyId=item.StudyId,
|
||||
TrialId=nodicom.TrialId,
|
||||
SiteId=nodicom.SiteId,
|
||||
SubjectVisitId=nodicom.SubjectVisitId,
|
||||
SubjectId=nodicom.SubjectId,
|
||||
SeriesNumber=1,
|
||||
NoneDicomFileFirstFile=await _noneDicomStudyFileRepository.Where(x=>x.NoneDicomStudyId==item.StudyId).Select(x=>x.Path).FirstOrDefaultAsync(),
|
||||
}
|
||||
|
||||
};
|
||||
var instanceCount = await _noneDicomStudyFileRepository.Where(x => x.NoneDicomStudyId == item.StudyId).CountAsync();
|
||||
|
||||
if (instanceCount == 0)
|
||||
{
|
||||
item.SeriesList = new List<DicomSeriesDTO>();
|
||||
item.SeriesCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.SeriesList = new List<DicomSeriesDTO>()
|
||||
{
|
||||
new DicomSeriesDTO (){
|
||||
IsDicom=false,
|
||||
Id=item.StudyId,
|
||||
InstanceCount=instanceCount,
|
||||
Modality=item.Modalities,
|
||||
StudyId=item.StudyId,
|
||||
TrialId=nodicom.TrialId,
|
||||
SiteId=nodicom.SiteId,
|
||||
SubjectVisitId=nodicom.SubjectVisitId,
|
||||
SubjectId=nodicom.SubjectId,
|
||||
SeriesNumber=1,
|
||||
NoneDicomFileFirstFile=await _noneDicomStudyFileRepository.Where(x=>x.NoneDicomStudyId==item.StudyId).Select(x=>x.Path).FirstOrDefaultAsync(),
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
CreateMap<VisitStage, VisitStageDTO>();
|
||||
|
||||
CreateMap<Subject, SubjectQueryView>()
|
||||
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.Site.SiteName))
|
||||
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName))
|
||||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||||
.ForMember(d => d.LatestBlindName, u => u.MapFrom(s => s.LatestSubjectVisit.BlindName))
|
||||
.ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.LatestSubjectVisit.VisitName))
|
||||
@@ -89,8 +89,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
|
||||
CreateMap<SubjectVisit, DicomTrialSiteSubjectInfo>().IncludeMembers(t=>t.Trial)
|
||||
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName))
|
||||
.ForMember(d => d.SiteCode, u => u.MapFrom(s => s.Site.SiteCode))
|
||||
.ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName))
|
||||
.ForMember(d => d.SubjectVisitId, u => u.MapFrom(s => s.Id))
|
||||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||||
.ForMember(d => d.TrialCode, u => u.MapFrom(s => s.Trial.TrialCode))
|
||||
|
||||
+3
-3
@@ -92,10 +92,10 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
|
||||
|
||||
|
||||
//[Required(ErrorMessage = "检查日期不能为空")]
|
||||
[CanConvertToTime(ErrorMessage = "Does not conform to Stusy Date format")]
|
||||
[CanConvertToTime(ErrorMessage = "Does not conform to Study Date format")]
|
||||
|
||||
[ImporterHeader(Name = "Stusy Date", AutoTrim = true)]
|
||||
[ExcelColumnName("Stusy Date")]
|
||||
[ImporterHeader(Name = "Study Date", AutoTrim = true)]
|
||||
[ExcelColumnName("Study Date")]
|
||||
public string StudyDate { get; set; } = string.Empty;
|
||||
|
||||
|
||||
|
||||
@@ -633,27 +633,32 @@ namespace IRaCIS.Core.Domain.Share
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 病灶分裂或合并
|
||||
/// </summary>
|
||||
public enum SplitOrMergeType
|
||||
{
|
||||
/// <summary>
|
||||
/// 病灶分裂或合并
|
||||
/// </summary>
|
||||
public enum SplitOrMergeType
|
||||
{
|
||||
/// <summary>
|
||||
/// 分裂
|
||||
/// </summary>
|
||||
Split = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 分裂
|
||||
/// </summary>
|
||||
Split = 0,
|
||||
/// <summary>
|
||||
/// 合并
|
||||
/// </summary>
|
||||
Merge = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 合并
|
||||
/// </summary>
|
||||
Merge = 1
|
||||
}
|
||||
/// <summary>
|
||||
/// 分裂主病灶
|
||||
/// </summary>
|
||||
SplitMain = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 是否存在或者NA
|
||||
/// </summary>
|
||||
public enum ExistOrNA
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否存在或者NA
|
||||
/// </summary>
|
||||
public enum ExistOrNA
|
||||
{
|
||||
/// <summary>
|
||||
/// NA
|
||||
|
||||
+37
-12
@@ -1,9 +1,10 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: irc-netcore-api
|
||||
|
||||
clone:
|
||||
disable: true #禁用默认克隆
|
||||
disable: true
|
||||
|
||||
steps:
|
||||
- name: clone-repo
|
||||
@@ -46,7 +47,6 @@ steps:
|
||||
- cd /work/netcore-repo/IRaCIS.Core.API
|
||||
- dotnet publish ./IRaCIS.Core.API.csproj -c Release --no-restore -o /work/publish
|
||||
|
||||
|
||||
- name: docker-build
|
||||
image: docker
|
||||
pull: if-not-exists
|
||||
@@ -77,6 +77,7 @@ trigger:
|
||||
- master
|
||||
|
||||
---
|
||||
|
||||
kind: pipeline
|
||||
type: ssh
|
||||
name: ssh-linux-test-irc-publish
|
||||
@@ -86,15 +87,13 @@ platform:
|
||||
arch: 386
|
||||
|
||||
clone:
|
||||
disable: true #禁用默认克隆
|
||||
|
||||
disable: true
|
||||
|
||||
server:
|
||||
host: 123.56.94.154
|
||||
user: root
|
||||
password:
|
||||
from_secret: test_ssh_pwd
|
||||
# ssh_key:
|
||||
# from_secret: rsa_key
|
||||
|
||||
steps:
|
||||
- name: publish-test-irc
|
||||
@@ -109,7 +108,35 @@ trigger:
|
||||
|
||||
---
|
||||
|
||||
|
||||
kind: pipeline
|
||||
type: ssh
|
||||
name: test-irc-publish-image-push-aliyun
|
||||
|
||||
platform:
|
||||
os: Linux
|
||||
arch: 386
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
server:
|
||||
host: 192.168.3.68
|
||||
user: root
|
||||
password:
|
||||
from_secret: local_pwd
|
||||
|
||||
steps:
|
||||
- name: build-and-push-image
|
||||
commands:
|
||||
- cd /opt/hang/netcore/irc-test
|
||||
- sh test-irc.sh v${DRONE_BUILD_NUMBER}
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- Test_IRC_Net8
|
||||
|
||||
---
|
||||
|
||||
kind: pipeline
|
||||
type: ssh
|
||||
name: ssh-linux-test-study-publish
|
||||
@@ -119,8 +146,8 @@ platform:
|
||||
arch: 386
|
||||
|
||||
clone:
|
||||
disable: true #禁用默认克隆
|
||||
|
||||
disable: true
|
||||
|
||||
server:
|
||||
host: 123.56.94.154
|
||||
user: root
|
||||
@@ -136,6 +163,4 @@ steps:
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- Test.Study
|
||||
|
||||
|
||||
- Test.Study
|
||||
|
||||
Reference in New Issue
Block a user