HIR 管理端医院修改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
5a99f476f9
commit
91b20e07f2
|
@ -17946,18 +17946,10 @@
|
||||||
<member name="M:IRaCIS.Application.Interfaces.ITrialEnrollmentService.ConfirmReviewer(System.Guid,System.Guid[],System.Int32)">
|
<member name="M:IRaCIS.Application.Interfaces.ITrialEnrollmentService.ConfirmReviewer(System.Guid,System.Guid[],System.Int32)">
|
||||||
<summary>入组流程-向CRO提交医生[Submit]</summary>
|
<summary>入组流程-向CRO提交医生[Submit]</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.PatientService.GetHospitalInfo(Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption})">
|
<member name="M:IRaCIS.Application.Services.PatientService.GetHospitalInfo">
|
||||||
<summary>
|
<summary>
|
||||||
获取医院的配置信息
|
获取医院的配置信息
|
||||||
</summary>
|
</summary>
|
||||||
<param name="options"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Application.Services.PatientService.UpdateHospitalInfo(IRaCIS.Application.Contracts.SystemHospitalOption)">
|
|
||||||
<summary>
|
|
||||||
配置医院信息,方便测试邮件和授权码的方式
|
|
||||||
</summary>
|
|
||||||
<param name="systemHospitalOption"></param>
|
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.PatientService.GetSystemConfirmedCreiterionList(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionSystem})">
|
<member name="M:IRaCIS.Application.Services.PatientService.GetSystemConfirmedCreiterionList(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionSystem})">
|
||||||
|
|
|
@ -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; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
|
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
|
||||||
IRepository<SCPImageUpload> _SCPImageUploadRepository,
|
IRepository<SCPImageUpload> _SCPImageUploadRepository,
|
||||||
IRepository<User> _userRepository,
|
IRepository<User> _userRepository,
|
||||||
|
IRepository<HIRHospital> _hIRHospitalRepository,
|
||||||
ILogger<PatientService> _logger,
|
ILogger<PatientService> _logger,
|
||||||
IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IWebHostEnvironment _hostEnvironment, IStringLocalizer _localizer, IFusionCache _fusionCache
|
IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IWebHostEnvironment _hostEnvironment, IStringLocalizer _localizer, IFusionCache _fusionCache
|
||||||
|
|
||||||
|
@ -81,46 +82,73 @@ namespace IRaCIS.Application.Services
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取医院的配置信息
|
/// 获取医院的配置信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<SystemHospitalOption> GetHospitalInfo([FromServices] IOptionsMonitor<SystemHospitalOption> options)
|
public async Task<HIRHospitalView> GetHospitalInfo()
|
||||||
{
|
{
|
||||||
return options.CurrentValue;
|
var query = _hIRHospitalRepository.Where(t => t.IsDefault == true).ProjectTo<HIRHospitalView>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
|
return await query.FirstNotNullAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 配置医院信息,方便测试邮件和授权码的方式
|
[HttpPut]
|
||||||
/// </summary>
|
public async Task<IResponseOutput> UpdateDefaultHospital(Guid hirHospitalId)
|
||||||
/// <param name="systemHospitalOption"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<IResponseOutput> UpdateHospitalInfo(SystemHospitalOption systemHospitalOption)
|
|
||||||
{
|
{
|
||||||
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 });
|
||||||
|
|
||||||
// 修改
|
await _hIRHospitalRepository.BatchUpdateNoTrackingAsync(t => t.Id == hirHospitalId, u => new HIRHospital() { IsDefault = true });
|
||||||
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;
|
|
||||||
|
|
||||||
obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalCode)] = systemHospitalOption.HospitalCode;
|
return ResponseOutput.Ok();
|
||||||
obj["SystemHospitalConfig"][nameof(SystemHospitalOption.HospitalLogoPath)] = systemHospitalOption.HospitalLogoPath;
|
}
|
||||||
obj["SystemHospitalConfig"][nameof(SystemHospitalOption.TrialKeepCount)] = systemHospitalOption.TrialKeepCount;
|
|
||||||
|
|
||||||
// 重新写入appsettings.json
|
[HttpPost]
|
||||||
string result = obj.ToString();
|
public async Task<PageOutput<HIRHospitalView>> GetHIRHospitalList(HIRHospitalQuery inQuery)
|
||||||
System.IO.File.WriteAllText(path, result);
|
{
|
||||||
|
|
||||||
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<HIRHospitalView>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
|
var list = await hIRHospitalQueryable.ToPagedListAsync(inQuery);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<IResponseOutput> AddOrUpdateHIRHospital(HIRHospitalAddOrEdit addOrEditHIRHospital)
|
||||||
|
{
|
||||||
|
var exp = new EntityVerifyExp<HIRHospital>()
|
||||||
|
{
|
||||||
|
VerifyExp = h => h.IsDefault.Equals(addOrEditHIRHospital.IsDefault),
|
||||||
|
|
||||||
|
VerifyMsg = "默认医院只允许一个"
|
||||||
|
};
|
||||||
|
|
||||||
|
var exp2 = new EntityVerifyExp<HIRHospital>()
|
||||||
|
{
|
||||||
|
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<IResponseOutput> DeleteHIRHospital(Guid hIRHospitalId)
|
||||||
|
{
|
||||||
|
var success = await _hIRHospitalRepository.DeleteFromQueryAsync(t => t.Id == hIRHospitalId, true);
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
@ -3079,7 +3107,7 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
t.Patient.PatientIdStr,
|
t.Patient.PatientIdStr,
|
||||||
MaxStudyTime = t.Patient.SCPStudyList.Max(t => t.StudyTime),
|
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();
|
}).ToListAsync();
|
||||||
|
|
||||||
foreach (var patient in list)
|
foreach (var patient in list)
|
||||||
|
@ -3110,9 +3138,9 @@ namespace IRaCIS.Application.Services
|
||||||
cloneInQuery.StudyDate = patient.MaxStudyTime?.ToString("yyyyMMdd") + "-";
|
cloneInQuery.StudyDate = patient.MaxStudyTime?.ToString("yyyyMMdd") + "-";
|
||||||
cloneInQuery.StudyTime = patient.MaxStudyTime?.ToString("HHmmss") + "-";
|
cloneInQuery.StudyTime = patient.MaxStudyTime?.ToString("HHmmss") + "-";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var request = CreateStudyRequest(cloneInQuery, modality);
|
var request = CreateStudyRequest(cloneInQuery, modality);
|
||||||
request.OnResponseReceived += responseDelegate;
|
request.OnResponseReceived += responseDelegate;
|
||||||
|
|
|
@ -195,9 +195,10 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
CreateMap<SCPSeries, PatientSeriesDTO>();
|
CreateMap<SCPSeries, PatientSeriesDTO>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CreateMap<HIRHospital, HIRHospitalView>();
|
||||||
|
CreateMap<HIRHospital, HIRHospitalAddOrEdit>().ReverseMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,3 +26,23 @@ public class Hospital : BaseFullAuditEntity
|
||||||
[Comment("中心Id")]
|
[Comment("中心Id")]
|
||||||
public Guid? SiteId { get; set; } = Guid.Empty;
|
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; }
|
||||||
|
}
|
|
@ -62,7 +62,7 @@ public class {{TableName}}Service(IRepository<{{TableName}}> {{LowercaseReposito
|
||||||
[HttpDelete("{{ '{' }}{{LowercaseTableNameId}}:guid{{ '}' }}")]
|
[HttpDelete("{{ '{' }}{{LowercaseTableNameId}}:guid{{ '}' }}")]
|
||||||
public async Task<IResponseOutput> Delete{{TableName}}(Guid {{LowercaseTableNameId}})
|
public async Task<IResponseOutput> 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();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class {{ TableNameAddOrEdit }}
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class {{ TableNameQuery }}
|
public class {{ TableNameQuery }}:PageInput
|
||||||
{
|
{
|
||||||
{%- for field in QueryListFieldList -%}
|
{%- for field in QueryListFieldList -%}
|
||||||
{% if field.IsNullable and field.IsCSharpString == false %}
|
{% if field.IsNullable and field.IsCSharpString == false %}
|
||||||
|
|
|
@ -13,13 +13,13 @@ namespace IRaCIS.Core.Application.Interfaces;
|
||||||
public interface I{{TableName}}Service
|
public interface I{{TableName}}Service
|
||||||
{
|
{
|
||||||
{% if IsPaged %}
|
{% if IsPaged %}
|
||||||
Task<PageOutput<{{TableNameView}}> Get{{TableName}}List({{TableNameQuery}} inQuery);
|
Task<PageOutput<{{TableNameView}}>> Get{{TableName}}List({{TableNameQuery}} inQuery);
|
||||||
{% else %}
|
{% else %}
|
||||||
Task<List<{{TableNameView}}>> Get{{TableName}}List({{TableNameQuery}} inQuery);
|
Task<List<{{TableNameView}}>> Get{{TableName}}List({{TableNameQuery}} inQuery);
|
||||||
{% endif %}
|
{% endif %}
|
||||||
Task<IResponseOutput> AddOrUpdate{{TableName}}({{TableNameAddOrEdit}} addOrEdit{{TableName}});
|
Task<IResponseOutput> AddOrUpdate{{TableName}}({{TableNameAddOrEdit}} addOrEdit{{TableName}});
|
||||||
|
|
||||||
Task<IResponseOutput> Delete{{TableNameView}}(Guid {{LowercaseTableNameId}});
|
Task<IResponseOutput> Delete{{TableName}}(Guid {{LowercaseTableNameId}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue