Browse Source

修改条码逻辑前

master
wxd 1 year ago
parent
commit
f89768fb25
  1. 14
      src/Shentun.Pacs.Application.Contracts/PacsBusiness/GetPeisAsbitemCompleteFlagDto.cs
  2. 5
      src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs
  3. 5
      src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
  4. 19
      src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameDto.cs
  5. 25
      src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameInputDto.cs
  6. 5
      src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs
  7. 30
      src/Shentun.Pacs.Application.Contracts/Worklists/UpdateWorklistIsSignInInputDto.cs
  8. 324
      src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
  9. 191
      src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs
  10. 107
      src/Shentun.Pacs.Application/RegisterChecks/RegisterCheckAppService.cs
  11. 184
      src/Shentun.Pacs.Application/Worklists/WorklistAppService.cs

14
src/Shentun.Pacs.Application.Contracts/PacsBusiness/GetPeisAsbitemCompleteFlagDto.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Pacs.PacsBusiness
{
public class GetPeisAsbitemCompleteFlagDto
{
/// <summary>
/// 项目检查状态
/// </summary>
public char CompleteFlag { get; set; }
}
}

5
src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs

@ -68,6 +68,11 @@ namespace Shentun.Pacs.PatientRegisters
/// </summary> /// </summary>
public List<string> CheckDoctorIds { get; set; } = new List<string>(); public List<string> CheckDoctorIds { get; set; } = new List<string>();
/// <summary>
/// 设备Id 可不传 传null查询所有
/// </summary>
public Guid? DeviceId { get; set; }
public override int MaxResultCount { get; set; } = 100; public override int MaxResultCount { get; set; } = 100;
} }
} }

5
src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs

@ -65,5 +65,10 @@ namespace Shentun.Pacs.RegisterChecks
/// 组合项目顺序 /// 组合项目顺序
/// </summary> /// </summary>
public int AsbitemDisplayOrder { get; set; } public int AsbitemDisplayOrder { get; set; }
/// <summary>
/// 项目描述
/// </summary>
public string PacsDesc { get; set; }
} }
} }

19
src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameDto.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Pacs.Worklists
{
public class GetRegisterCheckAsbitemNameDto
{
/// <summary>
/// 中文简称
/// </summary>
public string AsbitemShortName { get; set; }
/// <summary>
/// 英文简称
/// </summary>
public string AsbitemEngShortName { get; set; }
}
}

25
src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameInputDto.cs

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Pacs.Worklists
{
public class GetRegisterCheckAsbitemNameInputDto
{
/// <summary>
/// 预检AET
/// </summary>
public string ScheduledAet { get; set; }
/// <summary>
/// 设备类型
/// </summary>
public string Modality { get; set; }
/// <summary>
/// 条码号
/// </summary>
public string CheckRequestNo { get; set; }
}
}

5
src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs

@ -26,5 +26,10 @@ namespace Shentun.Pacs.Worklists
/// 结束日期 /// 结束日期
/// </summary> /// </summary>
public string EndDate { get; set; } public string EndDate { get; set; }
/// <summary>
/// 是否签收 Y=已签收 N=未签收 默认为N,查询未签收的
/// </summary>
public char IsSignIn { get; set; } = 'N';
} }
} }

30
src/Shentun.Pacs.Application.Contracts/Worklists/UpdateWorklistIsSignInInputDto.cs

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Pacs.Worklists
{
public class UpdateWorklistIsSignInInputDto
{
/// <summary>
/// 预检AET
/// </summary>
public string ScheduledAet { get; set; }
/// <summary>
/// 设备类型
/// </summary>
public string Modality { get; set; }
/// <summary>
/// 条码号
/// </summary>
public string CheckRequestNo { get; set; }
/// <summary>
/// 签收状态 Y N
/// </summary>
public char IsSignIn { get; set; }
}
}

324
src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs

