You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

857 lines
44 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using Shentun.Peis.CustomerOrgs;
  5. using Shentun.Peis.Enums;
  6. using Shentun.Peis.Models;
  7. using Shentun.Peis.PatientRegisters;
  8. using Shentun.Peis.SampleTypes;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using Volo.Abp.Application.Dtos;
  15. using Volo.Abp.Application.Services;
  16. using Volo.Abp.Domain.Repositories;
  17. namespace Shentun.Peis.PeisReports
  18. {
  19. /// <summary>
  20. /// 体检查询
  21. /// </summary>
  22. [ApiExplorerSettings(GroupName = "Work")]
  23. [Authorize]
  24. public class PeisReportAppService : ApplicationService
  25. {
  26. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  27. private readonly IRepository<Patient, Guid> _patientRepository;
  28. private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
  29. private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
  30. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  31. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  32. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  33. private readonly IRepository<Sex> _sexRepository;
  34. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
  35. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  36. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  37. private readonly CustomerOrgManager _customerOrgManager;
  38. private readonly CacheService _cacheService;
  39. public PeisReportAppService(
  40. IRepository<PatientRegister, Guid> patientRegisterRepository,
  41. IRepository<Patient, Guid> patientRepository,
  42. IRepository<MedicalType, Guid> medicalTypeRepository,
  43. IRepository<PersonnelType, Guid> personnelTypeRepository,
  44. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  45. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  46. IRepository<CustomerOrg, Guid> customerOrgRepository,
  47. IRepository<Sex> sexRepository,
  48. IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
  49. IRepository<RegisterCheck, Guid> registerCheckRepository,
  50. IRepository<Asbitem, Guid> asbitemRepository,
  51. CustomerOrgManager customerOrgManager,
  52. CacheService cacheService)
  53. {
  54. this._patientRegisterRepository = patientRegisterRepository;
  55. this._patientRepository = patientRepository;
  56. this._medicalTypeRepository = medicalTypeRepository;
  57. this._personnelTypeRepository = personnelTypeRepository;
  58. this._customerOrgGroupRepository = customerOrgGroupRepository;
  59. this._medicalPackageRepository = medicalPackageRepository;
  60. this._customerOrgRepository = customerOrgRepository;
  61. this._sexRepository = sexRepository;
  62. this._registerAsbitemRepository = registerAsbitemRepository;
  63. this._registerCheckRepository = registerCheckRepository;
  64. this._asbitemRepository = asbitemRepository;
  65. this._customerOrgManager = customerOrgManager;
  66. this._cacheService = cacheService;
  67. }
  68. /// <summary>
  69. /// 体检报告查询接口
  70. /// </summary>
  71. /// <returns></returns>
  72. [HttpPost("api/app/peisreport/getpatientregisterreport")]
  73. public async Task<PagedResultDto<GetPatientRegisterReportDto>> GetPatientRegisterReportAsync(GetPatientRegisterReportRequestDto input)
  74. {
  75. var query = from a in await _patientRegisterRepository.GetQueryableAsync()
  76. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  77. from ab in bb.DefaultIfEmpty()
  78. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on a.Id equals registerCheck.PatientRegisterId
  79. join registerAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId
  80. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerAsbitem.AsbitemId equals asbitem.Id
  81. join c in await _customerOrgGroupRepository.GetQueryableAsync() on a.CustomerOrgGroupId equals c.Id into cc
  82. from ac in cc.DefaultIfEmpty()
  83. join d in await _medicalPackageRepository.GetQueryableAsync() on a.MedicalPackageId equals d.Id into dd
  84. from ad in dd.DefaultIfEmpty()
  85. join e in await _medicalTypeRepository.GetQueryableAsync() on a.MedicalTypeId equals e.Id into ee
  86. from ae in ee.DefaultIfEmpty()
  87. join f in await _personnelTypeRepository.GetQueryableAsync() on a.PersonnelTypeId equals f.Id into ff
  88. from af in ff.DefaultIfEmpty()
  89. join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
  90. from ag in gg.DefaultIfEmpty()
  91. orderby a.Id ascending
  92. select new
  93. {
  94. a = new
  95. {
  96. a.Id,
  97. a.CustomerOrgGroupId,
  98. a.CustomerOrgRegisterId,
  99. a.CustomerOrgId,
  100. a.CreationTime,
  101. a.MedicalStartDate,
  102. a.SummaryDate,
  103. a.PatientName,
  104. a.PatientRegisterNo,
  105. a.Age,
  106. a.BirthDate,
  107. a.CompleteFlag,
  108. a.IsAudit,
  109. a.ReportPrintTimes,
  110. a.MedicalTypeId,
  111. a.PersonnelTypeId,
  112. a.IsUpload
  113. },
  114. RegisterCheckCompleteFlag = registerCheck.CompleteFlag,
  115. IsCheck = asbitem.IsCheck,
  116. ab = new { ab.IdNo, ab.Address, ab.PatientNo, ab.MobileTelephone, ab.Telephone, ab.Email, ab.DisplayName },
  117. ac = new { ac.DisplayName },
  118. ad = new { ad.DisplayName },
  119. ae = new { ae.DisplayName },
  120. af = new { af.DisplayName },
  121. ag = new { ag.DisplayName },
  122. };
  123. var sumquery = query;
  124. if (input.CustomerOrgs.Any())
  125. {
  126. var item = input.CustomerOrgs[0];
  127. if (item.CustomerOrgGroupId.Any())
  128. {
  129. sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  130. }
  131. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  132. {
  133. sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  134. }
  135. if (item.CustomerOrgId != null)
  136. {
  137. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  138. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  139. }
  140. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  141. {
  142. if (item.DateType == '1')
  143. {
  144. sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  145. m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  146. }
  147. else if (item.DateType == '2')
  148. {
  149. sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item.StartDate) &&
  150. m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  151. }
  152. else if (item.DateType == '3')
  153. {
  154. sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  155. m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  156. }
  157. }
  158. if (input.CustomerOrgs.Count > 1)
  159. {
  160. foreach (var item2 in input.CustomerOrgs)
  161. {
  162. if (input.CustomerOrgs.IndexOf(item2) > 0)
  163. {
  164. var newquery = query;
  165. if (item2.CustomerOrgGroupId.Any())
  166. {
  167. newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  168. }
  169. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  170. {
  171. newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  172. }
  173. if (item2.CustomerOrgId != null)
  174. {
  175. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  176. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  177. }
  178. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  179. {
  180. if (item2.DateType == '1')
  181. {
  182. newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  183. m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  184. }
  185. else if (item2.DateType == '2')
  186. {
  187. newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  188. m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  189. }
  190. else if (item2.DateType == '3')
  191. {
  192. newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  193. m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  194. }
  195. }
  196. sumquery = sumquery.Union(newquery);
  197. }
  198. }
  199. }
  200. }
  201. if (!string.IsNullOrEmpty(input.PatientName))
  202. {
  203. sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName));
  204. }
  205. if (!string.IsNullOrEmpty(input.PatientRegisterNo))
  206. {
  207. sumquery = sumquery.Where(m => m.a.PatientRegisterNo == input.PatientRegisterNo);
  208. }
  209. if (!string.IsNullOrEmpty(input.PatientNo))
  210. {
  211. sumquery = sumquery.Where(m => m.ab.PatientNo == input.PatientNo);
  212. }
  213. if (!string.IsNullOrEmpty(input.phone))
  214. {
  215. sumquery = sumquery.Where(m => m.ab.MobileTelephone == input.phone || m.ab.Telephone == input.phone);
  216. }
  217. if (input.CompleteFlag != null && input.CompleteFlag != PatientRegisterCompleteFlag.ItemCheckUnSumCheck)
  218. {
  219. sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
  220. }
  221. else
  222. {
  223. sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
  224. }
  225. if (input.IsAudit != null)
  226. {
  227. sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit);
  228. }
  229. if (input.IsReportPrint != null)
  230. {
  231. if (input.IsReportPrint == 'Y')
  232. {
  233. sumquery = sumquery.Where(m => m.a.ReportPrintTimes > 0);
  234. }
  235. else
  236. {
  237. sumquery = sumquery.Where(m => m.a.ReportPrintTimes == 0);
  238. }
  239. }
  240. if (input.MedicalTypeId != null)
  241. {
  242. sumquery = sumquery.Where(m => m.a.MedicalTypeId == input.MedicalTypeId);
  243. }
  244. if (input.PersonnelTypeId != null)
  245. {
  246. sumquery = sumquery.Where(m => m.a.PersonnelTypeId == input.PersonnelTypeId);
  247. }
  248. if (input.IsUpload != null)
  249. {
  250. sumquery = sumquery.Where(m => m.a.IsUpload == input.IsUpload);
  251. }
  252. if (!string.IsNullOrEmpty(input.IdNo))
  253. {
  254. sumquery = sumquery.Where(m => m.ab.IdNo == input.IdNo);
  255. }
  256. var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id);
  257. List<GetPatientRegisterReportDto> entlist = new List<GetPatientRegisterReportDto>();
  258. foreach (var s in sumqueryGroup.OrderBy(o => o.Key))
  259. {
  260. bool IsDisplay = false;
  261. if (input.CompleteFlag == PatientRegisterCompleteFlag.ItemCheckUnSumCheck)
  262. {
  263. if (s.Where(m => m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.Checked && m.IsCheck == 'Y').Count() == 0
  264. && s.FirstOrDefault().a.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  265. {
  266. IsDisplay = true;
  267. }
  268. else
  269. {
  270. IsDisplay = false;
  271. }
  272. }
  273. else
  274. {
  275. IsDisplay = true;
  276. }
  277. if (IsDisplay)
  278. {
  279. entlist.Add(new GetPatientRegisterReportDto
  280. {
  281. Address = s.FirstOrDefault().ab.Address,
  282. PatientName = s.FirstOrDefault().a.PatientName,
  283. Age = s.FirstOrDefault().a.Age,
  284. BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
  285. CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
  286. CustomerOrgGroupName = s.FirstOrDefault().ac.DisplayName,
  287. //CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.a.CustomerOrgId).Result.DisplayName,
  288. CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  289. DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  290. Email = s.FirstOrDefault().ab.Email,
  291. IdNo = s.FirstOrDefault().ab.IdNo,
  292. IsAudit = s.FirstOrDefault().a.IsAudit,
  293. IsReportPrint = s.FirstOrDefault().a.ReportPrintTimes > 0 ? 'Y' : 'N',
  294. MedicalPackageName = s.FirstOrDefault().ad.DisplayName,
  295. MedicalTypeName = s.FirstOrDefault().ae.DisplayName,
  296. MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
  297. PatientNo = s.FirstOrDefault().ab.PatientNo,
  298. PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
  299. PersonnelTypeName = s.FirstOrDefault().af.DisplayName,
  300. SexName = s.FirstOrDefault().ag.DisplayName,
  301. Telephone = s.FirstOrDefault().ab.Telephone,
  302. PatientRegisterId = s.FirstOrDefault().a.Id
  303. });
  304. }
  305. }
  306. int totalCount = entlist.Count;
  307. entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  308. return new PagedResultDto<GetPatientRegisterReportDto>(totalCount, entlist);
  309. }
  310. /// <summary>
  311. /// 查询 检查项目状态 RegisterAsbitem为主表 筛选registercheck表状态
  312. /// </summary>
  313. /// <param name="input"></param>
  314. /// <returns></returns>
  315. [HttpPost("api/app/peisreport/getregisterasbitemregistercheckstatus")]
  316. public async Task<List<GetRegisterAsbitemRegisterCheckStatusDto>> GetRegisterAsbitemRegisterCheckStatusAsync(GetRegisterAsbitemRegisterCheckStatusRequestDto input)
  317. {
  318. var query = from j in await _registerAsbitemRepository.GetQueryableAsync()
  319. join k in await _registerCheckRepository.GetQueryableAsync() on j.RegisterCheckId equals k.Id into kk
  320. from jk in kk.DefaultIfEmpty()
  321. join l in await _patientRegisterRepository.GetQueryableAsync() on j.PatientRegisterId equals l.Id into ll
  322. from a in ll.DefaultIfEmpty()
  323. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  324. from ab in bb.DefaultIfEmpty()
  325. join c in await _customerOrgGroupRepository.GetQueryableAsync() on a.CustomerOrgGroupId equals c.Id into cc
  326. from ac in cc.DefaultIfEmpty()
  327. join d in await _medicalPackageRepository.GetQueryableAsync() on a.MedicalPackageId equals d.Id into dd
  328. from ad in dd.DefaultIfEmpty()
  329. join e in await _medicalTypeRepository.GetQueryableAsync() on a.MedicalTypeId equals e.Id into ee
  330. from ae in ee.DefaultIfEmpty()
  331. join f in await _personnelTypeRepository.GetQueryableAsync() on a.PersonnelTypeId equals f.Id into ff
  332. from af in ff.DefaultIfEmpty()
  333. join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
  334. from ag in gg.DefaultIfEmpty()
  335. join p in await _asbitemRepository.GetQueryableAsync() on j.AsbitemId equals p.Id into pp
  336. from jp in pp.DefaultIfEmpty()
  337. select new
  338. {
  339. j,
  340. jk,
  341. a,
  342. ab,
  343. ac,
  344. ad,
  345. ae,
  346. af,
  347. ag,
  348. jp
  349. };
  350. var sumquery = query;
  351. if (input.CustomerOrgs.Any())
  352. {
  353. var item = input.CustomerOrgs[0];
  354. if (item.CustomerOrgGroupId.Any())
  355. {
  356. sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  357. }
  358. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  359. {
  360. sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  361. }
  362. if (item.CustomerOrgId != null)
  363. {
  364. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  365. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  366. }
  367. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  368. {
  369. if (item.DateType == '1')
  370. {
  371. sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  372. m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  373. }
  374. else if (item.DateType == '2')
  375. {
  376. sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item.StartDate) &&
  377. m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  378. }
  379. else if (item.DateType == '3')
  380. {
  381. sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  382. m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  383. }
  384. }
  385. if (input.CustomerOrgs.Count > 1)
  386. {
  387. foreach (var item2 in input.CustomerOrgs)
  388. {
  389. if (input.CustomerOrgs.IndexOf(item2) > 0)
  390. {
  391. var newquery = query;
  392. if (item2.CustomerOrgGroupId.Any())
  393. {
  394. newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  395. }
  396. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  397. {
  398. newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  399. }
  400. if (item2.CustomerOrgId != null)
  401. {
  402. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  403. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  404. }
  405. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  406. {
  407. if (item2.DateType == '1')
  408. {
  409. newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  410. m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  411. }
  412. else if (item2.DateType == '2')
  413. {
  414. newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  415. m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  416. }
  417. else if (item2.DateType == '3')
  418. {
  419. newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  420. m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  421. }
  422. }
  423. sumquery = sumquery.Union(newquery);
  424. }
  425. }
  426. }
  427. }
  428. if (input.AsbitemIds.Any())
  429. {
  430. sumquery = sumquery.Where(m => input.AsbitemIds.Contains(m.j.AsbitemId));
  431. }
  432. if (input.CompleteFlag != null)
  433. {
  434. sumquery = sumquery.Where(m => m.jk.CompleteFlag == input.CompleteFlag);
  435. }
  436. var entlist = sumquery.Select(s => new GetRegisterAsbitemRegisterCheckStatusDto
  437. {
  438. PatientName = s.a.PatientName,
  439. Age = s.a.Age,
  440. CompleteFlag = s.jk.CompleteFlag,
  441. CustomerOrgGroupName = s.ac.DisplayName,
  442. CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.a.CustomerOrgId).Result.DisplayName,
  443. DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.a.CustomerOrgId).Result,
  444. MedicalPackageName = s.ad.DisplayName,
  445. MobileTelephone = s.ab.MobileTelephone,
  446. PatientNo = s.ab.PatientNo,
  447. PatientRegisterNo = s.a.PatientRegisterNo,
  448. SexName = s.ag.DisplayName,
  449. Telephone = s.ab.Telephone,
  450. AsbitemName = s.jp.DisplayName,
  451. ChargePrice = s.j.ChargePrice,
  452. IsCharge = s.j.IsCharge,
  453. MedicalTimes = s.a.MedicalTimes,
  454. StandardPrice = s.j.StandardPrice
  455. }).ToList();
  456. return entlist;
  457. }
  458. /// <summary>
  459. /// 查询 检查项目收费状态 RegisterAsbitem为主表 筛选RegisterAsbitem表收费状态
  460. /// </summary>
  461. /// <param name="input"></param>
  462. /// <returns></returns>
  463. [HttpPost("api/app/peisreport/getregisterasbitemchargestatus")]
  464. public async Task<List<GetRegisterAsbitemChargeStatusDto>> GetRegisterAsbitemChargeStatusAsync(GetRegisterAsbitemChargeStatusRequestDto input)
  465. {
  466. var query = from j in await _registerAsbitemRepository.GetQueryableAsync()
  467. join k in await _registerCheckRepository.GetQueryableAsync() on j.RegisterCheckId equals k.Id into kk
  468. from jk in kk.DefaultIfEmpty()
  469. join l in await _patientRegisterRepository.GetQueryableAsync() on j.PatientRegisterId equals l.Id into ll
  470. from a in ll.DefaultIfEmpty()
  471. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  472. from ab in bb.DefaultIfEmpty()
  473. join c in await _customerOrgGroupRepository.GetQueryableAsync() on a.CustomerOrgGroupId equals c.Id into cc
  474. from ac in cc.DefaultIfEmpty()
  475. join d in await _medicalPackageRepository.GetQueryableAsync() on a.MedicalPackageId equals d.Id into dd
  476. from ad in dd.DefaultIfEmpty()
  477. join e in await _medicalTypeRepository.GetQueryableAsync() on a.MedicalTypeId equals e.Id into ee
  478. from ae in ee.DefaultIfEmpty()
  479. join f in await _personnelTypeRepository.GetQueryableAsync() on a.PersonnelTypeId equals f.Id into ff
  480. from af in ff.DefaultIfEmpty()
  481. join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
  482. from ag in gg.DefaultIfEmpty()
  483. join p in await _asbitemRepository.GetQueryableAsync() on j.AsbitemId equals p.Id into pp
  484. from jp in pp.DefaultIfEmpty()
  485. select new
  486. {
  487. j,
  488. jk,
  489. a,
  490. ab,
  491. ac,
  492. ad,
  493. ae,
  494. af,
  495. ag,
  496. jp
  497. };
  498. var sumquery = query;
  499. if (input.CustomerOrgs.Any())
  500. {
  501. var item = input.CustomerOrgs[0];
  502. if (item.CustomerOrgGroupId.Any())
  503. {
  504. sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  505. }
  506. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  507. {
  508. sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  509. }
  510. if (item.CustomerOrgId != null)
  511. {
  512. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  513. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  514. }
  515. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  516. {
  517. if (item.DateType == '1')
  518. {
  519. sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  520. m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  521. }
  522. else if (item.DateType == '2')
  523. {
  524. sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item.StartDate) &&
  525. m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  526. }
  527. else if (item.DateType == '3')
  528. {
  529. sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  530. m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  531. }
  532. }
  533. if (input.CustomerOrgs.Count > 1)
  534. {
  535. foreach (var item2 in input.CustomerOrgs)
  536. {
  537. if (input.CustomerOrgs.IndexOf(item2) > 0)
  538. {
  539. var newquery = query;
  540. if (item2.CustomerOrgGroupId.Any())
  541. {
  542. newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  543. }
  544. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  545. {
  546. newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  547. }
  548. if (item2.CustomerOrgId != null)
  549. {
  550. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  551. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  552. }
  553. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  554. {
  555. if (item2.DateType == '1')
  556. {
  557. newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  558. m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  559. }
  560. else if (item2.DateType == '2')
  561. {
  562. newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  563. m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  564. }
  565. else if (item2.DateType == '3')
  566. {
  567. newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  568. m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  569. }
  570. }
  571. sumquery = sumquery.Union(newquery);
  572. }
  573. }
  574. }
  575. }
  576. if (input.AsbitemIds.Any())
  577. {
  578. sumquery = sumquery.Where(m => input.AsbitemIds.Contains(m.j.AsbitemId));
  579. }
  580. if (input.IsCharge != null)
  581. {
  582. sumquery = sumquery.Where(m => m.j.IsCharge == input.IsCharge);
  583. }
  584. var entlist = sumquery.Select(s => new GetRegisterAsbitemChargeStatusDto
  585. {
  586. PatientName = s.a.PatientName,
  587. Age = s.a.Age,
  588. CompleteFlag = s.jk.CompleteFlag,
  589. CustomerOrgGroupName = s.ac.DisplayName,
  590. CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.a.CustomerOrgId).Result.DisplayName,
  591. DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.a.CustomerOrgId).Result,
  592. MedicalPackageName = s.ad.DisplayName,
  593. MobileTelephone = s.ab.MobileTelephone,
  594. PatientNo = s.ab.PatientNo,
  595. PatientRegisterNo = s.a.PatientRegisterNo,
  596. SexName = s.ag.DisplayName,
  597. Telephone = s.ab.Telephone,
  598. AsbitemName = s.jp.DisplayName,
  599. ChargePrice = s.j.ChargePrice,
  600. IsCharge = s.j.IsCharge,
  601. MedicalTimes = s.a.MedicalTimes,
  602. StandardPrice = s.j.StandardPrice
  603. }).ToList();
  604. return entlist;
  605. }
  606. /// <summary>
  607. /// 查询 人员未检组合项目清单 勾选包含弃检时需要检索弃检项目
  608. /// </summary>
  609. /// <param name="input"></param>
  610. /// <returns></returns>
  611. [HttpPost("api/app/peisreport/getpatientregisteruncheckedreport")]
  612. public async Task<List<GetPatientRegisterUnCheckedReportDto>> GetPatientRegisterUnCheckedReportAsync(GetPatientRegisterUnCheckedReportRequestDto input)
  613. {
  614. var query = from a in await _patientRegisterRepository.GetQueryableAsync()
  615. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  616. from ab in bb.DefaultIfEmpty()
  617. join c in await _customerOrgGroupRepository.GetQueryableAsync() on a.CustomerOrgGroupId equals c.Id into cc
  618. from ac in cc.DefaultIfEmpty()
  619. join d in await _medicalPackageRepository.GetQueryableAsync() on a.MedicalPackageId equals d.Id into dd
  620. from ad in dd.DefaultIfEmpty()
  621. join e in await _medicalTypeRepository.GetQueryableAsync() on a.MedicalTypeId equals e.Id into ee
  622. from ae in ee.DefaultIfEmpty()
  623. join f in await _personnelTypeRepository.GetQueryableAsync() on a.PersonnelTypeId equals f.Id into ff
  624. from af in ff.DefaultIfEmpty()
  625. join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
  626. from ag in gg.DefaultIfEmpty()
  627. join aj in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals aj.PatientRegisterId
  628. join ak in await _registerCheckRepository.GetQueryableAsync() on aj.RegisterCheckId equals ak.Id
  629. join al in await _asbitemRepository.GetQueryableAsync() on aj.AsbitemId equals al.Id
  630. //join j in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals j.PatientRegisterId into jj
  631. //from aj in jj.DefaultIfEmpty()
  632. //join k in await _registerCheckRepository.GetQueryableAsync() on aj.RegisterCheckId equals k.Id into kk
  633. //from ak in kk.DefaultIfEmpty()
  634. //join l in await _asbitemRepository.GetQueryableAsync() on aj.AsbitemId equals l.Id into ll
  635. //from al in ll.DefaultIfEmpty()
  636. select new
  637. {
  638. a,
  639. ab,
  640. ac,
  641. ad,
  642. ae,
  643. af,
  644. ag,
  645. aj,
  646. ak,
  647. al
  648. };
  649. var sumquery = query;
  650. if (input.CustomerOrgs.Any())
  651. {
  652. var item = input.CustomerOrgs[0];
  653. if (item.CustomerOrgGroupId.Any())
  654. {
  655. sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  656. }
  657. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  658. {
  659. sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  660. }
  661. if (item.CustomerOrgId != null)
  662. {
  663. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  664. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  665. }
  666. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  667. {
  668. if (item.DateType == '1')
  669. {
  670. sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  671. m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  672. }
  673. else if (item.DateType == '2')
  674. {
  675. sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item.StartDate) &&
  676. m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  677. }
  678. else if (item.DateType == '3')
  679. {
  680. sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  681. m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  682. }
  683. }
  684. if (input.CustomerOrgs.Count > 1)
  685. {
  686. foreach (var item2 in input.CustomerOrgs)
  687. {
  688. if (input.CustomerOrgs.IndexOf(item2) > 0)
  689. {
  690. var newquery = query;
  691. if (item2.CustomerOrgGroupId.Any())
  692. {
  693. newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  694. }
  695. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  696. {
  697. newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  698. }
  699. if (item2.CustomerOrgId != null)
  700. {
  701. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  702. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  703. }
  704. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  705. {
  706. if (item2.DateType == '1')
  707. {
  708. newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  709. m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  710. }
  711. else if (item2.DateType == '2')
  712. {
  713. newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  714. m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  715. }
  716. else if (item2.DateType == '3')
  717. {
  718. newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  719. m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  720. }
  721. }
  722. sumquery = sumquery.Union(newquery);
  723. }
  724. }
  725. }
  726. }
  727. if (input.IsGiveUpCheck != null && input.IsGiveUpCheck == 'Y')
  728. {
  729. sumquery = sumquery.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.UnChecked || m.ak.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked);
  730. }
  731. else
  732. {
  733. sumquery = sumquery.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.UnChecked);
  734. }
  735. if (input.CompleteFlag != null)
  736. {
  737. sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
  738. }
  739. var entlist = sumquery.GroupBy(g => g.a.Id).Select(s => new GetPatientRegisterUnCheckedReportDto
  740. {
  741. Age = s.FirstOrDefault().a.Age,
  742. CustomerOrgGroupName = s.FirstOrDefault().ac.DisplayName,
  743. CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.DisplayName,
  744. DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  745. //GiveUpAsbitems = s.Where(m => m.ak.CompleteFlag == '2').Select(gs => new GetPatientRegisterUnCheckedReport_GiveUpAsbitem
  746. //{
  747. // AsbitemName = gs.al.DisplayName
  748. //}).ToList(),
  749. GiveUpAsbitems = s.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).Select(gs => gs.al.DisplayName).ToList(),
  750. MedicalPackageName = s.FirstOrDefault().ad.DisplayName,
  751. MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
  752. MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
  753. PatientName = s.FirstOrDefault().a.PatientName,
  754. PatientNo = s.FirstOrDefault().ab.PatientNo,
  755. PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
  756. SexName = s.FirstOrDefault().ag.DisplayName,
  757. Telephone = s.FirstOrDefault().ab.Telephone,
  758. UnCheckAsbitems = s.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.UnChecked).Select(gs => gs.al.DisplayName).ToList(),
  759. //UnCheckAsbitems = s.Where(m => m.ak.CompleteFlag == '0').Select(gs => new GetPatientRegisterUnCheckedReport_UnCheckAsbitem
  760. //{
  761. // AsbitemName = gs.al.DisplayName
  762. //}).ToList()
  763. }).ToList();
  764. return entlist;
  765. }
  766. }
  767. }