Browse Source

Merge branch 'master' into 'master'

结算与对账增加科室,医生,主要诊断

See merge request lighter/web-server!33
huangshuhua 2 years ago
parent
commit
1070cef25e

+ 27 - 0
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/SiSetlinfoDao.java

@@ -5,9 +5,11 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
+import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyInactpatient;
 import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SiSetlinfo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @description: 结算基本信息
@@ -76,4 +78,29 @@ public interface SiSetlinfoDao extends BaseMapper<SiSetlinfo> {
             "charge_registration=#{chargeRegistration},charge_bed=#{chargeBed},charge_others=#{chargeOthers}, " +
             "charges_analyzed=#{chargesAnalyzed} where setl_id=#{setlId}")
     void fillAnalyzedData(SiSetlinfo setlinfo);
+
+    @Select(" <script> " +
+            " <foreach collection='list' item='item' index='index' separator=' union all '> " +
+            " select rtrim(t.inpatient_no) as inpatient_no, rtrim(t.admiss_times) as admiss_times, " +
+            " z.name as dept, e.name as jobDoctor, t.clinic_diag_str " +
+            " from zy_inactpatient t " +
+            " left join zd_unit_code z on t.zk_ward = z.code " +
+            " left join a_employee_mi e on t.refer_physician = e.code " +
+            " where t.inpatient_no = #{item.patNo} and t.admiss_times = #{item.times} " +
+            " </foreach> " +
+            " </script> ")
+    List<ZyInactpatient> selectZyPatient(@Param("list") List<SiSetlinfo> list);
+
+    @Select(" <script> " +
+            " <foreach collection='list' item='item' index='index' separator=' union all '> " +
+            " select rtrim(t.patient_id) as patNo, t.times, z.name as dept, " +
+            " e.name as doctor, t.icd_text_new as zyzd " +
+            " from mz_visit_table t " +
+            " left join zd_unit_code z on t.visit_dept_code = z.code " +
+            " left join a_employee_mi e on t.doctor_code = e.code " +
+            " where t.patient_id = #{item.patNo} and t.times = #{item.times} " +
+            " </foreach> " +
+            " </script> ")
+    List<Map> selectMzPatient(@Param("list") List<SiSetlinfo> list);
+
 }

+ 6 - 0
src/main/java/thyyxxk/webserver/entity/medicalinsurance/setlinfo/SiSetlinfo.java

@@ -382,4 +382,10 @@ public class SiSetlinfo implements Serializable {
 	private String clrOptinsName;
 	@TableField(exist = false)
 	private String insuplcAdmdvsName;
+
+	@TableField(exist = false)
+	private String dept;
+	@TableField(exist = false)
+	private String doctor;
+
 }

+ 84 - 8
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiManageService.java

@@ -11,34 +11,74 @@ import thyyxxk.webserver.constants.Capacity;
 import thyyxxk.webserver.constants.Message;
 import thyyxxk.webserver.constants.YesOrNo;
 import thyyxxk.webserver.constants.frntsheet.CaseClassification;
-import thyyxxk.webserver.constants.sidicts.*;
+import thyyxxk.webserver.constants.sidicts.Admdvs;
+import thyyxxk.webserver.constants.sidicts.DrordDrProfttl;
+import thyyxxk.webserver.constants.sidicts.ListType;
+import thyyxxk.webserver.constants.sidicts.SiFunction;
+import thyyxxk.webserver.constants.sidicts.StmtRslt;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiLogDao;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiManageDao;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiSetlinfoDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyInactpatient;
 import thyyxxk.webserver.entity.medicalinsurance.log.SiLog;
-import thyyxxk.webserver.entity.medicalinsurance.manage.*;
-import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.*;
+import thyyxxk.webserver.entity.medicalinsurance.manage.AtoRcvTrd;
+import thyyxxk.webserver.entity.medicalinsurance.manage.CatalogueContrast;
+import thyyxxk.webserver.entity.medicalinsurance.manage.InsSetlDetlChkRslt;
+import thyyxxk.webserver.entity.medicalinsurance.manage.InstSetlLdgChkBrf;
+import thyyxxk.webserver.entity.medicalinsurance.manage.InstStlLdgChk;
+import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.ClinicDiseinfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.ClinicRegistration;
+import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.ClinicRxinfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.EmergencyOprninfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.EmergencyRescueinfo;
 import thyyxxk.webserver.entity.medicalinsurance.manage.deptmanage.DeptInfo;
 import thyyxxk.webserver.entity.medicalinsurance.manage.deptmanage.DeptInfoQuery;
 import thyyxxk.webserver.entity.medicalinsurance.manage.deptmanage.MedStaffQuery;
