DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
156ab18679
  1. 61
      src/Shentun.Peis.Application.Contracts/PatientRegisters/DoctorPeisRecordListInputDto.cs
  2. 62
      src/Shentun.Peis.Application.Contracts/PatientRegisters/SumDoctorPeisRecordListInputtDto.cs
  3. 168
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  4. 435
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  5. 3
      src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs
  6. 7
      src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
  7. 8
      src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs
  8. 7
      src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
  9. 1
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/PrimarykeyBuilders/PrimarykeyBuilderDbMapping.cs
  10. 14272
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512114415_init20240502002.Designer.cs
  11. 43
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512114415_init20240502002.cs
  12. 3
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
  13. 25
      test/Shentun.Peis.Domain.Tests/RegisterCheckAsbitemManagerTest.cs

61
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
{
/// <summary>
/// 单位相关
/// </summary>
public List<GetPeisReportDetailRequest_CustomerOrg> CustomerOrgs { get; set; } = new List<GetPeisReportDetailRequest_CustomerOrg>();
/// <summary>
/// 姓名
/// </summary>
public string PatientName { get; set; }
/// <summary>
/// 性别
/// </summary>
public char? SexId { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public char? IsAudit { get; set; }
/// <summary>
/// 完成标志(0 预登记 1正式登记 2部分已检 3已总检)
/// </summary>
public char? CompleteFlag { get; set; }
/// <summary>
/// 项目审核状态
/// </summary>
public char? AsbitemIsAudit { get; set; }
/// <summary>
/// 项目检查状态
/// </summary>
public char? AsbitemCompleteFlag { get; set; }
/// <summary>
/// 组合项目ID 集合
/// </summary>
public List<Guid> Asbitems { get; set; } = new List<Guid>();
///// <summary>
///// 是否有图 (Y N) 非必传 默认为 N
///// </summary>
//public char IsPicture { get; set; } = 'N';
public override int MaxResultCount { get; set; } = 100;
}
}

62
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
{
/// <summary>
/// 单位相关
/// </summary>
public List<GetPeisReportDetailRequest_CustomerOrg> CustomerOrgs { get; set; } = new List<GetPeisReportDetailRequest_CustomerOrg>();
/// <summary>
/// 姓名
/// </summary>
public string? PatientName { get; set; }
/// <summary>
/// 性别
/// </summary>
public char? SexId { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public char? IsAudit { get; set; }
/// <summary>
/// 完成标志(0 预登记 1正式登记 2部分已检 3已总检 5项目全部检查未总检)
/// </summary>
public char? CompleteFlag { get; set; }
///// <summary>
///// 是否需要过滤预登记数据 Y=过滤预登记数据 N=不过滤 默认为N (备注:只有CompleteFlag参数的值不为0的情况才有效,null值也有效)
///// </summary>
//public char? IsFilterPreRegistration { get; set; } = 'N';
/// <summary>
/// 项目审核状态
/// </summary>
public char? AsbitemIsAudit { get; set; }
/// <summary>
/// 项目检查状态
/// </summary>
public char? AsbitemCompleteFlag { get; set; }
/// <summary>
/// 组合项目ID 集合
/// </summary>
public List<Guid> Asbitems { get; set; } = new List<Guid>();
public override int MaxResultCount { get; set; } = 100;
}
}

168
src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs

@ -2768,130 +2768,136 @@ namespace Shentun.Peis.DataMigrations
if (patientRegisterList.Any()) if (patientRegisterList.Any())
{ {
List<string> patientRegisterNos = new List<string> { "P23083101999",
"P23083100427", "P23083101608","P23083100503", "P23083102172",
"P23083102000", "P23083100563", "P23083100542" };
foreach (var item in patientRegisterList) 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<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
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<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
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(); await TransferSumSummaryData();

435
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -1065,29 +1065,31 @@ namespace Shentun.Peis.PatientRegisters
await CurrentUnitOfWork.SaveChangesAsync(); await CurrentUnitOfWork.SaveChangesAsync();
return; return;
} }
/// <summary> /// <summary>
/// 体检记录查询
/// 体检记录查询 医生诊台
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/patientregister/getpeisrecordlist")]
public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetPeisRecordListAsync(GetPeisRecordListRequestDto input)
[HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")]
public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input)
{ {
var customerOrgList = await _customerOrgRepository.GetListAsync();
var query = from a in await _repository.GetQueryableAsync() var query = from a in await _repository.GetQueryableAsync()
join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
from ab in bb.DefaultIfEmpty() 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() 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() from ad in dd.DefaultIfEmpty()
select new select new
{ {
a, a,
ab, 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) if (input.CompleteFlag != null)
{ {
sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag); 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<PatientRegisterOrNoDto>(totalCount, entlist);
}
/// <summary>
/// 体检记录查询 总症医生诊台
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/GetSumDoctorPeisRecordList")]
public async Task<PagedResultDto<PatientRegisterOrNoDto>> 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 else
{ {
//if (input.IsFilterPreRegistration != null && input.IsFilterPreRegistration == 'Y')
//{
//直接过滤 //直接过滤
sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
//}
} }
if (input.IsAudit != null) if (input.IsAudit != null)
@ -1215,102 +1448,110 @@ namespace Shentun.Peis.PatientRegisters
if (input.Asbitems.Any()) 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<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
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<PatientRegisterOrNoDto>(totalCount, entlist);
int totalCount = entlist.Count;
}
entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
}

3
src/Shentun.Peis.Domain.Shared/Enums/PatientRegisterCompleteFlag.cs

@ -30,5 +30,8 @@ namespace Shentun.Peis.Enums
[Description("已审核")] [Description("已审核")]
public const char Audit = '4'; public const char Audit = '4';
[Description("项目全部已检未总检")]
public const char ItemCheckUnSumCheck = '5';
} }
} }

