@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc ;
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.EntityFrameworkCore ;
using Microsoft.Extensions.Configuration ;
using Microsoft.Extensions.Logging ;
@ -12,6 +13,7 @@ using Shentun.Peis.MyUser;
using Shentun.Peis.PatientRegisters ;
using Shentun.Peis.PlugIns ;
using Shentun.Peis.RegisterCheckItems ;
using Shentun.Peis.TransToWebPeiss ;
using SqlSugar ;
using System ;
using System.Collections.Generic ;
@ -27,6 +29,8 @@ using Volo.Abp.Uow;
namespace Shentun.Peis.TransToWebPeis
{
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class TransToWebPeisAppService : ApplicationService
{
private readonly IRepository < DeviceType , Guid > _deviceTypeRepository ;
@ -44,6 +48,8 @@ namespace Shentun.Peis.TransToWebPeis
private readonly IRepository < CustomerOrgGroupDetail > _customerOrgGroupDetailRepository ;
private readonly IRepository < PatientRegister , Guid > _patientRegisterRepository ;
private readonly IRepository < RegisterCheck , Guid > _registerCheckRepository ;
private readonly IRepository < PatientRegisterExter > _patientRegisterExterRepository ;
public TransToWebPeisAppService (
IRepository < ItemType , Guid > itemTypeRepository ,
ILogger < TransToWebPeisAppService > logger ,
@ -58,7 +64,8 @@ namespace Shentun.Peis.TransToWebPeis
IRepository < CustomerOrgGroup , Guid > customerOrgGroupRepository ,
IRepository < CustomerOrgGroupDetail > customerOrgGroupDetailRepository ,
IRepository < PatientRegister , Guid > patientRegisterRepository ,
IRepository < RegisterCheck , Guid > registerCheckRepository )
IRepository < RegisterCheck , Guid > registerCheckRepository ,
IRepository < PatientRegisterExter > patientRegisterExterRepository )
{
_itemTypeRepository = itemTypeRepository ;
_logger = logger ;
@ -74,6 +81,7 @@ namespace Shentun.Peis.TransToWebPeis
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository ;
_patientRegisterRepository = patientRegisterRepository ;
_registerCheckRepository = registerCheckRepository ;
_patientRegisterExterRepository = patientRegisterExterRepository ;
}
/// <summary>
/// 上传基础资料
@ -146,27 +154,22 @@ namespace Shentun.Peis.TransToWebPeis
}
///// <summary>
///// 上传单位信息
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/TransToWebPeis/TransCustomerOrg")]
//public async Task TransCustomerOrgWithDetailAsync()
//{
// //customer_org,customer_org_register
//}
///// <summary>
///// 上传人员体检信息
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/TransToWebPeis/TransPatientRegister")]
//public async Task TransPatientRegisterAsync()
//{
// //patient,patient_register,register_check,register_check_asbitem
// //register_check_item,register_check_picture,register_check_summary,register_check_suggestion
// //sum_summary_header,sum_summary_content,sum_suggestion_header,sum_suggestion_content,sum_diagnosis,
//}
/// <summary>
/// 上传体检报告
/// </summary>
/// <returns></returns>
[HttpPost("api/app/TransToWebPeis/UploadPeisReport")]
public async Task UploadPeisReportAsync ( UploadPeisReportIuputDto input )
{
//同步数据
await TransPatientRegisterByPatientRegisterIdAsync ( new PatientRegisterIdInputDto { PatientRegisterId = input . PatientRegisterId } ) ;
//上传报告
}
/// <summary>
/// 根据人员登记ID上传人员体检信息
/// </summary>
@ -190,13 +193,15 @@ namespace Shentun.Peis.TransToWebPeis
} ) ;
var IsPatient = ( await WebDb . Ado . GetDataTableAsync ( $"select patient_register_id from patient_register where patient_register_id='{input.PatientRegisterId}'" ) ) . Rows . Count ;
if ( IsPatient > 0 )
{
await DeletePatientRegisterWithDetailAsync ( WebDb , input . PatientRegisterId ) ;
}
await TransPatientRegisterWithDetailAsync ( WebDb , input . PatientRegisterId ) ;
}
}
/// <summary>
/// 撤销上传人员体检信息
@ -206,7 +211,22 @@ namespace Shentun.Peis.TransToWebPeis
[HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")]
public async Task CancelTransPatientRegisterByPatientRegisterIdAsync ( PatientRegisterIdInputDto input )
{
var thirdInterfaces = await _thirdInterfaceRepository . GetListAsync ( o = > o . ThirdInterfaceType = =
ThirdInterfaceTypeFlag . TranToWebPeis ) ;
foreach ( var thirdInterface in thirdInterfaces )
{
var connectString = GetConnectionStrings ( thirdInterface . ParmValue ) ;
SqlSugarClient WebDb = new SqlSugarClient ( new ConnectionConfig ( )
{
ConnectionString = connectString ,
DbType = SqlSugar . DbType . PostgreSQL ,
IsAutoCloseConnection = true
} ) ;
await DeletePatientRegisterWithDetailAsync ( WebDb , input . PatientRegisterId ) ;
}
}
/// <summary>
@ -674,6 +694,14 @@ namespace Shentun.Peis.TransToWebPeis
. Where ( m = > m . Id = = PatientRegisterId ) . FirstOrDefault ( ) ;
if ( patientRegisterEnt ! = null )
{
if ( patientRegisterEnt . CompleteFlag ! = PatientRegisterCompleteFlag . SumCheck )
throw new UserFriendlyException ( "人员未总检,不能同步" ) ;
var IsPatient = ( await WebDb . Ado . GetDataTableAsync ( $"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'" ) ) . Rows . Count ;
if ( IsPatient = = 0 )
{
@ -713,16 +741,21 @@ namespace Shentun.Peis.TransToWebPeis
#region 插入人员登记信息
string third_register_id = "" ;
var patientRegisterExterEnt = await _patientRegisterExterRepository . FirstOrDefaultAsync ( f = > f . PatientRegisterId = = PatientRegisterId ) ;
if ( patientRegisterExterEnt ! = null & & ! string . IsNullOrWhiteSpace ( patientRegisterExterEnt . Planuserid ) )
third_register_id = patientRegisterExterEnt . Planuserid ;
await WebDb . Ado . ExecuteCommandAsync ( "INSERT INTO public.patient_register(patient_register_id, patient_register_no, patient_id, medical_times, customer_org_id, customer_org_group_id, medical_package_id," +
"patient_name,sex_id, birth_date, age, job_card_no, medical_card_no, marital_status_id, medical_type_id, personnel_type_id, job_post, job_title, photo," +
" sex_hormone_term_id, interpose_measure, medical_conclusion_id, complete_flag, is_medical_start, medical_start_date, summary_date, is_audit, audit_date, is_vip, third_info,remark,medical_center_id," +
"customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id) VALUES " +
"customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id,third_register_id ) VALUES " +
"(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," +
"@patient_name,@sex_id,CAST(@birth_date as timestamp),@age,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," +
"@sex_hormone_term_id::uuid,@interpose_measure,@medical_conclusion_id::uuid,@complete_flag,@is_medical_start,@medical_start_date,CAST(@summary_date as timestamp),@is_audit,CAST(@audit_date as timestamp),@is_vip,@third_info,@remark,@medical_center_id," +
"@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id);" ,
"@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id,@third_register_id );" ,
new List < SugarParameter > ( ) {
new SugarParameter ( "patient_register_id" , patientRegisterEnt . Id ) ,
new SugarParameter ( "patient_register_id" , patientRegisterEnt . Id ) ,
new SugarParameter ( "patient_register_no" , patientRegisterEnt . PatientRegisterNo ) ,
new SugarParameter ( "patient_id" , patientRegisterEnt . PatientId ) ,
new SugarParameter ( "medical_times" , patientRegisterEnt . MedicalTimes ) ,
@ -762,7 +795,8 @@ namespace Shentun.Peis.TransToWebPeis
new SugarParameter ( "last_modifier_id" , patientRegisterEnt . LastModifierId ) ,
new SugarParameter ( "audit_doctor_id" , patientRegisterEnt . AuditDoctorId ) ,
new SugarParameter ( "summary_doctor_id" , patientRegisterEnt . SummaryDoctorId ) ,
new SugarParameter ( "his_patient_id" , patientRegisterEnt . HisPatientId )
new SugarParameter ( "his_patient_id" , patientRegisterEnt . HisPatientId ) ,
new SugarParameter ( "third_register_id" , third_register_id )
} ) ;
#endregion
@ -1053,6 +1087,63 @@ namespace Shentun.Peis.TransToWebPeis
}
#endregion
}
else
{
throw new UserFriendlyException ( "数据不存在" ) ;
}
await WebDb . Ado . CommitTranAsync ( ) ;
}
catch ( Exception ex )
{
await WebDb . Ado . RollbackTranAsync ( ) ;
throw new UserFriendlyException ( ex . ToString ( ) ) ;
}
}
#endregion
#region 撤销、删除
/// <summary>
/// 人员导入
/// </summary>
/// <param name="WebDb"></param>
/// <param name="PatientRegisterId"></param>
/// <returns></returns>
private async Task DeletePatientRegisterWithDetailAsync ( SqlSugarClient WebDb , Guid PatientRegisterId )
{
try
{
await WebDb . Ado . BeginTranAsync ( ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from sum_diagnosis where patient_register_id='{PatientRegisterId}'" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from sum_summary_content where sum_summary_header_id in (select sum_summary_header_id from sum_summary_header where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from sum_summary_header where patient_register_id='{PatientRegisterId}'" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from sum_suggestion_content where sum_suggestion_header_id in (select sum_suggestion_header_id from sum_suggestion_header where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from sum_suggestion_header where patient_register_id='{PatientRegisterId}'" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check_asbitem where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check_item where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check_picture where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check_suggestion where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check_summary where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from register_check where patient_register_id='{PatientRegisterId}'" ) ;
await WebDb . Ado . ExecuteCommandAsync ( $"delete from patient_register where patient_register_id='{PatientRegisterId}'" ) ;
await WebDb . Ado . CommitTranAsync ( ) ;
}
catch ( Exception ex )