From f89768fb25d15544dfe8f43f2f38d96a8404ffd0 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Tue, 31 Dec 2024 14:31:51 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=A1=E7=A0=81=E9=80=BB?=
=?UTF-8?q?=E8=BE=91=E5=89=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../GetPeisAsbitemCompleteFlagDto.cs | 14 +
.../DoctorPeisRecordListInputDto.cs | 5 +
.../RegisterCheckWithAsbitemsDto.cs | 5 +
.../GetRegisterCheckAsbitemNameDto.cs | 19 +
.../GetRegisterCheckAsbitemNameInputDto.cs | 25 ++
.../GetWorklistPatientListInputDto.cs | 5 +
.../UpdateWorklistIsSignInInputDto.cs | 30 ++
.../PacsBusiness/PacsBusinessAppService.cs | 324 +++++++++++-------
.../PatientRegisterAppService.cs | 191 ++++++-----
.../RegisterChecks/RegisterCheckAppService.cs | 107 +++---
.../Worklists/WorklistAppService.cs | 184 +++++++++-
11 files changed, 616 insertions(+), 293 deletions(-)
create mode 100644 src/Shentun.Pacs.Application.Contracts/PacsBusiness/GetPeisAsbitemCompleteFlagDto.cs
create mode 100644 src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameDto.cs
create mode 100644 src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameInputDto.cs
create mode 100644 src/Shentun.Pacs.Application.Contracts/Worklists/UpdateWorklistIsSignInInputDto.cs
diff --git a/src/Shentun.Pacs.Application.Contracts/PacsBusiness/GetPeisAsbitemCompleteFlagDto.cs b/src/Shentun.Pacs.Application.Contracts/PacsBusiness/GetPeisAsbitemCompleteFlagDto.cs
new file mode 100644
index 0000000..c0b4be5
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 项目检查状态
+ ///
+ public char CompleteFlag { get; set; }
+ }
+}
diff --git a/src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs b/src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs
index 13b2989..abd8848 100644
--- a/src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs
+++ b/src/Shentun.Pacs.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs
@@ -68,6 +68,11 @@ namespace Shentun.Pacs.PatientRegisters
///
public List CheckDoctorIds { get; set; } = new List();
+ ///
+ /// 设备Id 可不传 传null查询所有
+ ///
+ public Guid? DeviceId { get; set; }
+
public override int MaxResultCount { get; set; } = 100;
}
}
diff --git a/src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs b/src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
index 26fdf0c..7031ce1 100644
--- a/src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
+++ b/src/Shentun.Pacs.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
@@ -65,5 +65,10 @@ namespace Shentun.Pacs.RegisterChecks
/// 组合项目顺序
///
public int AsbitemDisplayOrder { get; set; }
+
+ ///
+ /// 项目描述
+ ///
+ public string PacsDesc { get; set; }
}
}
diff --git a/src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameDto.cs b/src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameDto.cs
new file mode 100644
index 0000000..7a098d9
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 中文简称
+ ///
+ public string AsbitemShortName { get; set; }
+
+ ///
+ /// 英文简称
+ ///
+ public string AsbitemEngShortName { get; set; }
+ }
+}
diff --git a/src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameInputDto.cs b/src/Shentun.Pacs.Application.Contracts/Worklists/GetRegisterCheckAsbitemNameInputDto.cs
new file mode 100644
index 0000000..74ee353
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 预检AET
+ ///
+ public string ScheduledAet { get; set; }
+
+ ///
+ /// 设备类型
+ ///
+ public string Modality { get; set; }
+
+
+ ///
+ /// 条码号
+ ///
+ public string CheckRequestNo { get; set; }
+ }
+}
diff --git a/src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs b/src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs
index b50173f..0afee18 100644
--- a/src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs
+++ b/src/Shentun.Pacs.Application.Contracts/Worklists/GetWorklistPatientListInputDto.cs
@@ -26,5 +26,10 @@ namespace Shentun.Pacs.Worklists
/// 结束日期
///
public string EndDate { get; set; }
+
+ ///
+ /// 是否签收 Y=已签收 N=未签收 默认为N,查询未签收的
+ ///
+ public char IsSignIn { get; set; } = 'N';
}
}
diff --git a/src/Shentun.Pacs.Application.Contracts/Worklists/UpdateWorklistIsSignInInputDto.cs b/src/Shentun.Pacs.Application.Contracts/Worklists/UpdateWorklistIsSignInInputDto.cs
new file mode 100644
index 0000000..328261f
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 预检AET
+ ///
+ public string ScheduledAet { get; set; }
+
+ ///
+ /// 设备类型
+ ///
+ public string Modality { get; set; }
+
+ ///
+ /// 条码号
+ ///
+ public string CheckRequestNo { get; set; }
+
+ ///
+ /// 签收状态 Y N
+ ///
+ public char IsSignIn { get; set; }
+
+ }
+}
diff --git a/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs b/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
index 49512e1..8528388 100644
--- a/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
+++ b/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 _registerCheckSummaryRepository;
+ private readonly SysParmValueManager _sysParmValueManager;
public PacsBusinessAppService(
IConfiguration configuration,
@@ -111,7 +113,8 @@ namespace Shentun.Pacs.PacsBusiness
IRepository deviceTypeRepository,
CacheService cacheService,
UnitOfWorkManager unitOfWorkManager,
- IRepository registerCheckSummaryRepository)
+ IRepository 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 未用到
///
/// 导入pacs dicom数据
///
@@ -304,6 +309,74 @@ namespace Shentun.Pacs.PacsBusiness
return entListDto;
}
+ ///
+ /// 修改pacs项目检查状态及日期 已整合到其他接口,废弃
+ ///
+ ///
+ ///
+ [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);
+ }
+
+
+ ///
+ /// 查询人员的检查图片 为用到
+ ///
+ ///
+ ///
+ [HttpPost("api/app/PacsBusiness/GetRegisterCheckPictureByPatientRegisterId")]
+ public async Task> 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
+
///
@@ -354,27 +427,7 @@ namespace Shentun.Pacs.PacsBusiness
return resultDto;
}
- ///
- /// 修改pacs项目检查状态及日期
- ///
- ///
- ///
- [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);
- }
+
///
/// 获取pacs检查项目 pacs看图界面列表
@@ -475,33 +528,33 @@ namespace Shentun.Pacs.PacsBusiness
query = query.Where(m => customerOrgIds.Contains(m.customerOrgId));
}
- #region 增加项目类别权限
+ //#region 增加项目类别权限
- string AdminId = _configuration.GetValue("AdminId");
+ //string AdminId = _configuration.GetValue("AdminId");
- if (_currentUser.Id == null)
- {
- new PagedResultDto(0, new List());
- }
- 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(0, new List());
+ //}
+ //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(0, new List());
- }
+ // if (asbitemIds.Any())
+ // {
+ // query = query.Where(m => asbitemIds.Contains(m.asbitemId));
+ // }
+ // else
+ // {
+ // new PagedResultDto(0, new List());
+ // }
- }
+ //}
- #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(totalCount, entListDto);
}
///
- /// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期
+ /// 导入pacs dicom服务返回的数据 用作前端导出文件 修改pacs项目检查状态及日期 000
+ /// InstanceId存在就不添加
///
///
[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
}
///
- /// 查询人员的dicom数据
+ /// 查询人员的dicom数据 000
///
///
///
@@ -668,49 +707,7 @@ namespace Shentun.Pacs.PacsBusiness
}
///
- /// 查询人员的检查图片
- ///
- ///
- ///
- [HttpPost("api/app/PacsBusiness/GetRegisterCheckPictureByPatientRegisterId")]
- public async Task> 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;
- }
-
- ///
- /// 删除体检dicom服务数据,并清理dicom服务记录
+ /// 删除体检dicom服务数据,并清理dicom服务记录 000
///
///
///
@@ -746,7 +743,7 @@ namespace Shentun.Pacs.PacsBusiness
///
- /// 获取dicom文件的数量 根据检查条码号或者实例ID查询
+ /// 获取dicom文件的数量 根据检查条码号或者实例ID查询 000
///
///
///
@@ -788,7 +785,7 @@ namespace Shentun.Pacs.PacsBusiness
}
///
- /// 调用dicom服务api
+ /// 调用dicom服务api 删除dicom
///
///
///
@@ -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
}
+ ///
+ /// 根据检查id获取体检系统项目的检查状态
+ ///
+ ///
+ ///
+ [HttpPost("api/app/PacsBusiness/GetPeisAsbitemCompleteFlag")]
+ public async Task 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("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() {
+ 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
///
diff --git a/src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs
index 08819d0..1ab9da1 100644
--- a/src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs
+++ b/src/Shentun.Pacs.Application/PatientRegisters/PatientRegisterAppService.cs
@@ -131,7 +131,7 @@ namespace Shentun.Pacs.PatientRegisters
private readonly IRepository _patientPoisonRepository;
private readonly PatientPoisonManager _patientPoisonManager;
private readonly IRepository _diagnosisRepository;
-
+
private readonly IRepository _thirdBookingRepository;
public PatientRegisterAppService(
IRepository repository,
@@ -193,7 +193,7 @@ namespace Shentun.Pacs.PatientRegisters
IRepository patientPoisonRepository,
PatientPoisonManager patientPoisonManager,
IRepository diagnosisRepository,
-
+
IRepository thirdBookingRepository)
: base(repository)
{
@@ -256,7 +256,7 @@ namespace Shentun.Pacs.PatientRegisters
_patientPoisonRepository = patientPoisonRepository;
_patientPoisonManager = patientPoisonManager;
_diagnosisRepository = diagnosisRepository;
-
+
_thirdBookingRepository = thirdBookingRepository;
}
///
@@ -988,7 +988,7 @@ namespace Shentun.Pacs.PatientRegisters
}
-
+
//throw new Exception("后续不更新");
if (createRegisterCheckAsbitemEntity != null)
@@ -1547,20 +1547,25 @@ namespace Shentun.Pacs.PatientRegisters
}
- #region 增加项目类别权限
-
- List asbitemIds = new List();
-
- string AdminId = _configuration.GetValue("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 asbitemIds = new List();
+
+ //string AdminId = _configuration.GetValue("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
+ });
+ //}
}
@@ -2201,7 +2206,7 @@ namespace Shentun.Pacs.PatientRegisters
var entity = await _repository.GetAsync(input.PatientRegisterId);
var entitydto = ObjectMapper.Map(input);
var newentity = await _manager.UpdatePatientRegisterAuditorDoctorAsync(entitydto, entity);
-
+
return ObjectMapper.Map(newentity);
}
diff --git a/src/Shentun.Pacs.Application/RegisterChecks/RegisterCheckAppService.cs b/src/Shentun.Pacs.Application/RegisterChecks/RegisterCheckAppService.cs
index 05fbd50..36b0953 100644
--- a/src/Shentun.Pacs.Application/RegisterChecks/RegisterCheckAppService.cs
+++ b/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;
@@ -57,11 +58,13 @@ namespace Shentun.Pacs.RegisterChecks
private readonly IRepository _userItemTypeRepository;
private readonly IRepository _asbitemRepository;
private readonly IRepository _lisRequestRepository;
-
+
private readonly IRepository _doctorSignInRepository;
private readonly IRepository _guideTypeRepository;
private readonly UnitOfWorkManager _unitOfWorkManager;
+ private readonly IRepository _deviceRepository;
+
public RegisterCheckAppService(IRepository registerCheckRepository,
IRepository registerCheckItemRepository,
IRepository patientRegisterRepository,
@@ -80,10 +83,11 @@ namespace Shentun.Pacs.RegisterChecks
IRepository registerCheckAsbitemRepository,
IRepository itemTypeRepository,
IRepository lisRequestRepository,
-
+
IRepository doctorSignInRepository,
IRepository guideTypeRepository,
- UnitOfWorkManager unitOfWorkManager)
+ UnitOfWorkManager unitOfWorkManager,
+ IRepository deviceRepository)
{
_registerCheckRepository = registerCheckRepository;
_userRepository = userRepository;
@@ -103,10 +107,11 @@ namespace Shentun.Pacs.RegisterChecks
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_itemTypeRepository = itemTypeRepository;
_lisRequestRepository = lisRequestRepository;
-
+
_doctorSignInRepository = doctorSignInRepository;
_guideTypeRepository = guideTypeRepository;
_unitOfWorkManager = unitOfWorkManager;
+ _deviceRepository = deviceRepository;
}
///
@@ -278,61 +283,65 @@ namespace Shentun.Pacs.RegisterChecks
public async Task> 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();
- #region 增加项目类别权限
+ var registerCheckGroup = query.ToList().GroupBy(g => g.registerCheck);
- string AdminId = _configuration.GetValue("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
{
- return new List();
+ 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;
}
///
@@ -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;
@@ -775,7 +784,7 @@ namespace Shentun.Pacs.RegisterChecks
}
-
+
///
/// 医生签到 签退
diff --git a/src/Shentun.Pacs.Application/Worklists/WorklistAppService.cs b/src/Shentun.Pacs.Application/Worklists/WorklistAppService.cs
index c648d5b..42551a0 100644
--- a/src/Shentun.Pacs.Application/Worklists/WorklistAppService.cs
+++ b/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();
+
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;
}
+ ///
+ /// 修改worklist中数据的签收状态
+ ///
+ ///
+ [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("未查询到数据");
+ }
+
+ }
+
///
/// 创建检查项目worklist数据
///
@@ -186,5 +259,78 @@ namespace Shentun.Pacs.Worklists
await _registerCheckRepository.UpdateAsync(registerCheckEnt);
}
+
+ ///
+ /// 根据设备类型,AET,条形码获取组合项目简称
+ ///
+ ///
+ [HttpPost("api/app/Worklist/GetRegisterCheckAsbitemName")]
+ [AllowAnonymous]
+ public async Task 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;
+
+ }
}
}