From 9c736d67867cfd24de9e76d29ae2becf98e5ce81 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Sun, 12 May 2024 18:57:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E7=94=9F=E8=AF=8A=E5=8F=B0=E3=80=81?= =?UTF-8?q?=E6=80=BB=E8=AF=8A=E5=8C=BB=E7=94=9F=E8=AF=8A=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoctorPeisRecordListInputDto.cs | 61 +++ .../SumDoctorPeisRecordListInputtDto.cs | 62 +++ .../BaseDataHandleAppService.cs | 168 +++---- .../PatientRegisterAppService.cs | 435 ++++++++++++++---- .../Enums/PatientRegisterCompleteFlag.cs | 3 + 5 files changed, 551 insertions(+), 178 deletions(-) create mode 100644 src/Shentun.Peis.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs create mode 100644 src/Shentun.Peis.Application.Contracts/PatientRegisters/SumDoctorPeisRecordListInputtDto.cs diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs new file mode 100644 index 0000000..2c19086 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs @@ -0,0 +1,61 @@ +using Shentun.Peis.PeisReports; +using System; +using System.Collections.Generic; +using System.Text; +using Volo.Abp.Application.Dtos; + +namespace Shentun.Peis.PatientRegisters +{ + public class DoctorPeisRecordListInputDto : PagedAndSortedResultRequestDto + { + /// + /// 单位相关 + /// + public List CustomerOrgs { get; set; } = new List(); + + /// + /// 姓名 + /// + public string PatientName { get; set; } + + /// + /// 性别 + /// + public char? SexId { get; set; } + + + /// + /// 审核状态 + /// + public char? IsAudit { get; set; } + + + /// + /// 完成标志(0 预登记 1正式登记 2部分已检 3已总检) + /// + public char? CompleteFlag { get; set; } + + + /// + /// 项目审核状态 + /// + public char? AsbitemIsAudit { get; set; } + + /// + /// 项目检查状态 + /// + public char? AsbitemCompleteFlag { get; set; } + + /// + /// 组合项目ID 集合 + /// + public List Asbitems { get; set; } = new List(); + + ///// + ///// 是否有图 (Y N) 非必传 默认为 N + ///// + //public char IsPicture { get; set; } = 'N'; + + public override int MaxResultCount { get; set; } = 100; + } +} diff --git a/src/Shentun.Peis.Application.Contracts/PatientRegisters/SumDoctorPeisRecordListInputtDto.cs b/src/Shentun.Peis.Application.Contracts/PatientRegisters/SumDoctorPeisRecordListInputtDto.cs new file mode 100644 index 0000000..83bfbe1 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/PatientRegisters/SumDoctorPeisRecordListInputtDto.cs @@ -0,0 +1,62 @@ +using Shentun.Peis.PeisReports; +using System; +using System.Collections.Generic; +using System.Text; +using Volo.Abp.Application.Dtos; + +namespace Shentun.Peis.PatientRegisters +{ + public class SumDoctorPeisRecordListInputtDto : PagedAndSortedResultRequestDto + { + /// + /// 单位相关 + /// + public List CustomerOrgs { get; set; } = new List(); + + /// + /// 姓名 + /// + public string? PatientName { get; set; } + + /// + /// 性别 + /// + public char? SexId { get; set; } + + + /// + /// 审核状态 + /// + public char? IsAudit { get; set; } + + + /// + /// 完成标志(0 预登记 1正式登记 2部分已检 3已总检 5项目全部检查未总检) + /// + public char? CompleteFlag { get; set; } + + + ///// + ///// 是否需要过滤预登记数据 Y=过滤预登记数据 N=不过滤 默认为N (备注:只有CompleteFlag参数的值不为0的情况才有效,null值也有效) + ///// + //public char? IsFilterPreRegistration { get; set; } = 'N'; + + /// + /// 项目审核状态 + /// + public char? AsbitemIsAudit { get; set; } + + /// + /// 项目检查状态 + /// + public char? AsbitemCompleteFlag { get; set; } + + /// + /// 组合项目ID 集合 + /// + public List Asbitems { get; set; } = new List(); + + + public override int MaxResultCount { get; set; } = 100; + } +} diff --git a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs index 9a6f5e3..e2071f5 100644 --- a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs +++ b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs @@ -2768,130 +2768,136 @@ namespace Shentun.Peis.DataMigrations if (patientRegisterList.Any()) { + List patientRegisterNos = new List { "P23083101999", + "P23083100427", "P23083101608","P23083100503", "P23083102172", + "P23083102000", "P23083100563", "P23083100542" }; + foreach (var item in patientRegisterList) { - using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + if (!patientRegisterNos.Contains(item.PatientRegisterNo)) { - #region 转换成老系统PatientRegisterId - string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync()) - .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue; - #endregion - - - var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion from patient_register where patient_register_id='{oldPatientRegisterId}' "); - if (oldSum.Rows.Count == 1) + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { - string oldSummary = oldSum.Rows[0][0].ToString(); - string oldSuggestion= oldSum.Rows[0][1].ToString(); - - if (!string.IsNullOrWhiteSpace(oldSummary)) - { + #region 转换成老系统PatientRegisterId + string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue; + #endregion - Guid sumSummaryHeaderId = GuidGenerator.Create(); - var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId) - { - DisplayOrder = 1, - SummaryFlag = '0', - PatientRegisterId = item.Id, - SummaryTitle = "." - }; + #region 综述、建议 + var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' "); - await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader); + if (oldSum.Rows.Count == 1) + { + string oldSummary = oldSum.Rows[0][0].ToString(); + string oldSuggestion = oldSum.Rows[0][1].ToString(); - Guid sumSummaryContentId = GuidGenerator.Create(); - var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId) + if (!string.IsNullOrWhiteSpace(oldSummary)) { - DisplayOrder = 1, - SumSummaryHeaderId = sumSummaryHeaderId, - SummaryContent = oldSummary - }; - await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent); + Guid sumSummaryHeaderId = GuidGenerator.Create(); - await uow.CompleteAsync(); - } + var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId) + { + DisplayOrder = 1, + SummaryFlag = '0', + PatientRegisterId = item.Id, + SummaryTitle = "综述" + }; + await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader); + Guid sumSummaryContentId = GuidGenerator.Create(); + var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId) + { + DisplayOrder = 1, + SumSummaryHeaderId = sumSummaryHeaderId, + SummaryContent = oldSummary + }; + await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent); - if (!string.IsNullOrWhiteSpace(oldSuggestion)) - { + } - Guid sumSuggestionHeaderId = GuidGenerator.Create(); - var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId) + if (!string.IsNullOrWhiteSpace(oldSuggestion)) { - DisplayOrder = 1, - SuggestionFlag = '0', - PatientRegisterId = item.Id, - SuggestionTitle = "." - }; - await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader); + Guid sumSuggestionHeaderId = GuidGenerator.Create(); - Guid sumSuggestionContentId = GuidGenerator.Create(); - var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId) - { - DisplayOrder = 1, - SuggestionContent = oldSuggestion, - SuggestionType = SuggestionTypeFlag.HealthGuidance, - SumSuggestionHeaderId = sumSuggestionHeaderId - }; + var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId) + { + DisplayOrder = 1, + SuggestionFlag = '0', + PatientRegisterId = item.Id, + SuggestionTitle = "建议" + }; - await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent); + await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader); - await uow.CompleteAsync(); - } + Guid sumSuggestionContentId = GuidGenerator.Create(); + var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId) + { + DisplayOrder = 1, + SuggestionContent = oldSuggestion, + SuggestionType = SuggestionTypeFlag.HealthGuidance, + SumSuggestionHeaderId = sumSuggestionHeaderId + }; - } + await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent); - - var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc "); + #region 总症诊断 + var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc "); - if (oldSummaryDiagnosis.Rows.Count > 0) - { - //获取建议头 - var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == item.Id); - if (sumSuggestionHeaderEnt != null) - { - List sumDiagnosisInsert = new List(); - - foreach (DataRow row in oldSummaryDiagnosis.Rows) - { - var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()) - .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault(); - if (diagnosisEnt != null) + if (oldSummaryDiagnosis.Rows.Count > 0) { + List sumDiagnosisInsert = new List(); - var dataSumDiagnosis = new SumDiagnosis + foreach (DataRow row in oldSummaryDiagnosis.Rows) { - DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1, - PatientRegisterId = item.Id, - DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue), - SumSuggestionHeaderId = sumSuggestionHeaderEnt.Id - }; + var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault(); + if (diagnosisEnt != null) + { + + var dataSumDiagnosis = new SumDiagnosis + { + DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1, + PatientRegisterId = item.Id, + DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue), + SumSuggestionHeaderId = sumSuggestionContentId + }; + + sumDiagnosisInsert.Add(dataSumDiagnosis); + + + } + + + } + + if (sumDiagnosisInsert.Any()) + await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert); - sumDiagnosisInsert.Add(dataSumDiagnosis); } + #endregion } - if (sumDiagnosisInsert.Any()) - await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert); - await uow.CompleteAsync(); } - } + #endregion - await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' "); + await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' "); + } } + } await TransferSumSummaryData(); diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs index ebb7db0..51d0f9e 100644 --- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs @@ -1065,29 +1065,31 @@ namespace Shentun.Peis.PatientRegisters await CurrentUnitOfWork.SaveChangesAsync(); return; } + + /// - /// 体检记录查询 + /// 体检记录查询 医生诊台 /// /// /// - [HttpPost("api/patientregister/getpeisrecordlist")] - public async Task> GetPeisRecordListAsync(GetPeisRecordListRequestDto input) + [HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")] + public async Task> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input) { - var customerOrgList = await _customerOrgRepository.GetListAsync(); var query = from a in await _repository.GetQueryableAsync() join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb from ab in bb.DefaultIfEmpty() - join c in await _userRepository.GetQueryableAsync() on a.CreatorId equals c.Id into cc + join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc from ac in cc.DefaultIfEmpty() - join d in await _userRepository.GetQueryableAsync() on a.LastModifierId equals d.Id into dd + join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd from ad in dd.DefaultIfEmpty() select new { a, ab, - ac, - ad + AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty, + RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9', + RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9' }; @@ -1190,22 +1192,253 @@ namespace Shentun.Peis.PatientRegisters if (input.CompleteFlag != null) { - sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag); + } + else + { + //直接过滤 + sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); + } + + if (input.IsAudit != null) + { + sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit); + } + + if (input.Asbitems.Any()) + { + + sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId)); + } + + //if (input.IsPicture == 'Y') + //{ + // //查询有图数据 + // var query_picture = from a in await _registerCheckAsbitemRepository.GetQueryableAsync() + // join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId + // select a.PatientRegisterId; + // sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id)); + //} + + if (input.AsbitemCompleteFlag != null) + { + sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag); + } + + if (input.AsbitemIsAudit != null) + { + sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit); + } + + + var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id); + + int totalCount = sumqueryGroup.Count(); + + var entlist = sumqueryGroup.OrderBy(o => o.Key).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).Select(s => 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 + + }).ToList(); + + return new PagedResultDto(totalCount, entlist); + + } + + + + /// + /// 体检记录查询 总症医生诊台 + /// + /// + /// + [HttpPost("api/app/PatientRegister/GetSumDoctorPeisRecordList")] + public async Task> GetSumDoctorPeisRecordListAsync(SumDoctorPeisRecordListInputtDto input) + { + var query = from a in await _repository.GetQueryableAsync() + join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb + from ab in bb.DefaultIfEmpty() + join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc + from ac in cc.DefaultIfEmpty() + join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd + from ad in dd.DefaultIfEmpty() + select new + { + a, + ab, + AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty, + RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9', + RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9' + }; + + + var sumquery = query; + + + if (input.CustomerOrgs.Any()) + { + + var item = input.CustomerOrgs[0]; + + if (item.CustomerOrgGroupId.Any()) + { + sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value)); + } + if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty) + { + sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId); + } + if (item.CustomerOrgId != null) + { + var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); + sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); + } + if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) + { + if (item.DateType == '1') + { + sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) && + m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1)); + } + else if (item.DateType == '2') + { + sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) && + m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); + } + else if (item.DateType == '3') + { + sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) && + m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); + } + } + + if (input.CustomerOrgs.Count > 1) + { + foreach (var item2 in input.CustomerOrgs) + { + + if (input.CustomerOrgs.IndexOf(item2) > 0) + { + var newquery = query; + if (item2.CustomerOrgGroupId.Any()) + { + newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value)); + } + if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty) + { + newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId); + } + if (item2.CustomerOrgId != null) + { + var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); + newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); + } + if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) + { + if (item2.DateType == '1') + { + newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) && + m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1)); + } + else if (item2.DateType == '2') + { + newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) && + m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); + } + else if (item2.DateType == '3') + { + newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) && + m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); + } + } + sumquery = sumquery.Union(newquery); + } + } + } + } - //if (input.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration && input.IsFilterPreRegistration != null && input.IsFilterPreRegistration == 'Y') - //{ - // //直接过滤 - // sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); - //} + if (!string.IsNullOrEmpty(input.PatientName)) + { + sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName)); + } + + if (input.SexId != null) + { + sumquery = sumquery.Where(m => m.a.SexId == input.SexId); + } + + + + if (input.CompleteFlag != null && input.CompleteFlag != PatientRegisterCompleteFlag.ItemCheckUnSumCheck) + { + sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag); } else { - //if (input.IsFilterPreRegistration != null && input.IsFilterPreRegistration == 'Y') - //{ //直接过滤 sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); - //} } if (input.IsAudit != null) @@ -1215,102 +1448,110 @@ namespace Shentun.Peis.PatientRegisters if (input.Asbitems.Any()) { - //组合项目 - var query_asbitem = from a in await _registerCheckAsbitemRepository.GetQueryableAsync() - where input.Asbitems.Contains(a.AsbitemId) - select a.PatientRegisterId; - sumquery = sumquery.Where(m => query_asbitem.Contains(m.a.Id)); + + sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId)); } - if (input.IsPicture == 'Y') + + + if (input.AsbitemCompleteFlag != null) { - //查询有图数据 - var query_picture = from a in await _registerCheckAsbitemRepository.GetQueryableAsync() - join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId - select a.PatientRegisterId; - sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id)); + sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag); } + if (input.AsbitemIsAudit != null) + { + sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit); + } + var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id); - int totalCount = sumquery.Count(); - sumquery = sumquery.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount); + List entlist = new List(); - var entlist = sumquery.Select(s => new PatientRegisterOrNoDto + foreach (var s in sumqueryGroup.OrderBy(o => o.Key)) { - CreationTime = s.a.CreationTime, - CreatorId = s.a.CreatorId, - Id = s.a.Id, - LastModificationTime = s.a.LastModificationTime, - LastModifierId = s.a.LastModifierId, - ThirdInfo = s.a.ThirdInfo, - SummaryDoctorId = s.a.SummaryDoctorId, - SummaryDate = DataHelper.ConversionDateToString(s.a.SummaryDate), - SexId = s.a.SexId, - Age = s.a.Age, - AuditDate = DataHelper.ConversionDateToString(s.a.AuditDate), - AuditDoctorId = s.a.AuditDoctorId, - BirthDate = DataHelper.ConversionDateToString(s.a.BirthDate), - CompleteFlag = s.a.CompleteFlag, - CustomerOrgGroupId = s.a.CustomerOrgGroupId, - CustomerOrgId = s.a.CustomerOrgId, - CustomerOrgRegisterId = s.a.CustomerOrgRegisterId, - GuidePrintTimes = s.a.GuidePrintTimes, - InterposeMeasure = s.a.InterposeMeasure, - IsAudit = s.a.IsAudit, - IsLock = s.a.IsLock, - IsMedicalStart = s.a.IsMedicalStart, - IsNameHide = s.a.IsNameHide, - IsPhoneFollow = s.a.IsPhoneFollow, - IsRecoverGuide = s.a.IsRecoverGuide, - IsUpload = s.a.IsUpload, - IsVip = s.a.IsVip, - JobCardNo = s.a.JobCardNo, - JobPost = s.a.JobPost, - JobTitle = s.a.JobTitle, - MaritalStatusId = s.a.MaritalStatusId, - MedicalCardNo = s.a.MedicalCardNo, - MedicalConclusionId = s.a.MedicalConclusionId, - MedicalPackageId = s.a.MedicalPackageId, - MedicalStartDate = DataHelper.ConversionDateToString(s.a.MedicalStartDate), - MedicalTimes = s.a.MedicalTimes, - MedicalTypeId = s.a.MedicalTypeId, - MedicalCenterId = s.a.MedicalCenterId, - PatientId = s.a.PatientId, - PatientName = s.a.PatientName, - PatientRegisterNo = s.a.PatientRegisterNo, - PersonnelTypeId = s.a.PersonnelTypeId, - Photo = s.a.Photo, - Remark = s.a.Remark, - ReportPrintTimes = s.a.ReportPrintTimes, - Salesman = s.a.Salesman, - SexHormoneTermId = s.a.SexHormoneTermId, - CreatorName = s.ac != null ? s.ac.Surname : "", - LastModifierName = s.ad != null ? s.ad.Surname : "", - Address = s.ab.Address, //档案表信息 - BirthPlaceId = s.ab.BirthPlaceId, - DisplayName = s.ab.DisplayName, - Email = s.ab.Email, - IdNo = s.ab.IdNo, - MobileTelephone = s.ab.MobileTelephone, - NationId = s.ab.NationId, - PatientNo = s.ab.PatientNo, - PatientPassword = s.ab.PatientPassword, - PostalCode = s.ab.PostalCode, - Telephone = s.ab.Telephone, - CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.a.CustomerOrgId), - CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.a.CustomerOrgId), - CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.a.CustomerOrgId) + if (input.CompleteFlag != PatientRegisterCompleteFlag.ItemCheckUnSumCheck + || s.Where(m => m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.Checked).Count() == 0) + { + 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 + }); + } - }).ToList(); + } - return new PagedResultDto(totalCount, entlist); + int totalCount = entlist.Count; - } + entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList(); + return new PagedResultDto(totalCount, entlist); + } diff --git a/src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs b/src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs index a908dd4..00c5afa 100644 --- a/src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs +++ b/src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs @@ -30,5 +30,8 @@ namespace Shentun.Peis.Enums [Description("已审核")] public const char Audit = '4'; + + [Description("项目全部已检未总检")] + public const char ItemCheckUnSumCheck = '5'; } }