From 91b20e07f2fe9606b631d085ef2716fb6f01b8e9 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 21 Mar 2025 10:15:31 +0800 Subject: [PATCH] =?UTF-8?q?HIR=20=E7=AE=A1=E7=90=86=E7=AB=AF=E5=8C=BB?= =?UTF-8?q?=E9=99=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 10 +- .../Institution/DTO/HIRHospitalViewModel.cs | 51 ++++++++++ .../Service/Visit/PatientService.cs | 92 ++++++++++++------- .../Service/Visit/_MapConfig.cs | 3 +- IRaCIS.Core.Domain/Institution/Hospital.cs | 20 ++++ .../LiquidTemplate/EntityService.liquid | 2 +- .../LiquidTemplate/EntityViewModel.liquid | 2 +- .../LiquidTemplate/IEntityService.liquid | 4 +- 8 files changed, 138 insertions(+), 46 deletions(-) create mode 100644 IRaCIS.Core.Application/Service/Institution/DTO/HIRHospitalViewModel.cs diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 07b59d310..4e703453e 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -17946,18 +17946,10 @@ 入组流程-向CRO提交医生[Submit] - + 获取医院的配置信息 - - - - - - 配置医院信息,方便测试邮件和授权码的方式 - - diff --git a/IRaCIS.Core.Application/Service/Institution/DTO/HIRHospitalViewModel.cs b/IRaCIS.Core.Application/Service/Institution/DTO/HIRHospitalViewModel.cs new file mode 100644 index 000000000..c71805db5 --- /dev/null +++ b/IRaCIS.Core.Application/Service/Institution/DTO/HIRHospitalViewModel.cs @@ -0,0 +1,51 @@ + +//-------------------------------------------------------------------- +// 此代码由liquid模板自动生成 byzhouhang 20240909 +// 生成时间 2025-03-21 01:28:34Z +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +//-------------------------------------------------------------------- +using System; +using IRaCIS.Core.Domain.Share; +using System.Collections.Generic; +namespace IRaCIS.Core.Application.ViewModel; + +public class HIRHospitalView : HIRHospitalAddOrEdit +{ + public DateTime CreateTime { get; set; } + + public DateTime UpdateTime { get; set; } +} + + +public class HIRHospitalAddOrEdit +{ + public string HospitalName { get; set; } + public string HospitalAliasName { get; set; } + public string Country { get; set; } + public string City { get; set; } + public string Province { get; set; } + public string Address { get; set; } + public string Phone { get; set; } + + public bool IsCanConnectInternet { get; set; } + + public string HospitalCode { get; set; } + public string HospitalLogoPath { get; set; } + public int TrialKeepCount { get; set; } + + public bool IsDefault { get; set; } +} + +public class HIRHospitalQuery : PageInput +{ + public string HospitalName { get; set; } + public string Country { get; set; } + public string City { get; set; } + public string Province { get; set; } + public string Address { get; set; } + public string Phone { get; set; } +} + + + + diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 2edf49b06..6934eacee 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -67,6 +67,7 @@ namespace IRaCIS.Application.Services IRepository _subejctVisitDownloadRepository, IRepository _SCPImageUploadRepository, IRepository _userRepository, + IRepository _hIRHospitalRepository, ILogger _logger, IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IWebHostEnvironment _hostEnvironment, IStringLocalizer _localizer, IFusionCache _fusionCache @@ -81,46 +82,73 @@ namespace IRaCIS.Application.Services /// /// 获取医院的配置信息 /// - /// /// [AllowAnonymous] - public async Task GetHospitalInfo([FromServices] IOptionsMonitor options) + public async Task GetHospitalInfo() { - return options.CurrentValue; + var query = _hIRHospitalRepository.Where(t => t.IsDefault == true).ProjectTo(_mapper.ConfigurationProvider); + + return await query.FirstNotNullAsync(); } - /// - /// 配置医院信息,方便测试邮件和授权码的方式 - /// - /// - /// - [HttpPost] - public async Task UpdateHospitalInfo(SystemHospitalOption systemHospitalOption) + + [HttpPut] + public async Task UpdateDefaultHospital(Guid hirHospitalId) { - var path = $"appsettings.{_hostEnvironment.EnvironmentName}.json"; - string text = System.IO.File.ReadAllText(path); + await _hIRHospitalRepository.BatchUpdateNoTrackingAsync(t => t.Id != hirHospitalId, u => new HIRHospital() { IsDefault = false }); - // 修改 - JObject obj = JObject.Parse(text); - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalName)] = systemHospitalOption.HospitalName; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalAliasName)] = systemHospitalOption.HospitalAliasName; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.Country)] = systemHospitalOption.Country; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.City)] = systemHospitalOption.City; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.Phone)] = systemHospitalOption.Phone; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.Province)] = systemHospitalOption.Province; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.Address)] = systemHospitalOption.Address; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.IsCanConnectInternet)] = systemHospitalOption.IsCanConnectInternet; + await _hIRHospitalRepository.BatchUpdateNoTrackingAsync(t => t.Id == hirHospitalId, u => new HIRHospital() { IsDefault = true }); - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalCode)] = systemHospitalOption.HospitalCode; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalLogoPath)] = systemHospitalOption.HospitalLogoPath; - obj["SystemHospitalConfig"][nameof(SystemHospitalOption.TrialKeepCount)] = systemHospitalOption.TrialKeepCount; + return ResponseOutput.Ok(); + } - // 重新写入appsettings.json - string result = obj.ToString(); - System.IO.File.WriteAllText(path, result); + [HttpPost] + public async Task> GetHIRHospitalList(HIRHospitalQuery inQuery) + { - await _userRepository.BatchUpdateNoTrackingAsync(t => t.IsZhiZhun, t => new User() { OrganizationName = systemHospitalOption.HospitalName }); + var hIRHospitalQueryable = _hIRHospitalRepository + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.HospitalName), t => t.HospitalName.Contains(inQuery.HospitalName) || t.HospitalAliasName.Contains(inQuery.HospitalName)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Country), t => t.Country.Contains(inQuery.Country)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.City), t => t.City.Contains(inQuery.Country)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Province), t => t.Province.Contains(inQuery.Province)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Address), t => t.Address.Contains(inQuery.Address)) + .ProjectTo(_mapper.ConfigurationProvider); + + var list = await hIRHospitalQueryable.ToPagedListAsync(inQuery); + + return list; + } + + + public async Task AddOrUpdateHIRHospital(HIRHospitalAddOrEdit addOrEditHIRHospital) + { + var exp = new EntityVerifyExp() + { + VerifyExp = h => h.IsDefault.Equals(addOrEditHIRHospital.IsDefault), + + VerifyMsg = "默认医院只允许一个" + }; + + var exp2 = new EntityVerifyExp() + { + VerifyExp = h => h.HospitalCode.Equals(addOrEditHIRHospital.HospitalCode), + + VerifyMsg = "医院编码、名称不能重复" + }; + + var entity = await _hIRHospitalRepository.InsertOrUpdateAsync(addOrEditHIRHospital, true, exp, exp2); + + return ResponseOutput.Ok(entity.Id.ToString()); + + } + + + [HttpDelete("{hIRHospitalId:guid}")] + public async Task DeleteHIRHospital(Guid hIRHospitalId) + { + var success = await _hIRHospitalRepository.DeleteFromQueryAsync(t => t.Id == hIRHospitalId, true); return ResponseOutput.Ok(); } @@ -3079,7 +3107,7 @@ namespace IRaCIS.Application.Services { t.Patient.PatientIdStr, MaxStudyTime = t.Patient.SCPStudyList.Max(t => t.StudyTime), - VisitMaxSubmitTime=t.Subject.SubjectVisitList.Max(t=>t.SubmitTime) + VisitMaxSubmitTime = t.Subject.SubjectVisitList.Max(t => t.SubmitTime) }).ToListAsync(); foreach (var patient in list) @@ -3110,9 +3138,9 @@ namespace IRaCIS.Application.Services cloneInQuery.StudyDate = patient.MaxStudyTime?.ToString("yyyyMMdd") + "-"; cloneInQuery.StudyTime = patient.MaxStudyTime?.ToString("HHmmss") + "-"; } - + } - + var request = CreateStudyRequest(cloneInQuery, modality); request.OnResponseReceived += responseDelegate; diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs index d35331b07..d095ac782 100644 --- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs @@ -195,9 +195,10 @@ namespace IRaCIS.Core.Application.Service CreateMap(); - + CreateMap(); + CreateMap().ReverseMap(); } } diff --git a/IRaCIS.Core.Domain/Institution/Hospital.cs b/IRaCIS.Core.Domain/Institution/Hospital.cs index 8c63b89dd..d2792ca49 100644 --- a/IRaCIS.Core.Domain/Institution/Hospital.cs +++ b/IRaCIS.Core.Domain/Institution/Hospital.cs @@ -26,3 +26,23 @@ public class Hospital : BaseFullAuditEntity [Comment("中心Id")] public Guid? SiteId { get; set; } = Guid.Empty; } + + +public class HIRHospital : BaseFullAuditEntity +{ + public string HospitalName { get; set; } + public string HospitalAliasName { get; set; } + public string Country { get; set; } + public string City { get; set; } + public string Province { get; set; } + public string Address { get; set; } + public string Phone { get; set; } + + public bool IsCanConnectInternet { get; set; } + + public string HospitalCode { get; set; } + public string HospitalLogoPath { get; set; } + public int TrialKeepCount { get; set; } + + public bool IsDefault { get; set; } +} \ No newline at end of file diff --git a/IRaCIS.Core.Test/LiquidTemplate/EntityService.liquid b/IRaCIS.Core.Test/LiquidTemplate/EntityService.liquid index ce3910a23..c371c2227 100644 --- a/IRaCIS.Core.Test/LiquidTemplate/EntityService.liquid +++ b/IRaCIS.Core.Test/LiquidTemplate/EntityService.liquid @@ -62,7 +62,7 @@ public class {{TableName}}Service(IRepository<{{TableName}}> {{LowercaseReposito [HttpDelete("{{ '{' }}{{LowercaseTableNameId}}:guid{{ '}' }}")] public async Task Delete{{TableName}}(Guid {{LowercaseTableNameId}}) { - var success = await _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository.DeleteFromQueryAsync(t => t.Id == {{LowercaseTableNameId}},true); + var success = await {{LowercaseRepositoryName}}.DeleteFromQueryAsync(t => t.Id == {{LowercaseTableNameId}},true); return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Test/LiquidTemplate/EntityViewModel.liquid b/IRaCIS.Core.Test/LiquidTemplate/EntityViewModel.liquid index 64c03e2b6..bbda8b023 100644 --- a/IRaCIS.Core.Test/LiquidTemplate/EntityViewModel.liquid +++ b/IRaCIS.Core.Test/LiquidTemplate/EntityViewModel.liquid @@ -28,7 +28,7 @@ public class {{ TableNameAddOrEdit }} {%- endfor -%} } -public class {{ TableNameQuery }} +public class {{ TableNameQuery }}:PageInput { {%- for field in QueryListFieldList -%} {% if field.IsNullable and field.IsCSharpString == false %} diff --git a/IRaCIS.Core.Test/LiquidTemplate/IEntityService.liquid b/IRaCIS.Core.Test/LiquidTemplate/IEntityService.liquid index 788946d56..d926140c3 100644 --- a/IRaCIS.Core.Test/LiquidTemplate/IEntityService.liquid +++ b/IRaCIS.Core.Test/LiquidTemplate/IEntityService.liquid @@ -13,13 +13,13 @@ namespace IRaCIS.Core.Application.Interfaces; public interface I{{TableName}}Service { {% if IsPaged %} - Task Get{{TableName}}List({{TableNameQuery}} inQuery); + Task> Get{{TableName}}List({{TableNameQuery}} inQuery); {% else %} Task> Get{{TableName}}List({{TableNameQuery}} inQuery); {% endif %} Task AddOrUpdate{{TableName}}({{TableNameAddOrEdit}} addOrEdit{{TableName}}); - Task Delete{{TableNameView}}(Guid {{LowercaseTableNameId}}); + Task Delete{{TableName}}(Guid {{LowercaseTableNameId}}); }