@ -20,6 +20,7 @@ using Shentun.Pacs.RegisterChecks;
using Shentun.Pacs.RegisterCheckSuggestions; using Shentun.Pacs.RegisterCheckSuggestions;
using Shentun.Pacs.RegisterCheckSummarys; using Shentun.Pacs.RegisterCheckSummarys;
using Shentun.Pacs.SumSummaryReports; using Shentun.Pacs.SumSummaryReports;
using Shentun.Pacs.SysParmValues;
using Shentun.Pacs.ThirdBookingPushs; using Shentun.Pacs.ThirdBookingPushs;
using Shentun.Pacs.ThirdPartyPublicInterfaces; using Shentun.Pacs.ThirdPartyPublicInterfaces;
using Shentun.Utilities; using Shentun.Utilities;
@ -79,6 +80,7 @@ namespace Shentun.Pacs.PacsBusiness
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
private readonly UnitOfWorkManager _unitOfWorkManager; private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository; private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly SysParmValueManager _sysParmValueManager;
public PacsBusinessAppService( public PacsBusinessAppService(
IConfiguration configuration, IConfiguration configuration,
@ -111,7 +113,8 @@ namespace Shentun.Pacs.PacsBusiness
IRepository<DeviceType, Guid> deviceTypeRepository, IRepository<DeviceType, Guid> deviceTypeRepository,
CacheService cacheService, CacheService cacheService,
UnitOfWorkManager unitOfWorkManager, UnitOfWorkManager unitOfWorkManager,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository)
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
SysParmValueManager sysParmValueManager)
{ {
_configuration = configuration; _configuration = configuration;
_registerCheckRepository = registerCheckRepository; _registerCheckRepository = registerCheckRepository;
@ -144,6 +147,7 @@ namespace Shentun.Pacs.PacsBusiness
_cacheService = cacheService; _cacheService = cacheService;
_unitOfWorkManager = unitOfWorkManager; _unitOfWorkManager = unitOfWorkManager;
_registerCheckSummaryRepository = registerCheckSummaryRepository; _registerCheckSummaryRepository = registerCheckSummaryRepository;
_sysParmValueManager = sysParmValueManager;
} }
@ -236,6 +240,7 @@ namespace Shentun.Pacs.PacsBusiness
//} //}
#region 未用到
/// <summary> /// <summary>
/// 导入pacs dicom数据 /// 导入pacs dicom数据
/// </summary> /// </summary>
@ -304,6 +309,74 @@ namespace Shentun.Pacs.PacsBusiness
return entListDto; return entListDto;
} }
/// <summary>
/// 修改pacs项目检查状态及日期 已整合到其他接口,废弃
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/UpdateRegisterCheckIsPacsCheck")]
[RemoteService(false)]
public async Task UpdateRegisterCheckIsPacsCheckAsync(UpdateRegisterCheckIsPacsCheckInputDto input)
{
var registerCheckEnt = await _registerCheckRepository.FirstOrDefaultAsync(f => f.CheckRequestNo == input.CheckRequestNo);
if (registerCheckEnt == null)
{
throw new UserFriendlyException("条码号不正确");
}
registerCheckEnt.IsPacsCheck = input.IsPacsCheck;
registerCheckEnt.PacsCheckDate = Convert.ToDateTime(input.PacsCheckDate);
registerCheckEnt.PacsUploadDate = Convert.ToDateTime(input.PacsUploadDate);
await _registerCheckRepository.UpdateAsync(registerCheckEnt);
}
/// <summary>
/// 查询人员的检查图片 为用到
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/GetRegisterCheckPictureByPatientRegisterId")]
public async Task<List<GetRegisterCheckPictureByPatientRegisterIdDto>> GetRegisterCheckPictureByPatientRegisterIdAsync(GetRegisterCheckPictureByPatientRegisterIdInputDto input)
{
var query = (from registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckPicture.RegisterCheckId equals registerCheck.Id
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id
where patientRegister.Id == input.PatientRegisterId && itemType.CheckTypeFlag == input.CheckTypeFlag
select new
{
registerCheckPicture,
patientName = patientRegister.PatientName,
asbitemName = asbitem.DisplayName,
checkRequestNo = registerCheck.CheckRequestNo
}).ToList();
var registerCheckPictureGroup = query.GroupBy(g => g.registerCheckPicture);
var entListDto = registerCheckPictureGroup.Select(s => new GetRegisterCheckPictureByPatientRegisterIdDto
{
AsbitemName = string.Join(",", s.Select(rs => rs.asbitemName).ToList()),
DisplayOrder = s.Key.DisplayOrder,
CheckRequestNo = s.FirstOrDefault().checkRequestNo,
LocalPathName = s.Key.LocalPathName,
PictureFilename = s.Key.PictureFilename,
PictureFileType = s.Key.PictureFileType,
PatientName = s.FirstOrDefault().patientName,
RegisterCheckId = s.Key.RegisterCheckId
}).ToList();
return entListDto;
}
#endregion
/// <summary> /// <summary>
@ -354,27 +427,7 @@ namespace Shentun.Pacs.PacsBusiness
return resultDto; return resultDto;
} }
/// <summary>
/// 修改pacs项目检查状态及日期
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/UpdateRegisterCheckIsPacsCheck")]
[RemoteService(false)]
public async Task UpdateRegisterCheckIsPacsCheckAsync(UpdateRegisterCheckIsPacsCheckInputDto input)
{
var registerCheckEnt = await _registerCheckRepository.FirstOrDefaultAsync(f => f.CheckRequestNo == input.CheckRequestNo);
if (registerCheckEnt == null)
{
throw new UserFriendlyException("条码号不正确");
}
registerCheckEnt.IsPacsCheck = input.IsPacsCheck;
registerCheckEnt.PacsCheckDate = Convert.ToDateTime(input.PacsCheckDate);
registerCheckEnt.PacsUploadDate = Convert.ToDateTime(input.PacsUploadDate);
await _registerCheckRepository.UpdateAsync(registerCheckEnt);
}
/// <summary> /// <summary>
/// 获取pacs检查项目 pacs看图界面列表 /// 获取pacs检查项目 pacs看图界面列表
@ -475,33 +528,33 @@ namespace Shentun.Pacs.PacsBusiness
query = query.Where(m => customerOrgIds.Contains(m.customerOrgId)); query = query.Where(m => customerOrgIds.Contains(m.customerOrgId));
} }
#region 增加项目类别权限
//#region 增加项目类别权限
string AdminId = _configuration.GetValue<string>("AdminId");
//string AdminId = _configuration.GetValue<string>("AdminId");
if (_currentUser.Id == null)
{
new PagedResultDto<GetPatientRegisterPacsCheckDto>(0, new List<GetPatientRegisterPacsCheckDto>());
}
if (_currentUser.Id.Value != Guid.Parse(AdminId))
{
var asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
where userItemType.UserId == _currentUser.Id.Value
select asbitem.Id).ToList();
//if (_currentUser.Id == null)
//{
// new PagedResultDto<GetPatientRegisterPacsCheckDto>(0, new List<GetPatientRegisterPacsCheckDto>());
//}
//if (_currentUser.Id.Value != Guid.Parse(AdminId))
//{
// var asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
// join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
// where userItemType.UserId == _currentUser.Id.Value
// select asbitem.Id).ToList();
if (asbitemIds.Any())
{
query = query.Where(m => asbitemIds.Contains(m.asbitemId));
}
else
{
new PagedResultDto<GetPatientRegisterPacsCheckDto>(0, new List<GetPatientRegisterPacsCheckDto>());
}
// if (asbitemIds.Any())
// {
// query = query.Where(m => asbitemIds.Contains(m.asbitemId));
// }
// else
// {
// new PagedResultDto<GetPatientRegisterPacsCheckDto>(0, new List<GetPatientRegisterPacsCheckDto>());
// }
}
//}
#endregion
//#endregion
var checkRequestNoGroup = query.ToList().GroupBy(g => g.registerCheckId); var checkRequestNoGroup = query.ToList().GroupBy(g => g.registerCheckId);
@ -519,29 +572,11 @@ namespace Shentun.Pacs.PacsBusiness
if (fisrtItem.encodingFlag == '0') if (fisrtItem.encodingFlag == '0')
{ {
string examDescription = string.Join(",", item.Select(ss => ss.asbitemShortName).Distinct());
if (item.Where(m => m.isFilmRelease == 'N').Count() > 0)
{
examDescription += ",不出片";
}
if (examDescription.Length > 64)
{
examDescription = examDescription.Substring(0, 64);
}
pacsDesc = examDescription;
pacsDesc = fisrtItem.asbitemShortName;
} }
else else
{ {
string examEngDescription = string.Join(",", item.Select(ss => ss.isFilmRelease == 'N' ? ss.endAsbitemShortName + "(BU)" : ss.endAsbitemShortName).Distinct());
if (examEngDescription.Length > 64)
{
examEngDescription = examEngDescription.Substring(0, 64);
}
pacsDesc = examEngDescription;
pacsDesc = fisrtItem.endAsbitemShortName;
} }
entListDto.Add(new GetPatientRegisterPacsCheckDto entListDto.Add(new GetPatientRegisterPacsCheckDto
@ -557,12 +592,15 @@ namespace Shentun.Pacs.PacsBusiness
}); });
} }
entListDto = entListDto.OrderByDescending(o => o.CheckRequestNo).ToList();
return new PagedResultDto<GetPatientRegisterPacsCheckDto>(totalCount, entListDto); return new PagedResultDto<GetPatientRegisterPacsCheckDto>(totalCount, entListDto);
} }
/// <summary> /// <summary>
/// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期
/// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期 000
/// InstanceId存在就不添加
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/PacsBusiness/ImportPacsDicomServiceData")] [HttpPost("api/app/PacsBusiness/ImportPacsDicomServiceData")]
@ -596,23 +634,24 @@ namespace Shentun.Pacs.PacsBusiness
if (string.IsNullOrWhiteSpace(input.FileName)) if (string.IsNullOrWhiteSpace(input.FileName))
throw new UserFriendlyException("文件名称不能为空"); throw new UserFriendlyException("文件名称不能为空");
var dicomFileDetailEnt = new DicomFileDetail
{
DisplayOrder = 1,
RegisterCheckId = registerCheckEnt.Id,
FileName = input.FileName,
InstanceId = input.InstanceId,
ParentPatientId = input.ParentPatientId,
ParentSeriesId = input.ParentSeriesId,
ParentStudyId = input.ParentStudyId,
Path = input.Path,
Status = input.Status
};
await _dicomFileDetailRepository.InsertAsync(dicomFileDetailEnt);
var dicomFileDetailEnt = await _dicomFileDetailRepository.FirstOrDefaultAsync(f => f.InstanceId == input.InstanceId);
if (dicomFileDetailEnt == null)
{
dicomFileDetailEnt = new DicomFileDetail
{
DisplayOrder = 1,
RegisterCheckId = registerCheckEnt.Id,
FileName = input.FileName,
InstanceId = input.InstanceId,
ParentPatientId = input.ParentPatientId,
ParentSeriesId = input.ParentSeriesId,
ParentStudyId = input.ParentStudyId,
Path = input.Path,
Status = input.Status
};
await _dicomFileDetailRepository.InsertAsync(dicomFileDetailEnt);
}
if (registerCheckEnt.IsPacsCheck != 'Y') if (registerCheckEnt.IsPacsCheck != 'Y')
{ {
@ -627,7 +666,7 @@ namespace Shentun.Pacs.PacsBusiness
} }
/// <summary> /// <summary>
/// 查询人员的dicom数据
/// 查询人员的dicom数据 000
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -668,49 +707,7 @@ namespace Shentun.Pacs.PacsBusiness
} }
/// <summary> /// <summary>
/// 查询人员的检查图片
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/GetRegisterCheckPictureByPatientRegisterId")]
public async Task<List<GetRegisterCheckPictureByPatientRegisterIdDto>> GetRegisterCheckPictureByPatientRegisterIdAsync(GetRegisterCheckPictureByPatientRegisterIdInputDto input)
{
var query = (from registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckPicture.RegisterCheckId equals registerCheck.Id
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id
where patientRegister.Id == input.PatientRegisterId && itemType.CheckTypeFlag == input.CheckTypeFlag
select new
{
registerCheckPicture,
patientName = patientRegister.PatientName,
asbitemName = asbitem.DisplayName,
checkRequestNo = registerCheck.CheckRequestNo
}).ToList();
var registerCheckPictureGroup = query.GroupBy(g => g.registerCheckPicture);
var entListDto = registerCheckPictureGroup.Select(s => new GetRegisterCheckPictureByPatientRegisterIdDto
{
AsbitemName = string.Join(",", s.Select(rs => rs.asbitemName).ToList()),
DisplayOrder = s.Key.DisplayOrder,
CheckRequestNo = s.FirstOrDefault().checkRequestNo,
LocalPathName = s.Key.LocalPathName,
PictureFilename = s.Key.PictureFilename,
PictureFileType = s.Key.PictureFileType,
PatientName = s.FirstOrDefault().patientName,
RegisterCheckId = s.Key.RegisterCheckId
}).ToList();
return entListDto;
}
/// <summary>
/// 删除体检dicom服务数据,并清理dicom服务记录
/// 删除体检dicom服务数据,并清理dicom服务记录 000
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -746,7 +743,7 @@ namespace Shentun.Pacs.PacsBusiness
/// <summary> /// <summary>
/// 获取dicom文件的数量 根据检查条码号或者实例ID查询
/// 获取dicom文件的数量 根据检查条码号或者实例ID查询 000
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -788,7 +785,7 @@ namespace Shentun.Pacs.PacsBusiness
} }
/// <summary> /// <summary>
/// 调用dicom服务api
/// 调用dicom服务api 删除dicom
/// </summary> /// </summary>
/// <param name="apiUrl"></param> /// <param name="apiUrl"></param>
/// <param name="authString"></param> /// <param name="authString"></param>
@ -838,13 +835,15 @@ namespace Shentun.Pacs.PacsBusiness
throw new UserFriendlyException("检查条码不存在"); throw new UserFriendlyException("检查条码不存在");
} }
string medicalCenterName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_name");
var entDto = new GetPatientRegisterByCheckRequestNoDto var entDto = new GetPatientRegisterByCheckRequestNoDto
{ {
PatientAge = patientRegisterEnt.patientRegister.Age == null ? "" : patientRegisterEnt.patientRegister.Age.ToString(), PatientAge = patientRegisterEnt.patientRegister.Age == null ? "" : patientRegisterEnt.patientRegister.Age.ToString(),
PatientBirthDate = patientRegisterEnt.patientRegister.BirthDate == null ? "" : DataHelper.ConversionDateShortNoSymbolToString(patientRegisterEnt.patientRegister.BirthDate), PatientBirthDate = patientRegisterEnt.patientRegister.BirthDate == null ? "" : DataHelper.ConversionDateShortNoSymbolToString(patientRegisterEnt.patientRegister.BirthDate),
PatientName = patientRegisterEnt.patientRegister.PatientName, PatientName = patientRegisterEnt.patientRegister.PatientName,
PatientSex = patientRegisterEnt.patientRegister.SexId.ToString(), PatientSex = patientRegisterEnt.patientRegister.SexId.ToString(),
HospitalName = patientRegisterEnt.medicalCenterName
HospitalName = medicalCenterName
}; };
return entDto; return entDto;
@ -1230,7 +1229,7 @@ namespace Shentun.Pacs.PacsBusiness
if (input.BarcodeMode == '0') if (input.BarcodeMode == '0')
{ {
registerAsbitemSql = "select a.name as patient_name,a.sex_id,a.mobile_telephone,a.telephone," + registerAsbitemSql = "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," +
"a.age,a.id_card_no,a.marital_status_id,a.complete_flag,a.birth_date," +
"b.patient_register_id,b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode " + "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 " + "from patient_register as a left join register_asbitem as b on a.patient_register_id=b.patient_register_id " +
" left join asbitem as c on b.asbitem_id=c.asbitem_id " + " left join asbitem as c on b.asbitem_id=c.asbitem_id " +
@ -1240,7 +1239,7 @@ namespace Shentun.Pacs.PacsBusiness
{ {
registerAsbitemSql = "select a.name as patient_name,a.sex_id,a.mobile_telephone,a.telephone," + registerAsbitemSql = "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," +
"a.age,a.id_card_no,a.marital_status_id,a.complete_flag,a.birth_date," +
"b.patient_register_id,b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode " + "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 " + "from patient_register as a left join register_asbitem as b on a.patient_register_id=b.patient_register_id " +
" left join asbitem as c on b.asbitem_id=c.asbitem_id " + " left join asbitem as c on b.asbitem_id=c.asbitem_id " +
@ -1359,6 +1358,14 @@ namespace Shentun.Pacs.PacsBusiness
patientEnt = await _patientRepository.InsertAsync(patientEnt, true); patientEnt = await _patientRepository.InsertAsync(patientEnt, true);
} }
//else
//{
// if (patientEnt.BirthDate == null && newBirthDate != null)
// {
// patientEnt.BirthDate = newBirthDate;
// await _patientRepository.UpdateAsync(patientEnt);
// }
//}
#endregion #endregion
#region 人员 #region 人员
@ -1387,7 +1394,8 @@ namespace Shentun.Pacs.PacsBusiness
ReportPrintTimes = 0, ReportPrintTimes = 0,
PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty), PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty),
SendFlag = '0', SendFlag = '0',
SexId = sexId
SexId = sexId,
BirthDate = newBirthDate
}; };
patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true); patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true);
@ -1439,7 +1447,7 @@ namespace Shentun.Pacs.PacsBusiness
IsAudit = 'N', IsAudit = 'N',
IsLock = 'N', IsLock = 'N',
IsPacsCheck = 'N', IsPacsCheck = 'N',
IsSignIn = 'Y',
IsSignIn = 'N',
PatientRegisterId = tempPatientRegisterId, PatientRegisterId = tempPatientRegisterId,
ScheduledAet = input.ScheduledAet, ScheduledAet = input.ScheduledAet,
WorklistFlag = '1', WorklistFlag = '1',
@ -1756,6 +1764,58 @@ namespace Shentun.Pacs.PacsBusiness
} }
/// <summary>
/// 根据检查id获取体检系统项目的检查状态
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/GetPeisAsbitemCompleteFlag")]
public async Task<GetPeisAsbitemCompleteFlagDto> GetPeisAsbitemCompleteFlagAsync(RegisterCheckIdInputDto input)
{
var registerCheckFirst = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
where registerCheck.Id == input.RegisterCheckId
select new
{
registerCheckAsbitem
}).FirstOrDefault();
if (registerCheckFirst == null)
{
throw new UserFriendlyException("检查id不正确");
}
string connectionString = _configuration.GetValue<string>("OldPeis:ConnectionStrings", "");
SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = connectionString,
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
});
string completeFlag = (await oldDb.Ado.GetScalarAsync("select complete_flag from register_asbitem where patient_register_id=@patient_register_id and asbitem_id=@asbitem_id",
new List<SugarParameter>() {
new SugarParameter("patient_register_id",registerCheckFirst.registerCheckAsbitem.OldPatientRegisterId),
new SugarParameter("asbitem_id",registerCheckFirst.registerCheckAsbitem.OldAsbitemId)
})).ToString();
if (string.IsNullOrWhiteSpace(completeFlag))
{
throw new UserFriendlyException("体检系统未查到相关信息");
}
var entDto = new GetPeisAsbitemCompleteFlagDto
{
CompleteFlag = Convert.ToChar(completeFlag)
};
return entDto;
}
#endregion #endregion
/// <summary> /// <summary>

