diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index c9c2e2128..a96001111 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -465,6 +465,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid VisitTaskId { get; set; } public List Answers { get; set; } + + + public List QuestionMarkInfoList { get; set; } = new List(); } @@ -707,6 +710,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetReadingQuestionAndAnswerOutDto: GetReadingTableQuestionOutDto { + public List QuestionMarkInfoList { get; set; } + public bool IsBaseLineTask { get; set; } public decimal TaskNum { get; set; } @@ -981,6 +986,52 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid? QuestionId { get; set; } } + + + public class QuestionMarkInfo + { + + + /// + /// 问题Id + /// + public Guid QuestionId { get; set; } + + /// + /// InstanceId + /// + public Guid InstanceId { get; set; } + + /// + /// SeriesId + /// + public Guid SeriesId { get; set; } + + /// + /// StudyId + /// + public Guid StudyId { get; set; } + + /// + /// MarkTool + /// + public string MarkTool { get; set; } = string.Empty; + + /// + /// PicturePath + /// + public string PicturePath { get; set; } = string.Empty; + + /// + /// NumberOfFrames + /// + public int? NumberOfFrames { get; set; } + + /// + /// MeasureData + /// + public string MeasureData { get; set; } = string.Empty; + } public class GetReadingQuestionAndAnswerInDto { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index da911dee6..6bf6d6bb7 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -46,6 +46,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _trialDocumentRepository; private readonly IRepository _userRepository; private readonly IRepository _readingCustomTagRepository; + private readonly IRepository _readingTaskQuestionMarkRepository; private readonly IRepository _readingCriterionDictionaryRepository; private readonly IRepository _readingTrialCriterionDictionaryRepository; private readonly IRepository _tumorAssessmentRepository; @@ -86,6 +87,7 @@ namespace IRaCIS.Application.Services IRepository trialDocumentRepository, IRepository userRepository, IRepository readingCustomTagRepository, + IRepository readingTaskQuestionMarkRepository, IMemoryCache cache, IRepository readingCriterionDictionaryRepository, IRepository readingTrialCriterionDictionaryRepository, @@ -124,6 +126,7 @@ namespace IRaCIS.Application.Services this._trialDocumentRepository = trialDocumentRepository; this._userRepository = userRepository; this._readingCustomTagRepository = readingCustomTagRepository; + this._readingTaskQuestionMarkRepository = readingTaskQuestionMarkRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._tumorAssessmentRepository = tumorAssessmentRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; @@ -898,7 +901,8 @@ namespace IRaCIS.Application.Services result.PublicPage = questionPage.PublicPage; result.BlindName = visitTaskInfo.TaskBlindName; result.TaskNum = visitTaskInfo.VisitTaskNum; - + result.QuestionMarkInfoList=await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider) + .ToListAsync(); return (result, new { readingTaskState = visitTaskInfo.ReadingTaskState, @@ -1530,6 +1534,25 @@ namespace IRaCIS.Application.Services }).ToList(); await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer); + + await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId); + + List markList = inDto.QuestionMarkInfoList.Select(x => new ReadingTaskQuestionMark + { + + Id = NewId.NextGuid(), + VisitTaskId = inDto.VisitTaskId, + InstanceId = x.InstanceId, + MarkTool = x.MarkTool, + NumberOfFrames = x.NumberOfFrames, + PicturePath = x.PicturePath, + MeasureData = x.PicturePath, + QuestionId = x.QuestionId, + SeriesId = x.SeriesId, + StudyId = x.StudyId, + + }); + await _readingTaskQuestionAnswerRepository.SaveChangesAsync(); return ResponseOutput.Ok(true); } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 89eb3a708..dbb9d21eb 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -94,16 +94,16 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.Value, u => u.MapFrom(s => s.Dictionary.Value)) .ForMember(d => d.ValueCN, u => u.MapFrom(s => s.Dictionary.ValueCN)); + CreateMap(); + //CreateMap(); + // CreateMap() + //.ForMember(d => d.ClinicalDataLevel, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataLevel)) + //.ForMember(d => d.ClinicalDataLevelName, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataSetName)) + //.ForMember(d => d.ClinicalUploadType, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalUploadType)); + //.ForMember(d => d.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count())); - //CreateMap(); - // CreateMap() - //.ForMember(d => d.ClinicalDataLevel, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataLevel)) - //.ForMember(d => d.ClinicalDataLevelName, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataSetName)) - //.ForMember(d => d.ClinicalUploadType, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalUploadType)); - //.ForMember(d => d.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count())); - - CreateMap(); + CreateMap(); //.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList())); diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs new file mode 100644 index 000000000..858c66eb8 --- /dev/null +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs @@ -0,0 +1,85 @@ + +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2023-09-21 16:08:07 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +using System; +using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace IRaCIS.Core.Domain.Models +{ + /// + /// + /// + [Table("ReadingTaskQuestionMark")] + public class ReadingTaskQuestionMark : Entity, IAuditAdd + { + + + + /// + /// 任务Id + /// + [Required] + public Guid VisitTaskId { get; set; } + + /// + /// 问题Id + /// + [Required] + public Guid QuestionId { get; set; } + + /// + /// InstanceId + /// + [Required] + public Guid InstanceId { get; set; } + + /// + /// SeriesId + /// + [Required] + public Guid SeriesId { get; set; } + + /// + /// StudyId + /// + [Required] + public Guid StudyId { get; set; } + + /// + /// MarkTool + /// + public string MarkTool { get; set; } + + /// + /// PicturePath + /// + public string PicturePath { get; set; } + + /// + /// NumberOfFrames + /// + public int? NumberOfFrames { get; set; } + + /// + /// MeasureData + /// + [Required] + public string MeasureData { get; set; } = string.Empty; + + /// + /// CreateTime + /// + public DateTime CreateTime { get; set; } + + /// + /// CreateUserId + /// + public Guid CreateUserId { get; set; } + + } + + +} diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 9d2f16f52..51e1ee816 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -287,6 +287,7 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet SubjectCriteriaEvaluationVisitFilter { get; set; } public virtual DbSet SubjectCriteriaEvaluationVisitStudyFilter { get; set; } + public virtual DbSet ReadingTaskQuestionMark { get; set; } //public virtual DbSet TrialClinicalDataCriterion { get; set; } diff --git a/IRaCIS.Core.Test/DbHelper.ttinclude b/IRaCIS.Core.Test/DbHelper.ttinclude index 415c2a1c0..c4973b985 100644 --- a/IRaCIS.Core.Test/DbHelper.ttinclude +++ b/IRaCIS.Core.Test/DbHelper.ttinclude @@ -1,10 +1,10 @@ <#+ public class config { - public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; - public static readonly string DbDatabase = "IRaCIS_New_Tet"; + public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.IRC;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; + public static readonly string DbDatabase = "Test.IRC"; //ַ,ƴ - public static readonly string TableName = "ReadingCustomTag"; + public static readonly string TableName = "ReadingTaskQuestionMark"; //ļ service Ƿҳ } #> @@ -21,12 +21,12 @@ } string sql = string.Format(@"SELECT obj.name tablename - from {0}.sys.objects obj - inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 - INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id - left join {0}.sys.extended_properties g ON (obj.object_id = g.major_id AND g.minor_id = 0 AND g.name= 'MS_Description') - where type='U' {1} - order by obj.name", database,tables); + from sys.objects obj + inner join dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 + INNER JOIN sys.schemas schem ON obj.schema_id=schem.schema_id + left join sys.extended_properties g ON (obj.object_id = g.major_id AND g.minor_id = 0 AND g.name= 'MS_Description') + where type='U' {0} + order by obj.name",tables); DataTable dt = GetDataTable(connectionString, sql); return dt.Rows.Cast().Select(row =>row.Field("tablename")).ToList(); } @@ -50,11 +50,11 @@ ELSE 0 END AS BIT) HasPrimaryKey - from {0}.sys.objects obj - inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 - INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id - where type='U' {1} - order by obj.name", database, tables); + from sys.objects obj + inner join dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 + INNER JOIN sys.schemas schem ON obj.schema_id=schem.schema_id + where type='U' {0} + order by obj.name", tables); #endregion DataTable dt = GetDataTable(connectionString, sql); return dt.Rows.Cast().Select(row => new DbTable @@ -79,8 +79,8 @@ ic.column_id, ic.index_column_id, ic.object_id - FROM {0}.sys.indexes idx - INNER JOIN {0}.sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id + FROM sys.indexes idx + INNER JOIN sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id WHERE idx.object_id =OBJECT_ID(@tableName) AND idx.is_primary_key=1 ) select @@ -102,14 +102,14 @@ cast(colm.precision as int) Precision, cast(colm.scale as int) Scale, prop.value Remark - from {0}.sys.columns colm - inner join {0}.sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id - left join {0}.sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id + from sys.columns colm + inner join sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id + left join sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id LEFT JOIN indexCTE ON colm.column_id=indexCTE.column_id AND colm.object_id=indexCTE.object_id where colm.object_id=OBJECT_ID(@tableName) - order by colm.column_id", database); + order by colm.column_id"); #endregion - SqlParameter param = new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{0}.{1}.{2}", database, schema, tableName) }; + SqlParameter param = new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{0}.{1}", schema, tableName) }; DataTable dt = GetDataTable(connectionString, sql, param); return dt.Rows.Cast().Select(row => new DbColumn() {