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}});
}