191
src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs

@ -131,7 +131,7 @@ namespace Shentun.Pacs.PatientRegisters
private readonly IRepository<PatientPoison> _patientPoisonRepository; private readonly IRepository<PatientPoison> _patientPoisonRepository;
private readonly PatientPoisonManager _patientPoisonManager; private readonly PatientPoisonManager _patientPoisonManager;
private readonly IRepository<Diagnosis> _diagnosisRepository; private readonly IRepository<Diagnosis> _diagnosisRepository;
private readonly IRepository<ThirdBooking, Guid> _thirdBookingRepository; private readonly IRepository<ThirdBooking, Guid> _thirdBookingRepository;
public PatientRegisterAppService( public PatientRegisterAppService(
IRepository<PatientRegister, Guid> repository, IRepository<PatientRegister, Guid> repository,
@ -193,7 +193,7 @@ namespace Shentun.Pacs.PatientRegisters
IRepository<PatientPoison> patientPoisonRepository, IRepository<PatientPoison> patientPoisonRepository,
PatientPoisonManager patientPoisonManager, PatientPoisonManager patientPoisonManager,
IRepository<Diagnosis> diagnosisRepository, IRepository<Diagnosis> diagnosisRepository,
IRepository<ThirdBooking, Guid> thirdBookingRepository) IRepository<ThirdBooking, Guid> thirdBookingRepository)
: base(repository) : base(repository)
{ {
@ -256,7 +256,7 @@ namespace Shentun.Pacs.PatientRegisters
_patientPoisonRepository = patientPoisonRepository; _patientPoisonRepository = patientPoisonRepository;
_patientPoisonManager = patientPoisonManager; _patientPoisonManager = patientPoisonManager;
_diagnosisRepository = diagnosisRepository; _diagnosisRepository = diagnosisRepository;
_thirdBookingRepository = thirdBookingRepository; _thirdBookingRepository = thirdBookingRepository;
} }
/// <summary> /// <summary>
@ -988,7 +988,7 @@ namespace Shentun.Pacs.PatientRegisters
} }
//throw new Exception("后续不更新"); //throw new Exception("后续不更新");
if (createRegisterCheckAsbitemEntity != null) if (createRegisterCheckAsbitemEntity != null)
@ -1547,20 +1547,25 @@ namespace Shentun.Pacs.PatientRegisters
} }
#region 增加项目类别权限
List<Guid> asbitemIds = new List<Guid>();
string AdminId = _configuration.GetValue<string>("AdminId");
if (_currentUser.Id.Value != Guid.Parse(AdminId))
if (input.DeviceId != null)
{ {
asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
where userItemType.UserId == _currentUser.Id.Value
select asbitem.Id).ToList();
sumquery = sumquery.Where(m => m.a.DeviceId == input.DeviceId);
} }
#endregion
//#region 增加项目类别权限
//List<Guid> asbitemIds = new List<Guid>();
//string AdminId = _configuration.GetValue<string>("AdminId");
//if (_currentUser.Id.Value != Guid.Parse(AdminId))
//{
// asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
// join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
// where userItemType.UserId == _currentUser.Id.Value
// select asbitem.Id).ToList();
//}
//#endregion
@ -1571,86 +1576,86 @@ namespace Shentun.Pacs.PatientRegisters
foreach (var s in sumqueryGroup.OrderBy(o => o.Key)) foreach (var s in sumqueryGroup.OrderBy(o => o.Key))
{ {
bool IsDisplay = false;
//bool IsDisplay = false;
if (_currentUser.Id.Value == Guid.Parse(AdminId))
{
IsDisplay = true;
}
else if (s.Where(m => asbitemIds.Contains(m.AsbitemId)).Count() > 0)
{
IsDisplay = true;
}
//if (_currentUser.Id.Value == Guid.Parse(AdminId))
//{
// IsDisplay = true;
//}
//else if (s.Where(m => asbitemIds.Contains(m.AsbitemId)).Count() > 0)
//{
// IsDisplay = true;
//}
if (IsDisplay)
//if (IsDisplay)
//{
entlist.Add(new PatientRegisterOrNoDto
{ {
entlist.Add(new PatientRegisterOrNoDto
{
CreationTime = s.FirstOrDefault().a.CreationTime,
CreatorId = s.FirstOrDefault().a.CreatorId,
Id = s.FirstOrDefault().a.Id,
LastModificationTime = s.FirstOrDefault().a.LastModificationTime,
LastModifierId = s.FirstOrDefault().a.LastModifierId,
ThirdInfo = s.FirstOrDefault().a.ThirdInfo,
SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId,
SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate),
SexId = s.FirstOrDefault().a.SexId,
Age = s.FirstOrDefault().a.Age,
AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate),
AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId,
BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId,
CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId,
CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId,
GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes,
InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure,
IsAudit = s.FirstOrDefault().a.IsAudit,
IsLock = s.FirstOrDefault().a.IsLock,
IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart,
IsNameHide = s.FirstOrDefault().a.IsNameHide,
IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow,
IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide,
IsUpload = s.FirstOrDefault().a.IsUpload,
IsVip = s.FirstOrDefault().a.IsVip,
JobCardNo = s.FirstOrDefault().a.JobCardNo,
JobPost = s.FirstOrDefault().a.JobPost,
JobTitle = s.FirstOrDefault().a.JobTitle,
MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId,
MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo,
MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId,
MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId,
MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate),
MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId,
MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId,
PatientId = s.FirstOrDefault().a.PatientId,
PatientName = s.FirstOrDefault().a.PatientName,
PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId,
Photo = s.FirstOrDefault().a.Photo,
Remark = s.FirstOrDefault().a.Remark,
ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes,
Salesman = s.FirstOrDefault().a.Salesman,
SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId,
CreatorName = "",
LastModifierName = "",
Address = s.FirstOrDefault().ab.Address, //档案表信息
BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId,
DisplayName = s.FirstOrDefault().ab.DisplayName,
Email = s.FirstOrDefault().ab.Email,
IdNo = s.FirstOrDefault().ab.IdNo,
MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
NationId = s.FirstOrDefault().ab.NationId,
PatientNo = s.FirstOrDefault().ab.PatientNo,
PatientPassword = s.FirstOrDefault().ab.PatientPassword,
PostalCode = s.FirstOrDefault().ab.PostalCode,
Telephone = s.FirstOrDefault().ab.Telephone,
CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id,
CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result
});
}
CreationTime = s.FirstOrDefault().a.CreationTime,
CreatorId = s.FirstOrDefault().a.CreatorId,
Id = s.FirstOrDefault().a.Id,
LastModificationTime = s.FirstOrDefault().a.LastModificationTime,
LastModifierId = s.FirstOrDefault().a.LastModifierId,
ThirdInfo = s.FirstOrDefault().a.ThirdInfo,
SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId,
SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate),
SexId = s.FirstOrDefault().a.SexId,
Age = s.FirstOrDefault().a.Age,
AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate),
AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId,
BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId,
CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId,
CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId,
GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes,
InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure,
IsAudit = s.FirstOrDefault().a.IsAudit,
IsLock = s.FirstOrDefault().a.IsLock,
IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart,
IsNameHide = s.FirstOrDefault().a.IsNameHide,
IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow,
IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide,
IsUpload = s.FirstOrDefault().a.IsUpload,
IsVip = s.FirstOrDefault().a.IsVip,
JobCardNo = s.FirstOrDefault().a.JobCardNo,
JobPost = s.FirstOrDefault().a.JobPost,
JobTitle = s.FirstOrDefault().a.JobTitle,
MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId,
MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo,
MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId,
MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId,
MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate),
MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId,
MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId,
PatientId = s.FirstOrDefault().a.PatientId,
PatientName = s.FirstOrDefault().a.PatientName,
PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId,
Photo = s.FirstOrDefault().a.Photo,
Remark = s.FirstOrDefault().a.Remark,
ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes,
Salesman = s.FirstOrDefault().a.Salesman,
SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId,
CreatorName = "",
LastModifierName = "",
Address = s.FirstOrDefault().ab.Address, //档案表信息
BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId,
DisplayName = s.FirstOrDefault().ab.DisplayName,
Email = s.FirstOrDefault().ab.Email,
IdNo = s.FirstOrDefault().ab.IdNo,
MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
NationId = s.FirstOrDefault().ab.NationId,
PatientNo = s.FirstOrDefault().ab.PatientNo,
PatientPassword = s.FirstOrDefault().ab.PatientPassword,
PostalCode = s.FirstOrDefault().ab.PostalCode,
Telephone = s.FirstOrDefault().ab.Telephone,
CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id,
CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result
});
//}
} }
@ -2201,7 +2206,7 @@ namespace Shentun.Pacs.PatientRegisters
var entity = await _repository.GetAsync(input.PatientRegisterId); var entity = await _repository.GetAsync(input.PatientRegisterId);
var entitydto = ObjectMapper.Map<UpdatePatientRegisterAuditorDoctorDto, PatientRegister>(input); var entitydto = ObjectMapper.Map<UpdatePatientRegisterAuditorDoctorDto, PatientRegister>(input);
var newentity = await _manager.UpdatePatientRegisterAuditorDoctorAsync(entitydto, entity); var newentity = await _manager.UpdatePatientRegisterAuditorDoctorAsync(entitydto, entity);
return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity); return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
} }