7
src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs

@ -426,9 +426,14 @@ namespace Shentun.Peis.LisRequests
{ {
//新的日期 为1 maxnum //新的日期 为1 maxnum
primarykeyBuilderEnt.DateString = date; primarykeyBuilderEnt.DateString = date;
maxnum = "1";
}
else
{
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
} }
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号 primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号
LisRequestNo = lis_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0'); LisRequestNo = lis_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(lis_request_no_rule_tail_len), '0');

8
src/Shentun.Peis.Domain/PatientRegisters/PatientRegisterManager.cs

@ -823,9 +823,13 @@ namespace Shentun.Peis.PatientRegisters
{ {
//新的日期 为1 maxnum //新的日期 为1 maxnum
primarykeyBuilderEnt.DateString = date; primarykeyBuilderEnt.DateString = date;
maxnum = "1";
} }
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
else
{
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
}
primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号 primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号
PatientRegisterNo = patient_register_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(patient_register_no_rule_tail_len), '0'); PatientRegisterNo = patient_register_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(patient_register_no_rule_tail_len), '0');

7
src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs

@ -524,9 +524,14 @@ namespace Shentun.Peis.RegisterChecks
{ {
//新的日期 为1 maxnum //新的日期 为1 maxnum
primarykeyBuilderEnt.DateString = date; primarykeyBuilderEnt.DateString = date;
maxnum = "1";
}
else
{
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
} }
maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号 primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号
CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0'); CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');

1
src/Shentun.Peis.EntityFrameworkCore/DbMapping/PrimarykeyBuilders/PrimarykeyBuilderDbMapping.cs

@ -21,7 +21,6 @@ namespace Shentun.Peis.DbMapping
//entity.Property(e => e.Id).HasComment("主键编号"); //entity.Property(e => e.Id).HasComment("主键编号");
entity.Property(e => e.DateString) entity.Property(e => e.DateString)
.IsFixedLength()
.HasComment("日期"); .HasComment("日期");
entity.Property(e => e.SerialNo).HasComment("序列号"); entity.Property(e => e.SerialNo).HasComment("序列号");

14272
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512114415_init20240502002.Designer.cs
File diff suppressed because it is too large
View File

43
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512114415_init20240502002.cs

@ -0,0 +1,43 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class init20240502002 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "date_string",
table: "primarykey_builder",
type: "character varying(8)",
maxLength: 8,
nullable: true,
comment: "日期",
oldClrType: typeof(string),
oldType: "character(8)",
oldFixedLength: true,
oldMaxLength: 8,
oldNullable: true,
oldComment: "日期");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "date_string",
table: "primarykey_builder",
type: "character(8)",
fixedLength: true,
maxLength: 8,
nullable: true,
comment: "日期",
oldClrType: typeof(string),
oldType: "character varying(8)",
oldMaxLength: 8,
oldNullable: true,
oldComment: "日期");
}
}
}

3
src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

@ -7428,9 +7428,8 @@ namespace Shentun.Peis.Migrations
b.Property<string>("DateString") b.Property<string>("DateString")
.HasMaxLength(8) .HasMaxLength(8)
.HasColumnType("character(8)")
.HasColumnType("character varying(8)")
.HasColumnName("date_string") .HasColumnName("date_string")
.IsFixedLength()
.HasComment("日期"); .HasComment("日期");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")

25
test/Shentun.Peis.Domain.Tests/RegisterCheckAsbitemManagerTest.cs

@ -1,7 +1,9 @@
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.GuidTypes; using Shentun.Peis.GuidTypes;
using Shentun.Peis.LisRequests;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.RegisterAsbitems; using Shentun.Peis.RegisterAsbitems;
using Shentun.Peis.RegisterChecks;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -22,6 +24,8 @@ namespace Shentun.Peis
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly RegisterCheckAsbitemManager _manager; private readonly RegisterCheckAsbitemManager _manager;
private readonly RegisterCheckManager _registerCheckManager;
private readonly ITestOutputHelper _output; private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IUnitOfWorkManager _unitOfWorkManager;
public RegisterCheckAsbitemManagerTest(ITestOutputHelper output) public RegisterCheckAsbitemManagerTest(ITestOutputHelper output)
@ -34,7 +38,8 @@ namespace Shentun.Peis
_manager = GetRequiredService<RegisterCheckAsbitemManager>(); _manager = GetRequiredService<RegisterCheckAsbitemManager>();
_registerCheckManager = GetRequiredService<RegisterCheckManager>();
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>(); _unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
} }
@ -92,5 +97,23 @@ namespace Shentun.Peis
} }
} }
/// <summary>
///
/// </summary>
/// <returns></returns>
[Fact]
public async Task CreateCheckRequerstNoAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
Guid OrganizationUnitId = Guid.Parse("0de5b78a-731d-4f80-b262-655ebbf04581");
string ff = await _registerCheckManager.CreateCheckRequestNo(OrganizationUnitId);
await unitOfWork.CompleteAsync();
}
}
} }
} }
Loading…
Cancel
Save