@ -376,7 +376,7 @@ namespace Shentun.Pacs.PacsBusiness
}
/// <summary>
/// 获取pacs检查项目
/// 获取pacs检查项目 pacs看图界面列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -811,6 +811,7 @@ namespace Shentun.Pacs.PacsBusiness
#region 新流程增加接口
///// <summary>
///// 导入老系统人员、项目数据,并自动加入worklist
///// </summary>
@ -818,8 +819,9 @@ namespace Shentun.Pacs.PacsBusiness
///// <returns></returns>
///// <exception cref="UserFriendlyException"></exception>
//[HttpPost("api/app/PacsBusiness/ImportPeisCheckDataByCheckRequestNo")]
//public async Task ImportPeisCheckDataByCheckRequestNoAsync(ImportPeisCheckDataByCheckRequestNoInputDto input)
//public async Task<PatientRegisterOrNoDto> ImportPeisCheckDataByCheckRequestNoAsync(ImportPeisCheckDataByCheckRequestNoInputDto input)
//{
// var entDto = new PatientRegisterOrNoDto();
// if (string.IsNullOrWhiteSpace(input.CheckRequestNo))
// {
@ -837,6 +839,31 @@ namespace Shentun.Pacs.PacsBusiness
// throw new UserFriendlyException("预检AET不能为空");
// }
// var pacsDeviceEnt = await _deviceRepository.FirstOrDefaultAsync(f => f.Id == Guid.Parse(input.DeviceId));
// if (pacsDeviceEnt == null)
// {
// throw new UserFriendlyException("设备id不存在");
// }
// Guid deviceTypeColumnReferenId = Guid.Parse(_configuration.GetValue<string>("OldPeis:DeviceTypeColumnReferenId", Guid.Empty.ToString()));
// var deviceTypeCodeValues = await _columnReferenceCodeManager.GetInterfaceCodeValueAsync(deviceTypeColumnReferenId, pacsDeviceEnt.DeviceTypeId.ToString());
// if (!deviceTypeCodeValues.Any())
// {
// throw new UserFriendlyException($"仪器编号:{input.DeviceId}所属的仪器类型没有对照");
// }
// if (deviceTypeCodeValues.Count() > 1)
// {
// throw new UserFriendlyException($"仪器编号:{input.DeviceId}所属的仪器类型有多个体检系统的仪器类型进行了对照");
// }
// //对照中体检系统的仪器类型,用于检索数据
// string oldDeviceTypeId = deviceTypeCodeValues.First();
// string connectionString = _configuration.GetValue<string>("OldPeis:ConnectionStrings", "");
// SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig()
// {
@ -849,222 +876,251 @@ namespace Shentun.Pacs.PacsBusiness
// var oldRegisterAsbitemList = await oldDb.Ado.GetDataTableAsync("select a.name as patient_name,a.sex_id,a.mobile_telephone,a.telephone," +
// "a.age,a.id_card_no,a.marital_status_id,a.complete_flag," +
// "b.patient_register_id,b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode,c.item_id " +
// "b.patient_register_id,b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode " +
// "from patient_register as a left join register_asbitem as b on a.patient_register_id=b.patient_register_id " +
// "left join register_item as c on b.asbitem_id=c.asbitem_id and a.patient_register_id=c.patient_register_id " +
// $" where b.print_barcode_no='{input.CheckRequestNo}'");
// " left join asbitem as c on b.asbitem_id=c.asbitem_id " +
// $" where b.print_barcode_no='{input.CheckRequestNo}' and c.device_type_id='{oldDeviceTypeId}' ");
// if (oldRegisterAsbitemList.Rows.Count > 0)
// {
// var registerCheckFirst = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
// join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
// join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
// where registerCheck.CheckRequestNo == input.CheckRequestNo
// select new
// {
// patientRegister,
// registerCheck
// }).FirstOrDefault();
// if (registerCheckFirst == null)
// {
// #region 插入人员
// #region 档案
// var patientName = oldRegisterAsbitemList.Rows[0]["patient_name"].ToString();
// var sexId = ConvertSex(oldRegisterAsbitemList.Rows[0]["sex_id"].ToString());
// var mobileTelephone = oldRegisterAsbitemList.Rows[0]["mobile_telephone"].ToString();
// var telephone = oldRegisterAsbitemList.Rows[0]["telephone"].ToString();
// var idNo = oldRegisterAsbitemList.Rows[0]["id_card_no"].ToString();
// short? age = string.IsNullOrWhiteSpace(oldRegisterAsbitemList.Rows[0]["age"].ToString()) ? null : Convert.ToInt16(oldRegisterAsbitemList.Rows[0]["age"].ToString());
// var maritalStatusId = oldRegisterAsbitemList.Rows[0]["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(oldRegisterAsbitemList.Rows[0]["marital_status_id"].ToString());
// var patientQuery = await _patientRepository.GetQueryableAsync();
// patientQuery = patientQuery.Where(m => m.DisplayName == patientName && m.SexId == sexId);
// if (!string.IsNullOrWhiteSpace(mobileTelephone))
// {
// patientQuery = patientQuery.Where(m => m.MobileTelephone == mobileTelephone);
// }
// if (!string.IsNullOrWhiteSpace(idNo))
// {
// patientQuery = patientQuery.Where(m => m.IdNo == idNo);
// }
// //档案
// var patientEnt = await patientQuery.FirstOrDefaultAsync();
// if (patientEnt == null)
// {
// patientEnt = new Patient(GuidGenerator.Create())
// {
// BirthDate = null,
// BirthPlaceId = null,
// DisplayName = patientName,
// Email = null,
// IdNo = idNo,
// MaritalStatusId = maritalStatusId,
// MedicalCenterId = Guid.Empty,
// MobileTelephone = mobileTelephone,
// NationId = null,
// PatientNo = await _manager.CreatePatientNo(Guid.Empty),
// PatientPassword = "",
// PostalCode = "",
// SexId = sexId,
// SimpleCode = LanguageConverter.GetPYSimpleCode(patientName),
// Telephone = telephone
// };
// patientEnt = await _patientRepository.InsertAsync(patientEnt, true);
// }
// #endregion
// #region 人员
// var patientRegisterEnt = new PatientRegister(GuidGenerator.Create())
// {
// Age = age,
// CompleteFlag = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["complete_flag"].ToString()),
// CustomerOrgId = GuidFlag.PersonCustomerOrgId,
// CustomerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId,
// DeviceId = Guid.Parse(input.DeviceId),
// GuidePrintTimes = 0,
// IsAudit = 'N',
// IsLock = 'N',
// IsMedicalStart = 'Y',
// IsNameHide = 'N',
// IsPhoneFollow = 'N',
// IsVip = 'N',
// IsRecoverGuide = 'N',
// IsUpload = 'N',
// IsUploadAppoint = 'N',
// MaritalStatusId = maritalStatusId,
// MedicalCenterId = Guid.Empty,
// MedicalTimes = 0,
// PatientId = patientEnt.Id,
// PatientName = patientName,
// ReportPrintTimes = 0,
// PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty),
// SendFlag = '0',
// SexId = sexId
// };
// patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true);
// #endregion
// #region 登记项目 明细项目
// string oldAsbitemId = oldRegisterAsbitemList.Rows[0]["asbitem_id"].ToString();
// var oldAsbitemPrice = Convert.ToDecimal(oldRegisterAsbitemList.Rows[0]["price"].ToString());
// var oldAsbitemStandardPrice = Convert.ToDecimal(oldRegisterAsbitemList.Rows[0]["standard_price"].ToString());
// Guid asbitemColumnReferenId = Guid.Parse(_configuration.GetValue<string>("OldPeis:AsbitemColumnReferenId", Guid.Empty.ToString()));
// Guid itemColumnReferenId = Guid.Parse(_configuration.GetValue<string>("OldPeis:ItemColumnReferenId", Guid.Empty.ToString()));
// var asbitemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(asbitemColumnReferenId, oldAsbitemId);
// if (!asbitemCodeValues.Any())
// {
// throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}没有对照");
// }
// if (asbitemCodeValues.Count() > 1)
// {
// throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
// }
// Guid asbitemId = Guid.Parse(asbitemCodeValues.First()); //pacs系统组合项目id
// //检查
// var registerCheckEnt = new RegisterCheck(GuidGenerator.Create())
// {
// CheckRequestNo = input.CheckRequestNo,
// CheckRequestPrintTimes = 0,
// CompleteFlag = RegisterCheckCompleteFlag.UnChecked,
// IsAudit = 'N',
// IsLock = 'N',
// IsPacsCheck = 'N',
// IsSignIn = 'Y',
// PatientRegisterId = patientRegisterEnt.Id,
// ScheduledAet = input.ScheduledAet,
// WorklistFlag = '1',
// WorklistPreCheckDate = DateTime.Now
// };
// registerCheckEnt = await _registerCheckRepository.InsertAsync(registerCheckEnt, true);
// //组合项目
// var registerCheckAsbitemEnt = new RegisterCheckAsbitem(GuidGenerator.Create())
// {
// Amount = 1,
// AsbitemId = asbitemId,
// ChargePrice = oldAsbitemPrice,
// StandardPrice = oldAsbitemStandardPrice,
// IsCharge = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["charge_flag"].ToString()),
// OldAsbitemId = oldAsbitemId,
// OldPatientRegisterId = oldRegisterAsbitemList.Rows[0]["patient_register_id"].ToString(),
// PatientRegisterId = patientRegisterEnt.Id,
// PayTypeFlag = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["payment_mode"].ToString()),
// RegisterCheckId = registerCheckEnt.Id
// };
// registerCheckAsbitemEnt = await _registerCheckAsbitemRepository.InsertAsync(registerCheckAsbitemEnt, true);
// //明细项目
// List<RegisterCheckItem> registerCheckItemList = new List<RegisterCheckItem>();
// foreach (DataRow row in oldRegisterAsbitemList.Rows)
// {
// string oldItemId = row["item_id"].ToString();
// var itemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(itemColumnReferenId, oldItemId);
// if (!itemCodeValues.Any())
// {
// throw new UserFriendlyException($"项目编号:{oldItemId}没有对照");
// }
// if (itemCodeValues.Count() > 1)
// {
// throw new UserFriendlyException($"项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
// }
// Guid itemId = Guid.Parse(itemCodeValues.First()); //pacs系统项目id
// if (registerCheckItemList.Count(c => c.ItemId == itemId) == 0)
// {
// registerCheckItemList.Add(new RegisterCheckItem
// {
// ItemId = itemId,
// RegisterCheckId = registerCheckEnt.Id,
// });
// }
// }
// if (registerCheckItemList.Any())
// {
// await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
// }
// #endregion
// #endregion
// }
// else
// {
// //更新设备id
// registerCheckFirst.patientRegister.DeviceId = Guid.Parse(input.DeviceId);
// await _patientRegisterRepository.UpdateAsync(registerCheckFirst.patientRegister);
// }
// Guid tempPatientRegisterId = Guid.Empty;
// var registerCheckList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
// join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
// join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
// join device in await _deviceRepository.GetQueryableAsync() on patientRegister.DeviceId equals device.Id
// where registerCheck.CheckRequestNo == input.CheckRequestNo && device.DeviceTypeId == pacsDeviceEnt.DeviceTypeId
// select new
// {
// patientRegister,
// registerCheck
// }).ToList();
// //if (registerCheckList.Count == 0)
// //{
// // foreach (DataRow row in oldRegisterAsbitemList.Rows)
// // {
// // #region 档案
// // var patientName = row["patient_name"].ToString();
// // var sexId = ConvertSex(row["sex_id"].ToString());
// // var mobileTelephone = row["mobile_telephone"].ToString();
// // var telephone = row["telephone"].ToString();
// // var idNo = row["id_card_no"].ToString();
// // short? age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString());
// // var maritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString());
// // var patientQuery = await _patientRepository.GetQueryableAsync();
// // patientQuery = patientQuery.Where(m => m.DisplayName == patientName && m.SexId == sexId);
// // if (!string.IsNullOrWhiteSpace(mobileTelephone))
// // {
// // patientQuery = patientQuery.Where(m => m.MobileTelephone == mobileTelephone);
// // }
// // if (!string.IsNullOrWhiteSpace(idNo))
// // {
// // patientQuery = patientQuery.Where(m => m.IdNo == idNo);
// // }
// // //档案
// // var patientEnt = await patientQuery.FirstOrDefaultAsync();
// // if (patientEnt == null)
// // {
// // patientEnt = new Patient(GuidGenerator.Create())
// // {
// // BirthDate = null,
// // BirthPlaceId = null,
// // DisplayName = patientName,
// // Email = null,
// // IdNo = idNo,
// // MaritalStatusId = maritalStatusId,
// // MedicalCenterId = Guid.Empty,
// // MobileTelephone = mobileTelephone,
// // NationId = null,
// // PatientNo = await _manager.CreatePatientNo(Guid.Empty),
// // PatientPassword = "",
// // PostalCode = "",
// // SexId = sexId,
// // SimpleCode = LanguageConverter.GetPYSimpleCode(patientName),
// // Telephone = telephone
// // };
// // patientEnt = await _patientRepository.InsertAsync(patientEnt, true);
// // }
// // #endregion
// // #region 人员
// // Guid patientRegisterId = Guid.Empty;
// // var isCheckRequestNo = await _registerCheckRepository.FirstOrDefaultAsync(f => f.CheckRequestNo == input.CheckRequestNo);
// // if (isCheckRequestNo == null)
// // {
// // var patientRegisterEnt = new PatientRegister(GuidGenerator.Create())
// // {
// // Age = age,
// // CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
// // CustomerOrgId = GuidFlag.PersonCustomerOrgId,
// // CustomerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId,
// // DeviceId = Guid.Parse(input.DeviceId),
// // GuidePrintTimes = 0,
// // IsAudit = 'N',
// // IsLock = 'N',
// // IsMedicalStart = 'Y',
// // IsNameHide = 'N',
// // IsPhoneFollow = 'N',
// // IsVip = 'N',
// // IsRecoverGuide = 'N',
// // IsUpload = 'N',
// // IsUploadAppoint = 'N',
// // MaritalStatusId = maritalStatusId,
// // MedicalCenterId = Guid.Empty,
// // MedicalTimes = 0,
// // PatientId = patientEnt.Id,
// // PatientName = patientName,
// // ReportPrintTimes = 0,
// // PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty),
// // SendFlag = '0',
// // SexId = sexId
// // };
// // patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true);
// // patientRegisterId = patientRegisterEnt.Id;
// // }
// // else
// // {
// // patientRegisterId = isCheckRequestNo.PatientRegisterId;
// // }
// // tempPatientRegisterId = patientRegisterId;
// // #endregion
// // #region 登记项目 明细项目
// // string oldAsbitemId = row["asbitem_id"].ToString();
// // var oldAsbitemPrice = Convert.ToDecimal(row["price"].ToString());
// // var oldAsbitemStandardPrice = Convert.ToDecimal(row["standard_price"].ToString());
// // Guid asbitemColumnReferenId = Guid.Parse(_configuration.GetValue<string>("OldPeis:AsbitemColumnReferenId", Guid.Empty.ToString()));
// // Guid itemColumnReferenId = Guid.Parse(_configuration.GetValue<string>("OldPeis:ItemColumnReferenId", Guid.Empty.ToString()));
// // var asbitemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(asbitemColumnReferenId, oldAsbitemId);
// // if (!asbitemCodeValues.Any())
// // {
// // throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}没有对照");
// // }
// // if (asbitemCodeValues.Count() > 1)
// // {
// // throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
// // }
// // Guid asbitemId = Guid.Parse(asbitemCodeValues.First()); //pacs系统组合项目id
// // //检查
// // var registerCheckEnt = new RegisterCheck(GuidGenerator.Create())
// // {
// // CheckRequestNo = input.CheckRequestNo,
// // CheckRequestPrintTimes = 0,
// // CompleteFlag = RegisterCheckCompleteFlag.UnChecked,
// // IsAudit = 'N',
// // IsLock = 'N',
// // IsPacsCheck = 'N',
// // IsSignIn = 'Y',
// // PatientRegisterId = patientRegisterId,
// // ScheduledAet = input.ScheduledAet,
// // WorklistFlag = '1',
// // WorklistPreCheckDate = DateTime.Now
// // };
// // registerCheckEnt = await _registerCheckRepository.InsertAsync(registerCheckEnt, true);
// // //组合项目
// // var registerCheckAsbitemEnt = new RegisterCheckAsbitem(GuidGenerator.Create())
// // {
// // Amount = 1,
// // AsbitemId = asbitemId,
// // ChargePrice = oldAsbitemPrice,
// // StandardPrice = oldAsbitemStandardPrice,
// // IsCharge = Convert.ToChar(row["charge_flag"].ToString()),
// // OldAsbitemId = oldAsbitemId,
// // OldPatientRegisterId = row["patient_register_id"].ToString(),
// // PatientRegisterId = patientRegisterId,
// // PayTypeFlag = Convert.ToChar(row["payment_mode"].ToString()),
// // RegisterCheckId = registerCheckEnt.Id
// // };
// // registerCheckAsbitemEnt = await _registerCheckAsbitemRepository.InsertAsync(registerCheckAsbitemEnt, true);
// // //明细项目
// // List<RegisterCheckItem> registerCheckItemList = new List<RegisterCheckItem>();
// // var oldRegisterItemList = await oldDb.Ado.GetDataTableAsync($"select item_id from register_item where asbitem_id='{row["asbitem_id"].ToString()}' and patient_register_id='{row["patient_register_id"].ToString()}' ");
// // if (oldRegisterItemList.Rows.Count > 0)
// // {
// // foreach (DataRow rowItem in oldRegisterItemList.Rows)
// // {
// // string oldItemId = rowItem["item_id"].ToString();
// // var itemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(itemColumnReferenId, oldItemId);
// // if (!itemCodeValues.Any())
// // {
// // throw new UserFriendlyException($"项目编号:{oldItemId}没有对照");
// // }
// // if (itemCodeValues.Count() > 1)
// // {
// // throw new UserFriendlyException($"项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
// // }
// // Guid itemId = Guid.Parse(itemCodeValues.First()); //pacs系统项目id
// // if (registerCheckItemList.Count(c => c.ItemId == itemId) == 0)
// // {
// // registerCheckItemList.Add(new RegisterCheckItem
// // {
// // ItemId = itemId,
// // RegisterCheckId = registerCheckEnt.Id,
// // });
// // }
// // }
// // }
// // if (registerCheckItemList.Any())
// // {
// // await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
// // }
// // #endregion
// // }
// //}
// //else
// //{
// // foreach (var item in registerCheckList)
// // {
// // item.patientRegister.DeviceId = Guid.Parse(input.DeviceId);
// // }
// // await _patientRegisterRepository.UpdateManyAsync(registerCheckList.Select(s => s.patientRegister).ToList());
// // tempPatientRegisterId = registerCheckList.First().patientRegister.Id;
// //}
// entDto = await _patientRegisterAppService.GetPatientRegisterOrNo(tempPatientRegisterId);
// }
// else
// {
// throw new UserFriendlyException("检查条码不正确");
// }
// return entDto;
//}
/// <summary>
/// 导入老系统人员、项目数据,并自动加入worklist
/// </summary>
@ -1072,8 +1128,9 @@ namespace Shentun.Pacs.PacsBusiness
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PacsBusiness/ImportPeisCheckDataByCheckRequestNo")]
public async Task ImportPeisCheckDataByCheckRequestNoAsync ( ImportPeisCheckDataByCheckRequestNoInputDto input )
public async Task < PatientRegisterOrNoDto > ImportPeisCheckDataByCheckRequestNoAsync ( ImportPeisCheckDataByCheckRequestNoInputDto input )
{
var entDto = new PatientRegisterOrNoDto ( ) ;
if ( string . IsNullOrWhiteSpace ( input . CheckRequestNo ) )
{
@ -1091,6 +1148,31 @@ namespace Shentun.Pacs.PacsBusiness
throw new UserFriendlyException ( "预检AET不能为空" ) ;
}
var pacsDeviceEnt = await _deviceRepository . FirstOrDefaultAsync ( f = > f . Id = = Guid . Parse ( input . DeviceId ) ) ;
if ( pacsDeviceEnt = = null )
{
throw new UserFriendlyException ( "设备id不存在" ) ;
}
Guid deviceTypeColumnReferenId = Guid . Parse ( _configuration . GetValue < string > ( "OldPeis:DeviceTypeColumnReferenId" , Guid . Empty . ToString ( ) ) ) ;
var deviceTypeCodeValues = await _columnReferenceCodeManager . GetInterfaceCodeValueAsync ( deviceTypeColumnReferenId , pacsDeviceEnt . DeviceTypeId . ToString ( ) ) ;
if ( ! deviceTypeCodeValues . Any ( ) )
{
throw new UserFriendlyException ( $"仪器编号:{input.DeviceId}所属的仪器类型没有对照" ) ;
}
if ( deviceTypeCodeValues . Count ( ) > 1 )
{
throw new UserFriendlyException ( $"仪器编号:{input.DeviceId}所属的仪器类型有多个体检系统的仪器类型进行了对照" ) ;
}
//对照中体检系统的仪器类型,用于检索数据
string oldDeviceTypeId = deviceTypeCodeValues . First ( ) ;
string connectionString = _configuration . GetValue < string > ( "OldPeis:ConnectionStrings" , "" ) ;
SqlSugarClient oldDb = new SqlSugarClient ( new ConnectionConfig ( )
{
@ -1105,121 +1187,144 @@ namespace Shentun.Pacs.PacsBusiness
"a.age,a.id_card_no,a.marital_status_id,a.complete_flag," +
"b.patient_register_id,b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode " +
"from patient_register as a left join register_asbitem as b on a.patient_register_id=b.patient_register_id " +
$" where b.print_barcode_no='{input.CheckRequestNo}'" ) ;
" left join asbitem as c on b.asbitem_id=c.asbitem_id " +
$" where b.print_barcode_no='{input.CheckRequestNo}' and c.device_type_id='{oldDeviceTypeId}' " ) ;
if ( oldRegisterAsbitemList . Rows . Count > 0 )
{
Guid tempPatientRegisterId = Guid . Empty ;
var registerCheckList = ( from patientRegister in await _patientRegisterRepository . GetQueryableAsync ( )
join patient in await _patientRepository . GetQueryableAsync ( ) on patientRegister . PatientId equals patient . Id
join registerCheck in await _registerCheckRepository . GetQueryableAsync ( ) on patientRegister . Id equals registerCheck . PatientRegisterId
where registerCheck . CheckRequestNo = = input . CheckRequestNo
join registerCheckAsbitem in await _registerCheckAsbitemRepository . GetQueryableAsync ( ) on registerCheck . Id equals registerCheckAsbitem . RegisterCheckId
join device in await _deviceRepository . GetQueryableAsync ( ) on patientRegister . DeviceId equals device . Id
where registerCheck . CheckRequestNo = = input . CheckRequestNo & & device . DeviceTypeId = = pacsDeviceEnt . DeviceTypeId
select new
{
patientRegister ,
registerCheck
registerCheck ,
registerCheckAsbitem
} ) . ToList ( ) ;
if ( registerCheckList . Count = = 0 )
#region 处理人员信息
if ( registerCheckList . Count > 0 )
{
//当前仪器类型下已登记过当前条码
//更新之前登记的人员信息中的仪器id
var fisrtPatientRegister = registerCheckList . Select ( s = > s . patientRegister ) . First ( ) ;
fisrtPatientRegister . DeviceId = Guid . Parse ( input . DeviceId ) ;
await _patientRegisterRepository . UpdateAsync ( fisrtPatientRegister ) ;
}
else
{
foreach ( DataRow row in oldRegisterAsbitemList . Rows )
//未登记
DataRow row = oldRegisterAsbitemList . Rows [ 0 ] ;
#region 档案
var patientName = row [ "patient_name" ] . ToString ( ) ;
var sexId = ConvertSex ( row [ "sex_id" ] . ToString ( ) ) ;
var mobileTelephone = row [ "mobile_telephone" ] . ToString ( ) ;
var telephone = row [ "telephone" ] . ToString ( ) ;
var idNo = row [ "id_card_no" ] . ToString ( ) ;
short? age = string . IsNullOrWhiteSpace ( row [ "age" ] . ToString ( ) ) ? null : Convert . ToInt16 ( row [ "age" ] . ToString ( ) ) ;
var maritalStatusId = row [ "marital_status_id" ] . ToString ( ) = = "2" ? '4' : Convert . ToChar ( row [ "marital_status_id" ] . ToString ( ) ) ;
var patientQuery = await _patientRepository . GetQueryableAsync ( ) ;
patientQuery = patientQuery . Where ( m = > m . DisplayName = = patientName & & m . SexId = = sexId ) ;
if ( ! string . IsNullOrWhiteSpace ( mobileTelephone ) )
{
#region 档案
var patientName = row [ "patient_name" ] . ToString ( ) ;
var sexId = ConvertSex ( row [ "sex_id" ] . ToString ( ) ) ;
var mobileTelephone = row [ "mobile_telephone" ] . ToString ( ) ;
var telephone = row [ "telephone" ] . ToString ( ) ;
var idNo = row [ "id_card_no" ] . ToString ( ) ;
short? age = string . IsNullOrWhiteSpace ( row [ "age" ] . ToString ( ) ) ? null : Convert . ToInt16 ( row [ "age" ] . ToString ( ) ) ;
var maritalStatusId = row [ "marital_status_id" ] . ToString ( ) = = "2" ? '4' : Convert . ToChar ( row [ "marital_status_id" ] . ToString ( ) ) ;
var patientQuery = await _patientRepository . GetQueryableAsync ( ) ;
patientQuery = patientQuery . Where ( m = > m . DisplayName = = patientName & & m . SexId = = sexId ) ;
if ( ! string . IsNullOrWhiteSpace ( mobileTelephone ) )
{
patientQuery = patientQuery . Where ( m = > m . MobileTelephone = = mobileTelephone ) ;
}
if ( ! string . IsNullOrWhiteSpace ( idNo ) )
{
patientQuery = patientQuery . Where ( m = > m . IdNo = = idNo ) ;
}
patientQuery = patientQuery . Where ( m = > m . MobileTelephone = = mobileTelephone ) ;
}
if ( ! string . IsNullOrWhiteSpace ( idNo ) )
{
patientQuery = patientQuery . Where ( m = > m . IdNo = = idNo ) ;
}
//档案
var patientEnt = await patientQuery . FirstOrDefaultAsync ( ) ;
//档案
var patientEnt = await patientQuery . FirstOrDefaultAsync ( ) ;
if ( patientEnt = = null )
if ( patientEnt = = null )
{
patientEnt = new Patient ( GuidGenerator . Create ( ) )
{
patientEnt = new Patient ( GuidGenerator . Create ( ) )
{
BirthDate = null ,
BirthPlaceId = null ,
DisplayName = patientName ,
Email = null ,
IdNo = idNo ,
MaritalStatusId = maritalStatusId ,
MedicalCenterId = Guid . Empty ,
MobileTelephone = mobileTelephone ,
NationId = null ,
PatientNo = await _manager . CreatePatientNo ( Guid . Empty ) ,
PatientPassword = "" ,
PostalCode = "" ,
SexId = sexId ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( patientName ) ,
Telephone = telephone
} ;
patientEnt = await _patientRepository . InsertAsync ( patientEnt , true ) ;
}
#endregion
BirthDate = null ,
BirthPlaceId = null ,
DisplayName = patientName ,
Email = null ,
IdNo = idNo ,
MaritalStatusId = maritalStatusId ,
MedicalCenterId = Guid . Empty ,
MobileTelephone = mobileTelephone ,
NationId = null ,
PatientNo = await _manager . CreatePatientNo ( Guid . Empty ) ,
PatientPassword = "" ,
PostalCode = "" ,
SexId = sexId ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( patientName ) ,
Telephone = telephone
} ;
#region 人员
patientEnt = await _patientRepository . InsertAsync ( patientEnt , true ) ;
}
#endregion
Guid patientRegisterId = Guid . Empty ;
#region 人员
var patientRegisterEnt = new PatientRegister ( GuidGenerator . Create ( ) )
{
Age = age ,
CompleteFlag = Convert . ToChar ( row [ "complete_flag" ] . ToString ( ) ) ,
CustomerOrgId = GuidFlag . PersonCustomerOrgId ,
CustomerOrgRegisterId = GuidFlag . PersonCustomerOrgRegisterId ,
DeviceId = Guid . Parse ( input . DeviceId ) ,
GuidePrintTimes = 0 ,
IsAudit = 'N' ,
IsLock = 'N' ,
IsMedicalStart = 'Y' ,
IsNameHide = 'N' ,
IsPhoneFollow = 'N' ,
IsVip = 'N' ,
IsRecoverGuide = 'N' ,
IsUpload = 'N' ,
IsUploadAppoint = 'N' ,
MaritalStatusId = maritalStatusId ,
MedicalCenterId = Guid . Empty ,
MedicalTimes = 0 ,
PatientId = patientEnt . Id ,
PatientName = patientName ,
ReportPrintTimes = 0 ,
PatientRegisterNo = await _patientRegisterManager . CreatePatientRegisterNo ( Guid . Empty ) ,
SendFlag = '0' ,
SexId = sexId
} ;
patientRegisterEnt = await _patientRegisterRepository . InsertAsync ( patientRegisterEnt , true ) ;
tempPatientRegisterId = patientRegisterEnt . Id ;
var isCheckRequestNo = await _registerCheckRepository . FirstOrDefaultAsync ( f = > f . CheckRequestNo = = input . CheckRequestNo ) ;
if ( isCheckRequestNo = = null )
{
var patientRegisterEnt = new PatientRegister ( GuidGenerator . Create ( ) )
{
Age = age ,
CompleteFlag = Convert . ToChar ( row [ "complete_flag" ] . ToString ( ) ) ,
CustomerOrgId = GuidFlag . PersonCustomerOrgId ,
CustomerOrgRegisterId = GuidFlag . PersonCustomerOrgRegisterId ,
DeviceId = Guid . Parse ( input . DeviceId ) ,
GuidePrintTimes = 0 ,
IsAudit = 'N' ,
IsLock = 'N' ,
IsMedicalStart = 'Y' ,
IsNameHide = 'N' ,
IsPhoneFollow = 'N' ,
IsVip = 'N' ,
IsRecoverGuide = 'N' ,
IsUpload = 'N' ,
IsUploadAppoint = 'N' ,
MaritalStatusId = maritalStatusId ,
MedicalCenterId = Guid . Empty ,
MedicalTimes = 0 ,
PatientId = patientEnt . Id ,
PatientName = patientName ,
ReportPrintTimes = 0 ,
PatientRegisterNo = await _patientRegisterManager . CreatePatientRegisterNo ( Guid . Empty ) ,
SendFlag = '0' ,
SexId = sexId
} ;
patientRegisterEnt = await _patientRegisterRepository . InsertAsync ( patientRegisterEnt , true ) ;
patientRegisterId = patientRegisterEnt . Id ;
}
else
{
patientRegisterId = isCheckRequestNo . PatientRegisterId ;
}
#endregion
#endregion
}
#endregion
#region 处理项目信息
foreach ( DataRow row in oldRegisterAsbitemList . Rows )
{
string oldAsbitemId = row [ "asbitem_id" ] . ToString ( ) ;
string oldPatientRegisterId = row [ "patient_register_id" ] . ToString ( ) ;
if ( registerCheckList . Count ( c = > c . registerCheckAsbitem . OldAsbitemId = = oldAsbitemId
& & c . registerCheckAsbitem . OldPatientRegisterId = = oldPatientRegisterId ) = = 0 )
{
//未登记的项目新增进来
#region 登记项目 明细项目
string oldAsbitemId = row [ "asbitem_id" ] . ToString ( ) ;
var oldAsbitemPrice = Convert . ToDecimal ( row [ "price" ] . ToString ( ) ) ;
var oldAsbitemStandardPrice = Convert . ToDecimal ( row [ "standard_price" ] . ToString ( ) ) ;
@ -1248,7 +1353,7 @@ namespace Shentun.Pacs.PacsBusiness
IsLock = 'N' ,
IsPacsCheck = 'N' ,
IsSignIn = 'Y' ,
PatientRegisterId = patientRegisterId ,
PatientRegisterId = tem pP atientRegisterId,
ScheduledAet = input . ScheduledAet ,
WorklistFlag = '1' ,
WorklistPreCheckDate = DateTime . Now
@ -1266,7 +1371,7 @@ namespace Shentun.Pacs.PacsBusiness
IsCharge = Convert . ToChar ( row [ "charge_flag" ] . ToString ( ) ) ,
OldAsbitemId = oldAsbitemId ,
OldPatientRegisterId = row [ "patient_register_id" ] . ToString ( ) ,
PatientRegisterId = patientRegisterId ,
PatientRegisterId = tem pP atientRegisterId,
PayTypeFlag = Convert . ToChar ( row [ "payment_mode" ] . ToString ( ) ) ,
RegisterCheckId = registerCheckEnt . Id
} ;
@ -1315,25 +1420,18 @@ namespace Shentun.Pacs.PacsBusiness
}
#endregion
}
}
else
{
foreach ( var item in registerCheckList )
{
item . patientRegister . DeviceId = Guid . Parse ( input . DeviceId ) ;
}
await _patientRegisterRepository . UpdateManyAsync ( registerCheckList . Select ( s = > s . patientRegister ) . ToList ( ) ) ;
}
}
#endregion
entDto = await _patientRegisterAppService . GetPatientRegisterOrNo ( tempPatientRegisterId ) ;
}
else
{
throw new UserFriendlyException ( "检查条码不正确" ) ;
}
return entDto ;
}