AnalyzeSiPatientChargesController.java 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package thyyxxk.webserver.controller.medicalinsurance;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.scheduling.annotation.Scheduled;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import thyyxxk.webserver.config.auth.PassToken;
  11. import thyyxxk.webserver.config.exception.ExceptionEnum;
  12. import thyyxxk.webserver.constants.YesOrNo;
  13. import thyyxxk.webserver.constants.sidicts.MedChrgitmType;
  14. import thyyxxk.webserver.dao.his.medicalinsurance.SiSetlinfoDao;
  15. import thyyxxk.webserver.entity.ResultVo;
  16. import thyyxxk.webserver.entity.medicalinsurance.query.SiSetlFeeDetl;
  17. import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SiSetlinfo;
  18. import thyyxxk.webserver.service.medicalinsurance.SiQueryService;
  19. import java.math.BigDecimal;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. @Slf4j
  24. @RestController
  25. @RequestMapping("/analyzeSiPatientCharges")
  26. public class AnalyzeSiPatientChargesController {
  27. private final SiQueryService service;
  28. private final SiSetlinfoDao dao;
  29. @Autowired
  30. public AnalyzeSiPatientChargesController(SiQueryService service, SiSetlinfoDao dao) {
  31. this.service = service;
  32. this.dao = dao;
  33. }
  34. @GetMapping("/analyzeSetlData")
  35. @PassToken
  36. private void startAnalyze() {
  37. List<SiSetlinfo> unAnalyzedData = dao.selectUnAnalyzedData();
  38. for (SiSetlinfo setlinfo : unAnalyzedData) {
  39. ResultVo<List<SiSetlFeeDetl>> chargeList = service.getChrgitems(setlinfo);
  40. if (chargeList.getCode() == ExceptionEnum.SUCCESS.getCode()) {
  41. analyzeChargeItems(setlinfo, chargeList.getData());
  42. }
  43. setlinfo.setChargesAnalyzed(YesOrNo.YES.getCode());
  44. dao.fillAnalyzedData(setlinfo);
  45. }
  46. }
  47. private void analyzeChargeItems(SiSetlinfo setlinfo, List<SiSetlFeeDetl> chargeItems) {
  48. Map<String, BigDecimal> map = new HashMap<>();
  49. chargeItems.forEach(itm -> {
  50. BigDecimal itmfeeSum = new BigDecimal(itm.getDetItemFeeSumamt());
  51. String typeKey = itm.getMedChrgitmType();
  52. if (map.containsKey(typeKey)) {
  53. map.replace(typeKey, map.get(typeKey).add(itmfeeSum));
  54. } else {
  55. map.put(typeKey, itmfeeSum);
  56. }
  57. });
  58. setlinfo.setChargeWesternMedicine(map.get(MedChrgitmType.WEST_MED.getCode()));
  59. setlinfo.setChargePatentMedicine(map.get(MedChrgitmType.CHN_PTNT.getCode()));
  60. setlinfo.setChargeHerbal(map.get(MedChrgitmType.HERBAL.getCode()));
  61. setlinfo.setChargeExamination(map.get(MedChrgitmType.CLINIC.getCode()));
  62. setlinfo.setChargeTreatment(map.get(MedChrgitmType.TREAT.getCode()));
  63. setlinfo.setChargeOperation(map.get(MedChrgitmType.SURGERY.getCode()));
  64. setlinfo.setChargeNursing(map.get(MedChrgitmType.NURSING.getCode()));
  65. setlinfo.setChargeSanitaryMaterial(map.get(MedChrgitmType.MATERIAL.getCode()));
  66. setlinfo.setChargeAssay(map.get(MedChrgitmType.EXAM.getCode()));
  67. setlinfo.setChargeGeneralDiagnosis(map.get(MedChrgitmType.HEAL.getCode()));
  68. setlinfo.setChargeInspection(map.get(MedChrgitmType.INSPECTION.getCode()));
  69. setlinfo.setChargeRegistration(map.get(MedChrgitmType.REG.getCode()));
  70. setlinfo.setChargeBed(map.get(MedChrgitmType.BED.getCode()));
  71. setlinfo.setChargeOthers(map.get(MedChrgitmType.OTH.getCode()));
  72. }
  73. }