IRC_NewDev
he 2023-09-21 16:34:03 +08:00
parent ceda3f8427
commit d644e150ec
6 changed files with 190 additions and 30 deletions

View File

@ -465,6 +465,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }
public List<ChangeDicomReadingQuestionAnswerDto> Answers { get; set; } public List<ChangeDicomReadingQuestionAnswerDto> Answers { get; set; }
public List<QuestionMarkInfo> QuestionMarkInfoList { get; set; } = new List<QuestionMarkInfo>();
} }
@ -707,6 +710,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetReadingQuestionAndAnswerOutDto: GetReadingTableQuestionOutDto public class GetReadingQuestionAndAnswerOutDto: GetReadingTableQuestionOutDto
{ {
public List<QuestionMarkInfo> QuestionMarkInfoList { get; set; }
public bool IsBaseLineTask { get; set; } public bool IsBaseLineTask { get; set; }
public decimal TaskNum { get; set; } public decimal TaskNum { get; set; }
@ -981,6 +986,52 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? QuestionId { get; set; } public Guid? QuestionId { get; set; }
} }
public class QuestionMarkInfo
{
/// <summary>
/// 问题Id
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// InstanceId
/// </summary>
public Guid InstanceId { get; set; }
/// <summary>
/// SeriesId
/// </summary>
public Guid SeriesId { get; set; }
/// <summary>
/// StudyId
/// </summary>
public Guid StudyId { get; set; }
/// <summary>
/// MarkTool
/// </summary>
public string MarkTool { get; set; } = string.Empty;
/// <summary>
/// PicturePath
/// </summary>
public string PicturePath { get; set; } = string.Empty;
/// <summary>
/// NumberOfFrames
/// </summary>
public int? NumberOfFrames { get; set; }
/// <summary>
/// MeasureData
/// </summary>
public string MeasureData { get; set; } = string.Empty;
}
public class GetReadingQuestionAndAnswerInDto public class GetReadingQuestionAndAnswerInDto
{ {

View File

@ -46,6 +46,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository<TrialDocument> _trialDocumentRepository; private readonly IRepository<TrialDocument> _trialDocumentRepository;
private readonly IRepository<User> _userRepository; private readonly IRepository<User> _userRepository;
private readonly IRepository<ReadingCustomTag> _readingCustomTagRepository; private readonly IRepository<ReadingCustomTag> _readingCustomTagRepository;
private readonly IRepository<ReadingTaskQuestionMark> _readingTaskQuestionMarkRepository;
private readonly IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository; private readonly IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository;
private readonly IRepository<ReadingTrialCriterionDictionary> _readingTrialCriterionDictionaryRepository; private readonly IRepository<ReadingTrialCriterionDictionary> _readingTrialCriterionDictionaryRepository;
private readonly IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository; private readonly IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository;
@ -86,6 +87,7 @@ namespace IRaCIS.Application.Services
IRepository<TrialDocument> trialDocumentRepository, IRepository<TrialDocument> trialDocumentRepository,
IRepository<User> userRepository, IRepository<User> userRepository,
IRepository<ReadingCustomTag> readingCustomTagRepository, IRepository<ReadingCustomTag> readingCustomTagRepository,
IRepository<ReadingTaskQuestionMark> readingTaskQuestionMarkRepository,
IMemoryCache cache, IMemoryCache cache,
IRepository<ReadingSystemCriterionDictionary> readingCriterionDictionaryRepository, IRepository<ReadingSystemCriterionDictionary> readingCriterionDictionaryRepository,
IRepository<ReadingTrialCriterionDictionary> readingTrialCriterionDictionaryRepository, IRepository<ReadingTrialCriterionDictionary> readingTrialCriterionDictionaryRepository,
@ -124,6 +126,7 @@ namespace IRaCIS.Application.Services
this._trialDocumentRepository = trialDocumentRepository; this._trialDocumentRepository = trialDocumentRepository;
this._userRepository = userRepository; this._userRepository = userRepository;
this._readingCustomTagRepository = readingCustomTagRepository; this._readingCustomTagRepository = readingCustomTagRepository;
this._readingTaskQuestionMarkRepository = readingTaskQuestionMarkRepository;
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
this._tumorAssessmentRepository = tumorAssessmentRepository; this._tumorAssessmentRepository = tumorAssessmentRepository;
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
@ -898,7 +901,8 @@ namespace IRaCIS.Application.Services
result.PublicPage = questionPage.PublicPage; result.PublicPage = questionPage.PublicPage;
result.BlindName = visitTaskInfo.TaskBlindName; result.BlindName = visitTaskInfo.TaskBlindName;
result.TaskNum = visitTaskInfo.VisitTaskNum; result.TaskNum = visitTaskInfo.VisitTaskNum;
result.QuestionMarkInfoList=await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo<QuestionMarkInfo>(_mapper.ConfigurationProvider)
.ToListAsync();
return (result, new return (result, new
{ {
readingTaskState = visitTaskInfo.ReadingTaskState, readingTaskState = visitTaskInfo.ReadingTaskState,
@ -1530,6 +1534,25 @@ namespace IRaCIS.Application.Services
}).ToList(); }).ToList();
await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer); await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer);
await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId);
List<ReadingTaskQuestionMark> 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(); await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
return ResponseOutput.Ok(true); return ResponseOutput.Ok(true);
} }

View File

