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. 322
      src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
  9. 181
      src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs
  10. 99
      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>
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;
}
}

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

@ -65,5 +65,10 @@ namespace Shentun.Pacs.RegisterChecks
/// 组合项目顺序
/// </summary>
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>
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; }
}
}

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

@ -20,6 +20,7 @@ using Shentun.Pacs.RegisterChecks;
using Shentun.Pacs.RegisterCheckSuggestions;
using Shentun.Pacs.RegisterCheckSummarys;
using Shentun.Pacs.SumSummaryReports;
using Shentun.Pacs.SysParmValues;
using Shentun.Pacs.ThirdBookingPushs;
using Shentun.Pacs.ThirdPartyPublicInterfaces;
using Shentun.Utilities;
@ -79,6 +80,7 @@ namespace Shentun.Pacs.PacsBusiness
private readonly CacheService _cacheService;
private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
private readonly SysParmValueManager _sysParmValueManager;
public PacsBusinessAppService(
IConfiguration configuration,
@ -111,7 +113,8 @@ namespace Shentun.Pacs.PacsBusiness
IRepository<DeviceType, Guid> deviceTypeRepository,
CacheService cacheService,
UnitOfWorkManager unitOfWorkManager,
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository)
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
SysParmValueManager sysParmValueManager)
{
_configuration = configuration;
_registerCheckRepository = registerCheckRepository;
@ -144,6 +147,7 @@ namespace Shentun.Pacs.PacsBusiness
_cacheService = cacheService;
_unitOfWorkManager = unitOfWorkManager;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_sysParmValueManager = sysParmValueManager;
}
@ -236,6 +240,7 @@ namespace Shentun.Pacs.PacsBusiness
//}
#region 未用到
/// <summary>
/// 导入pacs dicom数据
/// </summary>
@ -304,6 +309,74 @@ namespace Shentun.Pacs.PacsBusiness
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>
@ -354,27 +427,7 @@ namespace Shentun.Pacs.PacsBusiness
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>
/// 获取pacs检查项目 pacs看图界面列表
@ -475,33 +528,33 @@ namespace Shentun.Pacs.PacsBusiness
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);
@ -519,29 +572,11 @@ namespace Shentun.Pacs.PacsBusiness
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
{
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
@ -557,12 +592,15 @@ namespace Shentun.Pacs.PacsBusiness
});
}
entListDto = entListDto.OrderByDescending(o => o.CheckRequestNo).ToList();
return new PagedResultDto<GetPatientRegisterPacsCheckDto>(totalCount, entListDto);
}
/// <summary>
/// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期
/// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期 000
/// InstanceId存在就不添加
/// </summary>
/// <returns></returns>
[HttpPost("api/app/PacsBusiness/ImportPacsDicomServiceData")]
@ -596,23 +634,24 @@ namespace Shentun.Pacs.PacsBusiness
if (string.IsNullOrWhiteSpace(input.FileName))
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')
{
@ -627,7 +666,7 @@ namespace Shentun.Pacs.PacsBusiness
}
/// <summary>
/// 查询人员的dicom数据
/// 查询人员的dicom数据 000
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -668,49 +707,7 @@ namespace Shentun.Pacs.PacsBusiness
}
/// <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>
/// <param name="input"></param>
/// <returns></returns>
@ -746,7 +743,7 @@ namespace Shentun.Pacs.PacsBusiness
/// <summary>
/// 获取dicom文件的数量 根据检查条码号或者实例ID查询
/// 获取dicom文件的数量 根据检查条码号或者实例ID查询 000
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -788,7 +785,7 @@ namespace Shentun.Pacs.PacsBusiness
}
/// <summary>
/// 调用dicom服务api
/// 调用dicom服务api 删除dicom
/// </summary>
/// <param name="apiUrl"></param>
/// <param name="authString"></param>
@ -838,13 +835,15 @@ namespace Shentun.Pacs.PacsBusiness
throw new UserFriendlyException("检查条码不存在");
}
string medicalCenterName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_name");
var entDto = new GetPatientRegisterByCheckRequestNoDto
{
PatientAge = patientRegisterEnt.patientRegister.Age == null ? "" : patientRegisterEnt.patientRegister.Age.ToString(),
PatientBirthDate = patientRegisterEnt.patientRegister.BirthDate == null ? "" : DataHelper.ConversionDateShortNoSymbolToString(patientRegisterEnt.patientRegister.BirthDate),
PatientName = patientRegisterEnt.patientRegister.PatientName,
PatientSex = patientRegisterEnt.patientRegister.SexId.ToString(),
HospitalName = patientRegisterEnt.medicalCenterName
HospitalName = medicalCenterName
};
return entDto;
@ -1230,7 +1229,7 @@ namespace Shentun.Pacs.PacsBusiness
if (input.BarcodeMode == '0')
{
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 " +
"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 " +
@ -1240,7 +1239,7 @@ namespace Shentun.Pacs.PacsBusiness
{
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 " +
"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 " +
@ -1359,6 +1358,14 @@ namespace Shentun.Pacs.PacsBusiness
patientEnt = await _patientRepository.InsertAsync(patientEnt, true);
}
//else
//{
// if (patientEnt.BirthDate == null && newBirthDate != null)
// {
// patientEnt.BirthDate = newBirthDate;
// await _patientRepository.UpdateAsync(patientEnt);
// }
//}
#endregion
#region 人员
@ -1387,7 +1394,8 @@ namespace Shentun.Pacs.PacsBusiness
ReportPrintTimes = 0,
PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty),
SendFlag = '0',
SexId = sexId
SexId = sexId,
BirthDate = newBirthDate
};
patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true);
@ -1439,7 +1447,7 @@ namespace Shentun.Pacs.PacsBusiness
IsAudit = 'N',
IsLock = 'N',
IsPacsCheck = 'N',
IsSignIn = 'Y',
IsSignIn = 'N',
PatientRegisterId = tempPatientRegisterId,
ScheduledAet = input.ScheduledAet,
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
/// <summary>

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