107
src/Shentun.Pacs.Application/RegisterChecks/RegisterCheckAppService.cs

@ -11,6 +11,7 @@ using Shentun.Pacs.Models;
using Shentun.Pacs.PatientRegisters; using Shentun.Pacs.PatientRegisters;
using Shentun.Pacs.RegisterCheckItems; using Shentun.Pacs.RegisterCheckItems;
using Shentun.Pacs.RegisterCheckSummarys; using Shentun.Pacs.RegisterCheckSummarys;
using Spire.Pdf.Exporting.XPS.Schema;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -57,11 +58,13 @@ namespace Shentun.Pacs.RegisterChecks
private readonly IRepository<UserItemType> _userItemTypeRepository; private readonly IRepository<UserItemType> _userItemTypeRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
private readonly IRepository<DoctorSignIn, Guid> _doctorSignInRepository; private readonly IRepository<DoctorSignIn, Guid> _doctorSignInRepository;
private readonly IRepository<GuideType, char> _guideTypeRepository; private readonly IRepository<GuideType, char> _guideTypeRepository;
private readonly UnitOfWorkManager _unitOfWorkManager; private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository<Device, Guid> _deviceRepository;
public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository, public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -80,10 +83,11 @@ namespace Shentun.Pacs.RegisterChecks
IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository, IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository,
IRepository<ItemType> itemTypeRepository, IRepository<ItemType> itemTypeRepository,
IRepository<LisRequest, Guid> lisRequestRepository, IRepository<LisRequest, Guid> lisRequestRepository,
IRepository<DoctorSignIn, Guid> doctorSignInRepository, IRepository<DoctorSignIn, Guid> doctorSignInRepository,
IRepository<GuideType, char> guideTypeRepository, IRepository<GuideType, char> guideTypeRepository,
UnitOfWorkManager unitOfWorkManager)
UnitOfWorkManager unitOfWorkManager,
IRepository<Device, Guid> deviceRepository)
{ {
_registerCheckRepository = registerCheckRepository; _registerCheckRepository = registerCheckRepository;
_userRepository = userRepository; _userRepository = userRepository;
@ -103,10 +107,11 @@ namespace Shentun.Pacs.RegisterChecks
_registerCheckAsbitemRepository = registerCheckAsbitemRepository; _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_itemTypeRepository = itemTypeRepository; _itemTypeRepository = itemTypeRepository;
_lisRequestRepository = lisRequestRepository; _lisRequestRepository = lisRequestRepository;
_doctorSignInRepository = doctorSignInRepository; _doctorSignInRepository = doctorSignInRepository;
_guideTypeRepository = guideTypeRepository; _guideTypeRepository = guideTypeRepository;
_unitOfWorkManager = unitOfWorkManager; _unitOfWorkManager = unitOfWorkManager;
_deviceRepository = deviceRepository;
} }
/// <summary> /// <summary>
@ -278,61 +283,65 @@ namespace Shentun.Pacs.RegisterChecks
public async Task<List<RegisterCheckWithAsbitemsDto>> GetRegisterCheckWithAsbitemsAsync(PatientRegisterIdInputDto input) public async Task<List<RegisterCheckWithAsbitemsDto>> GetRegisterCheckWithAsbitemsAsync(PatientRegisterIdInputDto input)
{ {
var entlist = (await _registerCheckRepository.GetQueryableAsync())
.Include(x => x.RegisterCheckAsbitems)
.ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
.Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId)
.Contains(input.PatientRegisterId)
&& m.RegisterCheckAsbitems.Select(s => s.Asbitem.IsCheck).Contains('Y'));
var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id
join device in await _deviceRepository.GetQueryableAsync() on patientRegister.DeviceId equals device.Id into deviceTemp
from deviceHaveEmpty in deviceTemp.DefaultIfEmpty()
where patientRegister.Id == input.PatientRegisterId && asbitem.IsCheck == 'Y'
orderby itemType.DisplayOrder, asbitem.DisplayOrder ascending
select new
{
registerCheck,
registerCheckAsbitem,
asbitem,
itemType,
encodingFlag = deviceHaveEmpty != null ? deviceHaveEmpty.EncodingFlag : '0'
};
var entListDto = new List<RegisterCheckWithAsbitemsDto>();
#region 增加项目类别权限
var registerCheckGroup = query.ToList().GroupBy(g => g.registerCheck);
string AdminId = _configuration.GetValue<string>("AdminId");
if (_currentUser.Id.Value != Guid.Parse(AdminId))
foreach (var item in registerCheckGroup)
{ {
var asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
where userItemType.UserId == _currentUser.Id.Value
select asbitem.Id).ToList();
var firstItem = item.FirstOrDefault();
if (asbitemIds.Any())
string pacsDesc = "";
if (firstItem.encodingFlag == '0')
{ {
entlist = entlist.Where(m => asbitemIds.Contains(m.RegisterCheckAsbitems.FirstOrDefault().AsbitemId));
pacsDesc = !string.IsNullOrWhiteSpace(firstItem.asbitem.ShortName) ? firstItem.asbitem.ShortName : firstItem.asbitem.DisplayName;
} }
else else
{ {
return new List<RegisterCheckWithAsbitemsDto>();
pacsDesc = !string.IsNullOrWhiteSpace(firstItem.asbitem.EnglishShortName) ? firstItem.asbitem.EnglishShortName : firstItem.asbitem.DisplayName;
} }
entListDto.Add(new RegisterCheckWithAsbitemsDto
{
AsbitemName = string.Join(",", item.Select(rs => rs.asbitem.DisplayName).Distinct().ToList()),
AuditorUserId = item.Key.AuditorUserId,
AuditTime = item.Key.AuditTime,
CheckDate = DataHelper.ConversionDateToString(item.Key.CheckDate),
CheckDoctorId = item.Key.CheckDoctorId,
CheckRequestNo = item.Key.CheckRequestNo,
CompleteFlag = item.Key.CompleteFlag,
Id = item.Key.Id,
IsAudit = item.Key.IsAudit,
IsCharge = item.Where(m => m.registerCheckAsbitem.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
IsLock = item.Key.IsLock,
CheckTypeFlag = firstItem.itemType.CheckTypeFlag,
ItemTypeDisplayOrder = firstItem.itemType.DisplayOrder,
AsbitemDisplayOrder = firstItem.asbitem.DisplayOrder,
PacsDesc = pacsDesc
});
} }
#endregion
//排序
entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder))
.ThenBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder));
var entdto = entlist.ToList().Select(s => new RegisterCheckWithAsbitemsDto
{
AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()),
AuditorUserId = s.AuditorUserId,
AuditTime = s.AuditTime,
CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
CheckDoctorId = s.CheckDoctorId,
CheckRequestNo = s.CheckRequestNo,
CompleteFlag = s.CompleteFlag,
Id = s.Id,
IsAudit = s.IsAudit,
IsCharge = s.RegisterCheckAsbitems.Where(m => m.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
IsLock = s.IsLock,
CheckTypeFlag = s.RegisterCheckAsbitems.First().Asbitem.ItemType.CheckTypeFlag,
ItemTypeDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.ItemType.DisplayOrder,
AsbitemDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.DisplayOrder,
}).ToList();
return entdto;
return entListDto;
} }
/// <summary> /// <summary>
@ -372,7 +381,7 @@ namespace Shentun.Pacs.RegisterChecks
registerCheck.AuditorName = input.AuditorName; registerCheck.AuditorName = input.AuditorName;
if (!string.IsNullOrWhiteSpace(input.LisSampleNo)) if (!string.IsNullOrWhiteSpace(input.LisSampleNo))
registerCheck.LisSampleNo = input.LisSampleNo; registerCheck.LisSampleNo = input.LisSampleNo;
if (input.SubmissionTime!=null)
if (input.SubmissionTime != null)
registerCheck.SubmissionTime = input.SubmissionTime; registerCheck.SubmissionTime = input.SubmissionTime;
if (input.AuditorTime != null) if (input.AuditorTime != null)
registerCheck.AuditorTime = input.AuditorTime; registerCheck.AuditorTime = input.AuditorTime;
@ -775,7 +784,7 @@ namespace Shentun.Pacs.RegisterChecks
} }
/// <summary> /// <summary>
/// 医生签到 签退 /// 医生签到 签退