-import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.*;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.FsiDiagnoseDtos;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.FsiEncounterDtos;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.FsiHisDataDto;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.FsiOrderDtos;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.MainPart;
+import thyyxxk.webserver.entity.medicalinsurance.manage.detailanalyse.PatientDtos;
 import thyyxxk.webserver.entity.medicalinsurance.manage.examination.BilgItemInfo;
-import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.*;
-import thyyxxk.webserver.entity.medicalinsurance.manage.goods.*;
+import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.Baseinfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.BriefSheet;
+import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.Diseinfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.Icuinfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.frontsheet.Oprninfo;
+import thyyxxk.webserver.entity.medicalinsurance.manage.goods.InvinfoModify;
+import thyyxxk.webserver.entity.medicalinsurance.manage.goods.InvinfoUpload;
+import thyyxxk.webserver.entity.medicalinsurance.manage.goods.PurcinfoBought;
+import thyyxxk.webserver.entity.medicalinsurance.manage.goods.SelinfoReturn;
+import thyyxxk.webserver.entity.medicalinsurance.manage.goods.SelinfoSold;
 import thyyxxk.webserver.entity.medicalinsurance.manage.orderinfo.ActOrder;
 import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SiSetlinfo;
 import thyyxxk.webserver.entity.medicalinsurance.setlinfo.SlctSetlPrm;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
-import thyyxxk.webserver.utils.*;
+import thyyxxk.webserver.utils.DateUtil;
+import thyyxxk.webserver.utils.DecimalUtil;
+import thyyxxk.webserver.utils.FilterUtil;
+import thyyxxk.webserver.utils.ResultVoUtil;
+import thyyxxk.webserver.utils.SiUtil;
+import thyyxxk.webserver.utils.SnowFlakeId;
+import thyyxxk.webserver.utils.SocketMsg;
+import thyyxxk.webserver.utils.StringUtil;
+import thyyxxk.webserver.utils.TokenUtil;
+import thyyxxk.webserver.utils.ZipUtil;
 import thyyxxk.webserver.websocket.WebSocketServer;
 
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
 
 /**
  * @description: 医保管理服务,包涵项目对照等
@@ -406,6 +446,26 @@ public class SiManageService {
         if (null == list || list.isEmpty()) {
             return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有查询到符合条件的数据。");
         }
+
+        // 增加科室,科室,诊断,接诊医生
+        // 住院 21 9902 99940 22  门诊 11 9901 14 53
+        List<ZyInactpatient> zybr = new ArrayList<>();
+        List<Map> mzbr = new ArrayList<>();
+        if("21".equals(prm.getClrType()) || "9902".equals(prm.getClrType()) || "99940".equals(prm.getClrType())
+            || "22".equals(prm.getClrType())){
+            zybr = setlinfoDao.selectZyPatient(list);
+        } else {
+            mzbr = setlinfoDao.selectMzPatient(list);
+        }
+        Map<String, ZyInactpatient> zyMap = new HashMap<>();
+        Map<String, Map> mzMap = new HashMap<>();
+        for(ZyInactpatient s: zybr){
+            zyMap.put(s.getInpatientNo() + "|" + s.getAdmissTimes(), s);
+        }
+        for(Map t: mzbr){
+            mzMap.put(t.get("patNo") + "|" + t.get("times"),t);
+        }
+
         Map<String, Object> map = new HashMap<>(Capacity.TWO);
         Map<String, String> optinsMap = new HashMap<>();
         List<CodeName> optinList = new ArrayList<>();
@@ -419,6 +479,22 @@ public class SiManageService {
             if (!optinsMap.containsKey(item.getClrOptins())) {
                 optinsMap.put(item.getClrOptins(), item.getClrOptinsName());
             }
+
+            // 添加科室,诊断,接诊医生
+            if(!zyMap.isEmpty()){
+                ZyInactpatient br = zyMap.get(item.getPatNo() + "|" + item.getTimes());
+                item.setDept(br.getDept());
+                item.setDoctor(br.getJobDoctor());
+                item.setMainDiagnosis(br.getClinicDiagStr());
+            } else {
+                if(!mzMap.isEmpty()){
+                    Map m = mzMap.get(item.getPatNo() + "|"+item.getTimes());
+                    item.setDept(String.valueOf(m.get("dept")));
+                    item.setDoctor(String.valueOf(m.get("doctor")));
+                    item.setMainDiagnosis(String.valueOf(m.get("zyzd")));
+                }
+            }
+
             FilterUtil.filterCodeToName(item);
         });
         map.put("list", list);