@ -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))
{
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
});
//}
}

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

@ -11,6 +11,7 @@ using Shentun.Pacs.Models;
using Shentun.Pacs.PatientRegisters;
using Shentun.Pacs.RegisterCheckItems;
using Shentun.Pacs.RegisterCheckSummarys;
using Spire.Pdf.Exporting.XPS.Schema;
using System;
using System.Collections.Generic;
using System.Linq;
@ -62,6 +63,8 @@ namespace Shentun.Pacs.RegisterChecks
private readonly IRepository<GuideType, char> _guideTypeRepository;
private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository<Device, Guid> _deviceRepository;
public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -83,7 +86,8 @@ namespace Shentun.Pacs.RegisterChecks
IRepository<DoctorSignIn, Guid> doctorSignInRepository,
IRepository<GuideType, char> guideTypeRepository,
UnitOfWorkManager unitOfWorkManager)
UnitOfWorkManager unitOfWorkManager,
IRepository<Device, Guid> deviceRepository)
{
_registerCheckRepository = registerCheckRepository;
_userRepository = userRepository;
@ -107,6 +111,7 @@ namespace Shentun.Pacs.RegisterChecks
_doctorSignInRepository = doctorSignInRepository;
_guideTypeRepository = guideTypeRepository;
_unitOfWorkManager = unitOfWorkManager;
_deviceRepository = deviceRepository;
}
/// <summary>
@ -278,61 +283,65 @@ namespace Shentun.Pacs.RegisterChecks
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'
};
#region 增加项目类别权限
string AdminId = _configuration.GetValue<string>("AdminId");
if (_currentUser.Id.Value != Guid.Parse(AdminId))
var entListDto = new List<RegisterCheckWithAsbitemsDto>();
var registerCheckGroup = query.ToList().GroupBy(g => g.registerCheck);
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
{
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>
@ -372,7 +381,7 @@ namespace Shentun.Pacs.RegisterChecks
registerCheck.AuditorName = input.AuditorName;
if (!string.IsNullOrWhiteSpace(input.LisSampleNo))
registerCheck.LisSampleNo = input.LisSampleNo;
if (input.SubmissionTime!=null)
if (input.SubmissionTime != null)
registerCheck.SubmissionTime = input.SubmissionTime;
if (input.AuditorTime != null)
registerCheck.AuditorTime = input.AuditorTime;

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 entListDto = new List<GetWorklistPatientListDto>();
foreach (var item in checkRequestNoGroup)
{
string examDescription = string.Join(",", item.Select(ss => ss.asbitemName).Distinct());
@ -130,13 +137,79 @@ namespace Shentun.Pacs.Worklists
StudyUID = "",
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;
}
/// <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>
/// 创建检查项目worklist数据
/// </summary>
@ -186,5 +259,78 @@ namespace Shentun.Pacs.Worklists
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