184
src/Shentun.Pacs.Application/Worklists/WorklistAppService.cs

@ -62,30 +62,37 @@ namespace Shentun.Pacs.Worklists
} }
var queryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join deviceType in await _deviceTypeRepository.GetQueryableAsync() on asbitem.DeviceTypeId equals deviceType.Id
where registerCheck.ScheduledAet == input.ScheduledAet
&& registerCheck.WorklistPreCheckDate != null
&& registerCheck.WorklistPreCheckDate >= Convert.ToDateTime(input.StartDate)
&& registerCheck.WorklistPreCheckDate < Convert.ToDateTime(input.EndDate).AddDays(1)
&& (deviceType.DisplayName == input.Modality || deviceType.Alias.Contains(input.Modality))
select new
{
patientRegister,
registerCheck,
deviceType,
asbitemName = !string.IsNullOrWhiteSpace(asbitem.ShortName) ? asbitem.ShortName : asbitem.DisplayName,
endAsbitemName = !string.IsNullOrWhiteSpace(asbitem.EnglishShortName) ? asbitem.EnglishShortName : asbitem.DisplayName,
isFilmRelease = asbitem.IsFilmRelease
}).ToList();
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join deviceType in await _deviceTypeRepository.GetQueryableAsync() on asbitem.DeviceTypeId equals deviceType.Id
where registerCheck.ScheduledAet == input.ScheduledAet
&& registerCheck.WorklistPreCheckDate != null
&& registerCheck.WorklistPreCheckDate >= Convert.ToDateTime(input.StartDate)
&& registerCheck.WorklistPreCheckDate < Convert.ToDateTime(input.EndDate).AddDays(1)
&& (deviceType.DisplayName == input.Modality || deviceType.Alias.Contains(input.Modality))
select new
{
patientRegister,
registerCheck,
deviceType,
asbitemName = !string.IsNullOrWhiteSpace(asbitem.ShortName) ? asbitem.ShortName : asbitem.DisplayName,
endAsbitemName = !string.IsNullOrWhiteSpace(asbitem.EnglishShortName) ? asbitem.EnglishShortName : asbitem.DisplayName,
isFilmRelease = asbitem.IsFilmRelease
});
query = query.Where(m => m.registerCheck.IsSignIn == input.IsSignIn);
var queryList = query.ToList();
var checkRequestNoGroup = queryList.GroupBy(g => g.registerCheck.CheckRequestNo); var checkRequestNoGroup = queryList.GroupBy(g => g.registerCheck.CheckRequestNo);
var entListDto = new List<GetWorklistPatientListDto>(); var entListDto = new List<GetWorklistPatientListDto>();
foreach (var item in checkRequestNoGroup) foreach (var item in checkRequestNoGroup)
{ {
string examDescription = string.Join(",", item.Select(ss => ss.asbitemName).Distinct()); string examDescription = string.Join(",", item.Select(ss => ss.asbitemName).Distinct());
@ -130,13 +137,79 @@ namespace Shentun.Pacs.Worklists
StudyUID = "", StudyUID = "",
Title = "" Title = ""
}); });
} }
//#region 标记签收
//var signRegisterChecks = queryList.Select(s => s.registerCheck).Distinct().ToList();
//foreach (var item in signRegisterChecks)
//{
// item.SignInTime = DateTime.Now;
// item.IsSignIn = 'Y';
//}
//await _registerCheckRepository.UpdateManyAsync(signRegisterChecks);
//#endregion
return entListDto; return entListDto;
} }
/// <summary>
/// 修改worklist中数据的签收状态
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Worklist/UpdateWorklistIsSignIn")]
[AllowAnonymous]
public async Task UpdateWorklistIsSignInAsync(UpdateWorklistIsSignInInputDto input)
{
if (string.IsNullOrWhiteSpace(input.ScheduledAet))
{
throw new UserFriendlyException("预检AET不能为空");
}
if (string.IsNullOrWhiteSpace(input.Modality))
{
throw new UserFriendlyException("设备类型不能为空");
}
if (string.IsNullOrWhiteSpace(input.CheckRequestNo))
{
throw new UserFriendlyException("检查条码不能为空");
}
var queryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join deviceType in await _deviceTypeRepository.GetQueryableAsync() on asbitem.DeviceTypeId equals deviceType.Id
where registerCheck.ScheduledAet == input.ScheduledAet
&& registerCheck.CheckRequestNo == input.CheckRequestNo
&& (deviceType.DisplayName == input.Modality || deviceType.Alias.Contains(input.Modality))
select new
{
registerCheck
}).ToList();
if (queryList.Any())
{
foreach (var item in queryList)
{
item.registerCheck.SignInTime = DateTime.Now;
item.registerCheck.IsSignIn = input.IsSignIn;
}
await _registerCheckRepository.UpdateManyAsync(queryList.Select(s => s.registerCheck));
}
else
{
throw new UserFriendlyException("未查询到数据");
}
}
/// <summary> /// <summary>
/// 创建检查项目worklist数据 /// 创建检查项目worklist数据
/// </summary> /// </summary>
@ -186,5 +259,78 @@ namespace Shentun.Pacs.Worklists
await _registerCheckRepository.UpdateAsync(registerCheckEnt); await _registerCheckRepository.UpdateAsync(registerCheckEnt);
} }
/// <summary>
/// 根据设备类型,AET,条形码获取组合项目简称
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Worklist/GetRegisterCheckAsbitemName")]
[AllowAnonymous]
public async Task<GetRegisterCheckAsbitemNameDto> GetRegisterCheckAsbitemNameAsync(GetRegisterCheckAsbitemNameInputDto input)
{
var entDto = new GetRegisterCheckAsbitemNameDto();
if (string.IsNullOrWhiteSpace(input.ScheduledAet))
{
throw new UserFriendlyException("预检AET不能为空");
}
if (string.IsNullOrWhiteSpace(input.Modality))
{
throw new UserFriendlyException("设备类型不能为空");
}
if (string.IsNullOrWhiteSpace(input.CheckRequestNo))
{
throw new UserFriendlyException("检查条码不能为空");
}
var queryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join deviceType in await _deviceTypeRepository.GetQueryableAsync() on asbitem.DeviceTypeId equals deviceType.Id
where registerCheck.ScheduledAet == input.ScheduledAet
&& registerCheck.CheckRequestNo == input.CheckRequestNo
&& (deviceType.DisplayName == input.Modality || deviceType.Alias.Contains(input.Modality))
select new
{
asbitemName = !string.IsNullOrWhiteSpace(asbitem.ShortName) ? asbitem.ShortName : asbitem.DisplayName,
endAsbitemName = !string.IsNullOrWhiteSpace(asbitem.EnglishShortName) ? asbitem.EnglishShortName : asbitem.DisplayName,
isFilmRelease = asbitem.IsFilmRelease
}).ToList();
if (queryList.Any())
{
string examDescription = string.Join(",", queryList.Select(ss => ss.asbitemName).Distinct());
if (queryList.Where(m => m.isFilmRelease == 'N').Count() > 0)
{
examDescription += ",不出片";
}
if (examDescription.Length > 64)
{
examDescription = examDescription.Substring(0, 64);
}
string examEngDescription = string.Join(",", queryList.Select(ss => ss.isFilmRelease == 'N' ? ss.endAsbitemName + "(BU)" : ss.endAsbitemName).Distinct());
if (examEngDescription.Length > 64)
{
examEngDescription = examEngDescription.Substring(0, 64);
}
entDto.AsbitemShortName = examDescription;
entDto.AsbitemEngShortName = examEngDescription;
}
else
{
throw new UserFriendlyException("未查询到数据");
}
return entDto;
}
} }
} }
Loading…
Cancel
Save