@ -94,16 +94,16 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.Value, u => u.MapFrom(s => s.Dictionary.Value)) .ForMember(d => d.Value, u => u.MapFrom(s => s.Dictionary.Value))
.ForMember(d => d.ValueCN, u => u.MapFrom(s => s.Dictionary.ValueCN)); .ForMember(d => d.ValueCN, u => u.MapFrom(s => s.Dictionary.ValueCN));
CreateMap<ReadingTaskQuestionMark, QuestionMarkInfo>();
//CreateMap<ReadingClinicalDataView, GetReadingClinicalDataListOutDto>();
// CreateMap<ReadingClinicalData, GetReadingClinicalDataListOutDto>()
//.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<ReadingClinicalDataView, GetReadingClinicalDataListOutDto>(); CreateMap<ReadingClinicalDataPDF, GetReadingClinicalDataPDFListOutDto>();
// CreateMap<ReadingClinicalData, GetReadingClinicalDataListOutDto>()
//.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<ReadingClinicalDataPDF, GetReadingClinicalDataPDFListOutDto>();
//.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList())); //.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList()));

View File

@ -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
{
///<summary>
///
///</summary>
[Table("ReadingTaskQuestionMark")]
public class ReadingTaskQuestionMark : Entity, IAuditAdd
{
/// <summary>
/// 任务Id
/// </summary>
[Required]
public Guid VisitTaskId { get; set; }
/// <summary>
/// 问题Id
/// </summary>
[Required]
public Guid QuestionId { get; set; }
/// <summary>
/// InstanceId
/// </summary>
[Required]
public Guid InstanceId { get; set; }
/// <summary>
/// SeriesId
/// </summary>
[Required]
public Guid SeriesId { get; set; }
/// <summary>
/// StudyId
/// </summary>
[Required]
public Guid StudyId { get; set; }
/// <summary>
/// MarkTool
/// </summary>
public string MarkTool { get; set; }
/// <summary>
/// PicturePath
/// </summary>
public string PicturePath { get; set; }
/// <summary>
/// NumberOfFrames
/// </summary>
public int? NumberOfFrames { get; set; }
/// <summary>
/// MeasureData
/// </summary>
[Required]
public string MeasureData { get; set; } = string.Empty;
/// <summary>
/// CreateTime
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
public Guid CreateUserId { get; set; }
}
}

View File

@ -287,6 +287,7 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilter { get; set; } public virtual DbSet<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilter { get; set; }
public virtual DbSet<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilter { get; set; } public virtual DbSet<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilter { get; set; }
public virtual DbSet<ReadingTaskQuestionMark> ReadingTaskQuestionMark { get; set; }
//public virtual DbSet<TrialClinicalDataCriterion> TrialClinicalDataCriterion { get; set; } //public virtual DbSet<TrialClinicalDataCriterion> TrialClinicalDataCriterion { get; set; }

View File

@ -1,10 +1,10 @@
<#+ <#+
public class config 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 ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.IRC;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
public static readonly string DbDatabase = "IRaCIS_New_Tet"; public static readonly string DbDatabase = "Test.IRC";
//表名称用字符串,拼接 //表名称用字符串,拼接
public static readonly string TableName = "ReadingCustomTag"; public static readonly string TableName = "ReadingTaskQuestionMark";
//具体文件里面 例如service 可以配置是否分页 //具体文件里面 例如service 可以配置是否分页
} }
#> #>
@ -21,12 +21,12 @@
} }
string sql = string.Format(@"SELECT string sql = string.Format(@"SELECT
obj.name tablename obj.name tablename
from {0}.sys.objects obj from sys.objects obj
inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 inner join 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 INNER JOIN 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') 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' {1} where type='U' {0}
order by obj.name", database,tables); order by obj.name",tables);
DataTable dt = GetDataTable(connectionString, sql); DataTable dt = GetDataTable(connectionString, sql);
return dt.Rows.Cast<DataRow>().Select(row =>row.Field<string>("tablename")).ToList(); return dt.Rows.Cast<DataRow>().Select(row =>row.Field<string>("tablename")).ToList();
} }
@ -50,11 +50,11 @@
ELSE 0 ELSE 0
END END
AS BIT) HasPrimaryKey AS BIT) HasPrimaryKey
from {0}.sys.objects obj from sys.objects obj
inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 inner join 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 INNER JOIN sys.schemas schem ON obj.schema_id=schem.schema_id
where type='U' {1} where type='U' {0}
order by obj.name", database, tables); order by obj.name", tables);
#endregion #endregion
DataTable dt = GetDataTable(connectionString, sql); DataTable dt = GetDataTable(connectionString, sql);
return dt.Rows.Cast<DataRow>().Select(row => new DbTable return dt.Rows.Cast<DataRow>().Select(row => new DbTable
@ -79,8 +79,8 @@
ic.column_id, ic.column_id,
ic.index_column_id, ic.index_column_id,
ic.object_id ic.object_id
FROM {0}.sys.indexes idx FROM sys.indexes idx
INNER JOIN {0}.sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id 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 WHERE idx.object_id =OBJECT_ID(@tableName) AND idx.is_primary_key=1
) )
select select
@ -102,14 +102,14 @@
cast(colm.precision as int) Precision, cast(colm.precision as int) Precision,
cast(colm.scale as int) Scale, cast(colm.scale as int) Scale,
prop.value Remark prop.value Remark
from {0}.sys.columns colm from 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 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 {0}.sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_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 LEFT JOIN indexCTE ON colm.column_id=indexCTE.column_id AND colm.object_id=indexCTE.object_id
where colm.object_id=OBJECT_ID(@tableName) where colm.object_id=OBJECT_ID(@tableName)
order by colm.column_id", database); order by colm.column_id");
#endregion #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); DataTable dt = GetDataTable(connectionString, sql, param);
return dt.Rows.Cast<DataRow>().Select(row => new DbColumn() return dt.Rows.Cast<DataRow>().Select(row => new DbColumn()
{ {