lighter 3 lat temu
rodzic
commit
93968b37b1

+ 1 - 0
.gitignore

@@ -5,3 +5,4 @@ web-server.iml
 src/test
 *.zip
 sql
+src/main/java/thyyxxk/webserver/service/xctest/xctest.java

+ 5 - 0
src/main/java/thyyxxk/webserver/controller/casefrontsheet/CaseFrontSheetController.java

@@ -101,6 +101,11 @@ public class CaseFrontSheetController {
         return service.signApply(sheet);
     }
 
+    @PostMapping("/frontsheetQualityCheck")
+    public ResultVo<String> frontsheetQualityCheck(@RequestBody CaseFrontsheetMain sheet) {
+        return service.frontsheetQualityCheck(sheet);
+    }
+
     @PostMapping("/lendOut")
     public ResultVo<String> lendOut(@RequestBody OpCaseFrontsheet param) {
         param.setStaffId(TokenUtil.getTokenUserId());

+ 9 - 0
src/main/java/thyyxxk/webserver/dao/his/casefrontsheet/CaseFrontSheetDao.java

@@ -686,4 +686,13 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
     StandardAddressMember selectStandardAddressMember2(@Param("province") int province,
                                                        @Param("city") int city,
                                                        @Param("district") int district);
+
+    @Select("select code,yb_name as name,yb_code from zd_anaesthesia where yb_code is not null")
+    List<CodeName> selectZdAnstWays();
+
+    @Select("select code,rtrim(name) as name,si_code as ybCode from zd_country_code where si_code is not null")
+    List<CodeName> selectZdCountries();
+
+    @Select("select code,rtrim(name) as name,code2 as ybCode from zd_nation_code where code2 is not null ")
+    List<CodeName> selectZdNations();
 }

+ 1666 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/frontsheetqualitycheck/QualityCheckBaseInfo.java

@@ -0,0 +1,1666 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+@Data
+public class QualityCheckBaseInfo {
+    /**
+     * 医疗机构编码
+     * 说明 字符型
+     */
+    @JSONField(name = "hospital_code")
+    private String hospitalCode;
+
+    /**
+     * 医疗服务机构名称
+     * 说明 字符型
+     */
+    @JSONField(name = "hospital_name")
+    private String hospitalName;
+
+    /**
+     * 就诊登记号
+     * 说明 字符型
+     */
+    @JSONField(name = "serial_no")
+    private String serialNo;
+
+    /**
+     * 行政区划代码(参保地)
+     * 说明 字符型
+     */
+    @JSONField(name = "hosp_id")
+    private String hospId;
+
+    /**
+     * 参保地社保分支机构代码
+     * 说明 字符型
+     */
+    @JSONField(name = "branch_hosp_id")
+    private String branchHospId;
+
+    /**
+     * 社会保障号码
+     * 说明 字符型
+     */
+    @JSONField(name = "social_curity_card")
+    private String socialCurityCard;
+
+    /**
+     * 证件类型
+     * 说明 字符型
+     */
+    @JSONField(name = "card_type")
+    private String cardType;
+
+    /**
+     * 证件号码
+     * 说明 字符型
+     */
+    @JSONField(name = "card_number")
+    private String cardNumber;
+
+    /**
+     * 病案号
+     * 说明 字符型
+     */
+    @JSONField(name = "patient_no")
+    private String patientNo;
+
+    /**
+     * 住院次数
+     * 说明 数值型
+     */
+    @JSONField(name = "hsptzd_count")
+    private Integer hsptzdCount;
+
+    /**
+     * 住院流水号
+     * 说明 字符型
+     */
+    @JSONField(name = "adm_no")
+    private String admNo;
+
+    /**
+     * 年龄
+     * 说明 字符型
+     */
+    @JSONField(name = "age")
+    private Integer age;
+
+    /**
+     * 病人姓名
+     * 说明 字符型
+     */
+    @JSONField(name = "name")
+    private String name;
+
+    /**
+     * 性别编号
+     * 说明 字符型
+     */
+    @JSONField(name = "sex_id")
+    private String sexId;
+
+    /**
+     * 性别
+     * 说明 字符型
+     */
+    @JSONField(name = "sex")
+    private String sex;
+
+    /**
+     * 出生日期
+     * 说明 字符型
+     */
+    @JSONField(name = "birthday")
+    private String birthday;
+
+    /**
+     * 出生地
+     * 说明 字符型
+     */
+    @JSONField(name = "birth_place")
+    private String birthPlace;
+
+    /**
+     * 身份证号
+     * 说明 字符型
+     */
+    @JSONField(name = "id_card")
+    private String idCard;
+
+    /**
+     * 国籍编号
+     * 说明 字符型
+     */
+    @JSONField(name = "country_id")
+    private String countryId;
+
+    /**
+     * 国籍
+     * 说明 字符型
+     */
+    @JSONField(name = "country")
+    private String country;
+
+    /**
+     * 民族编号
+     * 说明 字符型
+     */
+    @JSONField(name = "nation_id")
+    private String nationId;
+
+    /**
+     * 民族
+     * 说明 字符型
+     */
+    @JSONField(name = "nation")
+    private String nation;
+
+    /**
+     * 职业
+     * 说明 字符型
+     */
+    @JSONField(name = "job")
+    private String job;
+
+    /**
+     * 婚姻状况编号
+     * 说明 字符型
+     */
+    @JSONField(name = "marriage_status_id")
+    private String marriageStatusId;
+
+    /**
+     * 单位名称
+     * 说明 字符型
+     */
+    @JSONField(name = "company_name")
+    private String companyName;
+
+    /**
+     * 单位地址
+     * 说明 字符型
+     */
+    @JSONField(name = "company_address")
+    private String companyAddress;
+
+    /**
+     * 单位电话
+     * 说明 字符型
+     */
+    @JSONField(name = "company_tel")
+    private String companyTel;
+
+    /**
+     * 单位邮编
+     * 说明 字符型
+     */
+    @JSONField(name = "company_post")
+    private String companyPost;
+
+    /**
+     * 户口地址
+     * 说明 字符型
+     */
+    @JSONField(name = "resident_address")
+    private String residentAddress;
+
+    /**
+     * 户口邮编
+     * 说明 字符型
+     */
+    @JSONField(name = "resident_post")
+    private String residentPost;
+
+    /**
+     * 联系人
+     * 说明 字符型
+     */
+    @JSONField(name = "cont")
+    private String cont;
+
+    /**
+     * 联系人与病人的关系
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_rel_patient")
+    private String contRelPatient;
+
+    /**
+     * 联系人地址
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_address")
+    private String contAddress;
+
+    /**
+     * 联系人电话
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_tel")
+    private String contTel;
+
+    /**
+     * 健康卡号
+     * 说明 字符型
+     */
+    @JSONField(name = "as_card")
+    private String asCard;
+
+    /**
+     * 入院日期
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_date")
+    private String hsptzdDate;
+
+    /**
+     * 入院同一科号
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_unified_dept")
+    private String hsptzdUnifiedDept;
+
+    /**
+     * 入院科别
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_dept")
+    private String hsptzdDept;
+
+    /**
+     * 入院病室
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_ward")
+    private String hsptzdWard;
+
+    /**
+     * 出院日期
+     * 说明 字符型
+     */
+    @JSONField(name = "hosp_disch_date")
+    private String hospDischDate;
+
+    /**
+     * 出院同一科号
+     * 说明 字符型
+     */
+    @JSONField(name = "disch_unified_dept")
+    private String dischUnifiedDept;
+
+    /**
+     * 出院科别
+     * 说明 字符型
+     */
+    @JSONField(name = "disch_dept")
+    private String dischDept;
+
+    /**
+     * 出院病室
+     * 说明 字符型
+     */
+    @JSONField(name = "disch_ward")
+    private String dischWard;
+
+    /**
+     * 实际住院天数
+     * 说明 数值型
+     */
+    @JSONField(name = "actual_adm_days")
+    private String actualAdmDays;
+
+    /**
+     * 门诊、急诊诊断编码
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_dagns_id")
+    private String outemgcDagnsId;
+
+    /**
+     * 门诊、急诊诊断
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_dagns")
+    private String outemgcDagns;
+
+    /**
+     * 门诊、急诊医生编码
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_doc_id")
+    private String outemgcDocId;
+
+    /**
+     * 门诊、急诊医生
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_doc")
+    private String outemgcDoc;
+
+    /**
+     * 病理诊断
+     * 说明 字符型
+     */
+    @JSONField(name = "pthlgy_dagns")
+    private String pthlgyDagns;
+
+    /**
+     * 过敏药物
+     * 说明 字符型
+     */
+    @JSONField(name = "allergic_drugs")
+    private String allergicDrugs;
+
+    /**
+     * 抢救次数
+     * 说明 数值型
+     */
+    @JSONField(name = "rescue_num")
+    private String rescueNum;
+
+    /**
+     * 抢救成功次数
+     * 说明 数值型
+     */
+    @JSONField(name = "rescue_succ_num")
+    private String rescueSuccNum;
+
+    /**
+     * 科主任编号
+     * 说明 字符型
+     */
+    @JSONField(name = "dept_direct_id")
+    private String deptDirectId;
+
+    /**
+     * 科主任
+     * 说明 字符型
+     */
+    @JSONField(name = "dept_direct")
+    private String deptDirect;
+
+    /**
+     * 主(副)任医生编号
+     * 说明 字符型
+     */
+    @JSONField(name = "arch_id")
+    private String archId;
+
+    /**
+     * 主(副)任医生
+     * 说明 字符型
+     */
+    @JSONField(name = "arch")
+    private String arch;
+
+    /**
+     * 主治医生编号
+     * 说明 字符型
+     */
+    @JSONField(name = "att_doctor_id")
+    private String attDoctorId;
+
+    /**
+     * 主治医生
+     * 说明 字符型
+     */
+    @JSONField(name = "att_doctor")
+    private String attDoctor;
+
+    /**
+     * 住院医生编号
+     * 说明 字符型
+     */
+    @JSONField(name = "resident_id")
+    private String residentId;
+
+    /**
+     * 住院医生
+     * 说明 字符型
+     */
+    @JSONField(name = "resident")
+    private String resident;
+
+    /**
+     * 进修医师编号
+     * 说明 字符型
+     */
+    @JSONField(name = "refre_doctor_id")
+    private String refreDoctorId;
+
+    /**
+     * 进修医师
+     * 说明 字符型
+     */
+    @JSONField(name = "refre_doctor")
+    private String refreDoctor;
+
+    /**
+     * 实习医师编号
+     * 说明 字符型
+     */
+    @JSONField(name = "intern_id")
+    private String internId;
+
+    /**
+     * 实习医师
+     * 说明 字符型
+     */
+    @JSONField(name = "intern")
+    private String intern;
+
+    /**
+     * 编码员编号
+     * 说明 字符型
+     */
+    @JSONField(name = "encoder_id")
+    private String encoderId;
+
+    /**
+     * 编码员
+     * 说明 字符型
+     */
+    @JSONField(name = "encoder")
+    private String encoder;
+
+    /**
+     * 病案质量编号
+     * 说明 字符型
+     */
+    @JSONField(name = "patient_quality_id")
+    private String patientQualityId;
+
+    /**
+     * 病案质量
+     * 说明 字符型
+     */
+    @JSONField(name = "patient_quality")
+    private String patientQuality;
+
+    /**
+     * 质控医师编号
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_doctor_id")
+    private String qualityDoctorId;
+
+    /**
+     * 质控医师
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_doctor")
+    private String qualityDoctor;
+
+    /**
+     * 质控护士编号
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_nurs_id")
+    private String qualityNursId;
+
+    /**
+     * 质控护士
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_nurs")
+    private String qualityNurs;
+
+    /**
+     * 质控日期
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_date")
+    private String qualityDate;
+
+    /**
+     * 总费用
+     * 说明 数值型
+     */
+    @JSONField(name = "total_fee")
+    private String totalFee;
+
+    /**
+     * 西药费
+     * 说明 数值型
+     */
+    @JSONField(name = "west_drug_fee")
+    private String westDrugFee;
+
+    /**
+     * 中药费
+     * 说明 数值型
+     */
+    @JSONField(name = "ch_drug_fee")
+    private String chDrugFee;
+
+    /**
+     * 中成药费
+     * 说明 数值型
+     */
+    @JSONField(name = "ch_patent_fee")
+    private String chPatentFee;
+
+    /**
+     * 中草药费
+     * 说明 数值型
+     */
+    @JSONField(name = "ch_herbal_fee")
+    private String chHerbalFee;
+
+    /**
+     * 其他费用
+     * 说明 数值型
+     */
+    @JSONField(name = "other_fee")
+    private String otherFee;
+
+    /**
+     * 是否尸检编号
+     * 说明 字符型
+     */
+    @JSONField(name = "is_autopsy_id")
+    private String isAutopsyId;
+
+    /**
+     * 是否尸检
+     * 说明 字符型
+     */
+    @JSONField(name = "is_autopsy")
+    private String isAutopsy;
+
+    /**
+     * 血型编号
+     * 说明 字符型
+     */
+    @JSONField(name = "blood_type_id")
+    private String bloodTypeId;
+
+    /**
+     * 血型
+     * 说明 字符型
+     */
+    @JSONField(name = "blood_type")
+    private String bloodType;
+
+    /**
+     * RH编号
+     * 说明 字符型
+     */
+    @JSONField(name = "rh_id")
+    private String rhId;
+
+    /**
+     * RH
+     * 说明 字符型
+     */
+    @JSONField(name = "rh")
+    private String rh;
+
+    /**
+     * 首次转科统一科号
+     * 说明 字符型
+     */
+    @JSONField(name = "first_transf_unidept")
+    private String firstTransfUnidept;
+
+    /**
+     * 首次转科科别
+     * 说明 字符型
+     */
+    @JSONField(name = "first_transf_dept")
+    private String firstTransfDept;
+
+    /**
+     * 首次转科日期
+     * 说明 字符型
+     */
+    @JSONField(name = "first_transf_date")
+    private String firstTransfDate;
+
+    /**
+     * 首次转科时间
+     * 说明 字符型
+     */
+    @JSONField(name = "first_transf_time")
+    private String firstTransfTime;
+
+    /**
+     * 疾病分型编号
+     * 说明 字符型
+     */
+    @JSONField(name = "disease_class_id")
+    private String diseaseClassId;
+
+    /**
+     * 疾病分型
+     * 说明 字符型
+     */
+    @JSONField(name = "disease_class")
+    private String diseaseClass;
+
+    /**
+     * 籍贯
+     * 说明 字符型
+     */
+    @JSONField(name = "native_place")
+    private String nativePlace;
+
+    /**
+     * 现住址
+     * 说明 字符型
+     */
+    @JSONField(name = "curr_address")
+    private String currAddress;
+
+    /**
+     * 现电话
+     * 说明 字符型
+     */
+    @JSONField(name = "curr_tel")
+    private String currTel;
+
+    /**
+     * 现邮编
+     * 说明 字符型
+     */
+    @JSONField(name = "curr_post")
+    private String currPost;
+
+    /**
+     * 职业编号
+     * 说明 字符型
+     */
+    @JSONField(name = "job_id")
+    private String jobId;
+
+    /**
+     * 新生儿出生体重
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_weight")
+    private String newbornWeight;
+
+    /**
+     * 新生儿入院体重
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_hsptzd_weight")
+    private String newbornHsptzdWeight;
+
+    /**
+     * 入院途径编号
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_ways_id")
+    private String hsptzdWaysId;
+
+    /**
+     * 入院途径
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_ways")
+    private String hsptzdWays;
+
+    /**
+     * 临床路径病例编号
+     * 说明 字符型
+     */
+    @JSONField(name = "clinical_pathway_id")
+    private String clinicalPathwayId;
+
+    /**
+     * 临床路径病例
+     * 说明 字符型
+     */
+    @JSONField(name = "clinical_pathway")
+    private String clinicalPathway;
+
+    /**
+     * 病理疾病编码
+     * 说明 字符型
+     */
+    @JSONField(name = "pthlgy_id")
+    private String pthlgyId;
+
+    /**
+     * 病理号
+     * 说明 字符型
+     */
+    @JSONField(name = "pthlgy")
+    private String pthlgy;
+
+    /**
+     * 是否药物过敏编号
+     * 说明 字符型
+     */
+    @JSONField(name = "is_allergic_id")
+    private String isAllergicId;
+
+    /**
+     * 是否药物过敏
+     * 说明 字符型
+     */
+    @JSONField(name = "is_allergic")
+    private String isAllergic;
+
+    /**
+     * 责任护士编号
+     * 说明 字符型
+     */
+    @JSONField(name = "respon_nurs_id")
+    private String responNursId;
+
+    /**
+     * 责任护士
+     * 说明 字符型
+     */
+    @JSONField(name = "respon_nurs")
+    private String responNurs;
+
+    /**
+     * 离院方式编号
+     * 说明 字符型
+     */
+    @JSONField(name = "out_hosp_id")
+    private String outHospId;
+
+    /**
+     * 离院方式
+     * 说明 字符型
+     */
+    @JSONField(name = "out_hosp")
+    private String outHosp;
+
+    /**
+     * 离院方式为医嘱转院,拟接收医疗机构名称
+     * 说明 字符型
+     */
+    @JSONField(name = "mdcl_advice_out")
+    private String mdclAdviceOut;
+
+    /**
+     * 再住院目的
+     * 说明 字符型
+     */
+    @JSONField(name = "again_aim")
+    private String againAim;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院前 天
+     * 说明 数值型
+     */
+    @JSONField(name = "bef_coma_days")
+    private String befComaDays;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院前 小时
+     * 说明 数值型
+     */
+    @JSONField(name = "bef_coma_hours")
+    private String befComaHours;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院前 分钟
+     * 说明 数值型
+     */
+    @JSONField(name = "bef_coma_mins")
+    private String befComaMins;
+
+    /**
+     * 入院前昏迷总分钟
+     * 说明 数值型
+     */
+    @JSONField(name = "bef_coma_total")
+    private String befComaTotal;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院后 天
+     * 说明 数值型
+     */
+    @JSONField(name = "aft_coma_days")
+    private String aftComaDays;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院后 小时
+     * 说明 数值型
+     */
+    @JSONField(name = "aft_coma_hours")
+    private String aftComaHours;
+
+    /**
+     * 颅脑损伤患者昏迷时间:入院后 分钟
+     * 说明 数值型
+     */
+    @JSONField(name = "aft_coma_mins")
+    private String aftComaMins;
+
+    /**
+     * 入院后昏迷总分钟
+     * 说明 数值型
+     */
+    @JSONField(name = "aft_coma_total")
+    private String aftComaTotal;
+
+    /**
+     * 付款方式编号
+     * 说明 字符型
+     */
+    @JSONField(name = "fee_mode_id")
+    private String feeModeId;
+
+    /**
+     * 医疗付款方式
+     * 说明 字符型
+     */
+    @JSONField(name = "fee_mode")
+    private String feeMode;
+
+    /**
+     * 自费金额
+     * 说明 数值型
+     */
+    @JSONField(name = "self_fee")
+    private String selfFee;
+
+    /**
+     * 综合医疗服务类:(1)一般医疗服务费
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_serv_fee")
+    private String inteServFee;
+
+    /**
+     * 综合医疗服务类:(2)一般治疗操作费
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_opera_fee")
+    private String inteOperaFee;
+
+    /**
+     * 综合医疗服务类:(3)护理费
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_nurs_fee")
+    private String inteNursFee;
+
+    /**
+     * 综合医疗服务类:(4)其他费用
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_other_fee")
+    private String inteOtherFee;
+
+    /**
+     * 诊断类:(5) 病理诊断费
+     * 说明 数值型
+     */
+    @JSONField(name = "dagns_patho_fee")
+    private String dagnsPathoFee;
+
+    /**
+     * 诊断类:(6) 实验室诊断费
+     * 说明 数值型
+     */
+    @JSONField(name = "dagns_lab_fee")
+    private String dagnsLabFee;
+
+    /**
+     * 诊断类:(7) 影像学诊断费
+     * 说明 数值型
+     */
+    @JSONField(name = "dagns_ima_fee")
+    private String dagnsImaFee;
+
+    /**
+     * 诊断类:(8) 临床诊断项目费
+     * 说明 数值型
+     */
+    @JSONField(name = "dagns_cli_fee")
+    private String dagnsCliFee;
+
+    /**
+     * 治疗类:(9) 非手术治疗项目费
+     * 说明 数值型
+     */
+    @JSONField(name = "trea_nooprt_fee")
+    private String treaNooprtFee;
+
+    /**
+     * 治疗类:非手术治疗项目费 其中临床物理治疗费
+     * 说明 数值型
+     */
+    @JSONField(name = "trea_cli_fee")
+    private String treaCliFee;
+
+    /**
+     * 治疗类:(10) 手术治疗费
+     * 说明 数值型
+     */
+    @JSONField(name = "trea_oprtreat_fee")
+    private String treaOprtreatFee;
+
+    /**
+     * 治疗类:手术治疗费 其中麻醉费
+     * 说明 数值型
+     */
+    @JSONField(name = "trea_anthsa_fee")
+    private String treaAnthsaFee;
+
+    /**
+     * 治疗类:手术治疗费 其中手术费
+     * 说明 数值型
+     */
+    @JSONField(name = "trea_oprt_fee")
+    private String treaOprtFee;
+
+    /**
+     * 康复类:(11) 康复费
+     * 说明 数值型
+     */
+    @JSONField(name = "rec_fee")
+    private String recFee;
+
+    /**
+     * 中医类:中医治疗类
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_meditrea_fee")
+    private String tradiMeditreaFee;
+
+    /**
+     * 西药类: 西药费 其中抗菌药物费用
+     * 说明 数值型
+     */
+    @JSONField(name = "western_antbos_fee")
+    private String westernAntbosFee;
+
+    /**
+     * 血液和血液制品类: 血费
+     * 说明 数值型
+     */
+    @JSONField(name = "bloo_blood_fee")
+    private String blooBloodFee;
+
+    /**
+     * 血液和血液制品类: 白蛋白类制品费
+     * 说明 数值型
+     */
+    @JSONField(name = "bloo_albumin_fee")
+    private String blooAlbuminFee;
+
+    /**
+     * 血液和血液制品类: 球蛋白制品费
+     * 说明 数值型
+     */
+    @JSONField(name = "bloo_globulin_fee")
+    private String blooGlobulinFee;
+
+    /**
+     * 血液和血液制品类:凝血因子类制品费
+     * 说明 数值型
+     */
+    @JSONField(name = "bloo_coagula_fee")
+    private String blooCoagulaFee;
+
+    /**
+     * 血液和血液制品类: 细胞因子类费
+     * 说明 数值型
+     */
+    @JSONField(name = "bloo_cell_fee")
+    private String blooCellFee;
+
+    /**
+     * 耗材类:检查用一次性医用材料费
+     * 说明 数值型
+     */
+    @JSONField(name = "comsu_chkdisp_fee")
+    private String comsuChkdispFee;
+
+    /**
+     * 耗材类:治疗用一次性医用材料费
+     * 说明 数值型
+     */
+    @JSONField(name = "comsu_treadisp_fee")
+    private String comsuTreadispFee;
+
+    /**
+     * 耗材类:手术用一次性医用材料费
+     * 说明 数值型
+     */
+    @JSONField(name = "comsu_oprtdisp_fee")
+    private String comsuOprtdispFee;
+
+    /**
+     * 综合医疗服务类:一般医疗服务费 其中中医辨证论治费(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_dialect_fee")
+    private String inteDialectFee;
+
+    /**
+     * 综合医疗服务类:一般医疗服务费 其中中医辨证论治会诊费(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "inte_consul_fee")
+    private String inteConsulFee;
+
+    /**
+     * 中医类:诊断(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_dagns_fee")
+    private String tradiDagnsFee;
+
+    /**
+     * 中医类:治疗(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_trea_fee")
+    private String tradiTreaFee;
+
+    /**
+     * 中医类:治疗 其中外治(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treaout_fee")
+    private String tradiTreaoutFee;
+
+    /**
+     * 中医类:治疗 其中骨伤(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treabone_fee")
+    private String tradiTreaboneFee;
+
+    /**
+     * 中医类:治疗 其中针刺与灸法(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treaacup_fee")
+    private String tradiTreaacupFee;
+
+    /**
+     * 中医类:治疗推拿治疗(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treamani_fee")
+    private String tradiTreamaniFee;
+
+    /**
+     * 中医类:治疗 其中肛肠治疗(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treaanor_fee")
+    private String tradiTreaanorFee;
+
+    /**
+     * 中医类:治疗 其中特殊治疗(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_treaspec_fee")
+    private String tradiTreaspecFee;
+
+    /**
+     * 中医类:其他(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_othe_fee")
+    private String tradiOtheFee;
+
+    /**
+     * 中医类:其他 其中中药特殊调配加工(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_othemake_fee")
+    private String tradiOthemakeFee;
+
+    /**
+     * 中医类:其他 其中辨证施膳(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_othefood_fee")
+    private String tradiOthefoodFee;
+
+    /**
+     * 中药类:中成药费 其中医疗机构中药制剂费(中医)
+     * 说明 数值型
+     */
+    @JSONField(name = "tradi_patemake_fee")
+    private String tradiPatemakeFee;
+
+    /**
+     * 治疗类别编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "treatype_tradi_id")
+    private String treatypeTradiId;
+
+    /**
+     * 治疗类别(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "treatype_tradi")
+    private String treatypeTradi;
+
+    /**
+     * 门(急)诊中医诊断编码(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_tradi_id")
+    private String outemgcTradiId;
+
+    /**
+     * 门(急)诊中医诊断(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "outemgc_tradi")
+    private String outemgcTradi;
+
+    /**
+     * 实施临床路径编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "implcli_tradi_id")
+    private String implcliTradiId;
+
+    /**
+     * 实施临床路径(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "implcli_tradi_path")
+    private String implcliTradiPath;
+
+    /**
+     * 使用医疗机构中药制剂编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "useprep_tradi_id")
+    private String useprepTradiId;
+
+    /**
+     * 使用医疗机构中药制剂(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "useprep_tradi")
+    private String useprepTradi;
+
+    /**
+     * 使用中医诊疗设备编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "usedev_tradi_id")
+    private String usedevTradiId;
+
+    /**
+     * 使用中医诊疗设备(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "usedev_tradi")
+    private String usedevTradi;
+
+    /**
+     * 使用中医诊疗技术编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "usetech_tradi_id")
+    private String usetechTradiId;
+
+    /**
+     * 使用中医诊疗技术(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "usetech_tradi")
+    private String usetechTradi;
+
+    /**
+     * 辨证施护编号(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "tradi_dlctnurs_id")
+    private String tradiDlctnursId;
+
+    /**
+     * 辨证施护(中医类)
+     * 说明 字符型
+     */
+    @JSONField(name = "tradi_dlctnurs")
+    private String tradiDlctnurs;
+
+    /**
+     * 创建时间
+     * 说明 日期时间型
+     */
+    @JSONField(name = "create_time")
+    private String createTime;
+
+    /**
+     * 婚姻状况
+     * 说明 字符型
+     */
+    @JSONField(name = "marriage_status")
+    private String marriageStatus;
+
+    /**
+     * 离院方式为转社区卫生服务器机构/乡镇卫生院,拟接收医疗机构名称
+     * 说明 字符型
+     */
+    @JSONField(name = "commu_out")
+    private String commuOut;
+
+    /**
+     * 是否有出院31天内再住院计划编号
+     * 说明 字符型
+     */
+    @JSONField(name = "isagain_hsptzd_id")
+    private String isagainHsptzdId;
+
+    /**
+     * 是否有出院31天内再住院计划
+     * 说明 字符型
+     */
+    @JSONField(name = "isagain_hsptzd")
+    private String isagainHsptzd;
+
+    /**
+     * 所属机构(医院)id
+     * 说明 字符型
+     */
+    @JSONField(name = "org_id")
+    private String orgId;
+
+    /**
+     * 就诊id
+     * 说明 字符型
+     */
+    @JSONField(name = "visit_id")
+    private String visitId;
+
+    /**
+     * 出院科别代码
+     * 说明 字符型
+     */
+    @JSONField(name = "disch_dept_id")
+    private String dischDeptId;
+
+    /**
+     * 入院科别代码
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_dept_id")
+    private String hsptzdDeptId;
+
+    /**
+     * 损伤中毒的外部因素,填写造成损伤的外部原因及引起中毒的物质
+     * 说明 字符型
+     */
+    @JSONField(name = "inju_pois_exter_rsn")
+    private String injuPoisExterRsn;
+
+    /**
+     * 损伤中毒的外部原因的疾病编码,ICD-10
+     * 说明 字符型
+     */
+    @JSONField(name = "inju_pois_exter_rsn_code")
+    private String injuPoisExterRsnCode;
+
+    /**
+     * 记录修改版本号
+     * 说明 数值型
+     */
+    @JSONField(name = "edit_version")
+    private String editVersion;
+
+    /**
+     * 病案状态
+     * 说明 字符型
+     */
+    @JSONField(name = "is_code")
+    private String isCode;
+
+    /**
+     * 现住址省
+     * 说明 字符型
+     */
+    @JSONField(name = "addr_province")
+    private String addrProvince;
+
+    /**
+     * 现住址市
+     * 说明 字符型
+     */
+    @JSONField(name = "addr_city")
+    private String addrCity;
+
+    /**
+     * 现住址县
+     * 说明 字符型
+     */
+    @JSONField(name = "addr_county")
+    private String addrCounty;
+
+    /**
+     * 现住址详细地址
+     * 说明 字符型
+     */
+    @JSONField(name = "addr_street")
+    private String addrStreet;
+
+    /**
+     * 联系人地址省
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_addr_prov")
+    private String contAddrProv;
+
+    /**
+     * 联系人地址市
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_addr_city")
+    private String contAddrCity;
+
+    /**
+     * 联系人地址县
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_addr_county")
+    private String contAddrCounty;
+
+    /**
+     * 联系人详细地址
+     * 说明 字符型
+     */
+    @JSONField(name = "cont_addr_street")
+    private String contAddrStreet;
+
+    /**
+     * 入院时情况
+     * 说明 字符型
+     */
+    @JSONField(name = "admi_cond")
+    private String admiCond;
+
+    /**
+     * 入院诊断编码
+     * 说明 字符型
+     */
+    @JSONField(name = "hosp_diag_code")
+    private String hospDiagCode;
+
+    /**
+     * 入院诊断名称
+     * 说明 字符型
+     */
+    @JSONField(name = "hosp_diag_name")
+    private String hospDiagName;
+
+    /**
+     * 入院后确诊日期
+     * 说明 字符型
+     */
+    @JSONField(name = "admi_date")
+    private String admiDate;
+
+    /**
+     * 病理诊断编码1
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_diagn_code_one")
+    private String pathoDiagnCodeOne;
+
+    /**
+     * 病理诊断名称1
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_diagn_name_one")
+    private String pathoDiagnNameOne;
+
+    /**
+     * 病理号1
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_num_one")
+    private String pathoNumOne;
+
+    /**
+     * 病理诊断编码2
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_diagn_code_two")
+    private String pathoDiagnCodeTwo;
+
+    /**
+     * 病理诊断名称2
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_diagn_name_two")
+    private String pathoDiagnNameTwo;
+
+    /**
+     * 病理号2
+     * 说明 字符型
+     */
+    @JSONField(name = "patho_num_two")
+    private String pathoNumTwo;
+
+    /**
+     * HBsAg
+     * 说明 字符型
+     */
+    @JSONField(name = "hbsag")
+    private String hbsag;
+
+    /**
+     * HCV-Ab
+     * 说明 字符型
+     */
+    @JSONField(name = "hcv_ab")
+    private String hcvAb;
+
+    /**
+     * HIV-Ab
+     * 说明 字符型
+     */
+    @JSONField(name = "hiv_ab")
+    private String hivAb;
+
+    /**
+     * 特级护理天数(天)
+     * 说明 数值型
+     */
+    @JSONField(name = "special_care_days")
+    private String specialCareDays;
+
+    /**
+     * 一级护理天数(天)
+     * 说明 数值型
+     */
+    @JSONField(name = "one_level_care_days")
+    private String oneLevelCareDays;
+
+    /**
+     * 二级护理天数(天)
+     * 说明 数值型
+     */
+    @JSONField(name = "two_level_care_days")
+    private String twoLevelCareDays;
+
+    /**
+     * 三级护理天数(天)
+     * 说明 数值型
+     */
+    @JSONField(name = "three_level_care_days")
+    private String threeLevelCareDays;
+
+    /**
+     * 输血反应
+     * 说明 数值型
+     */
+    @JSONField(name = "trans_reaction")
+    private String transReaction;
+
+    /**
+     * 红细胞
+     * 说明 数值型
+     */
+    @JSONField(name = "red_blood_cell")
+    private String redBloodCell;
+
+    /**
+     * 血小板
+     * 说明 数值型
+     */
+    @JSONField(name = "platelet")
+    private String platelet;
+
+    /**
+     * 血浆
+     * 说明 数值型
+     */
+    @JSONField(name = "plasma")
+    private String plasma;
+
+    /**
+     * 全血
+     * 说明 数值型
+     */
+    @JSONField(name = "whole_blood")
+    private String wholeBlood;
+
+    /**
+     * 自体血回输
+     * 说明 数值型
+     */
+    @JSONField(name = "autotrans")
+    private String autotrans;
+
+    /**
+     * 年龄不足1周岁的年龄(天)
+     * 说明 数值型
+     */
+    @JSONField(name = "age_less_1year")
+    private String ageLess1year;
+
+    /**
+     * 新生儿出生体重(克)2
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_weight_two")
+    private String newbornWeightTwo;
+
+    /**
+     * 新生儿出生体重(克)3
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_weight_three")
+    private String newbornWeightThree;
+
+    /**
+     * 新生儿出生体重(克)4
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_weight_four")
+    private String newbornWeightFour;
+
+    /**
+     * 新生儿出生体重(克)5
+     * 说明 数值型
+     */
+    @JSONField(name = "newborn_weight_five")
+    private String newbornWeightFive;
+
+    /**
+     * 有创呼吸机使用时间(小时)
+     * 说明 数值型
+     */
+    @JSONField(name = "venti_use_time")
+    private String ventiUseTime;
+
+    /**
+     * 质控通过标识 Y:通过  N:不通过
+     * 说明 字符型
+     */
+    @JSONField(name = "quality_flag")
+    private String qualityFlag;
+
+    /**
+     * 状态  0:待确认 1:待上传    2:上传成功   3:上传失败
+     * 说明 字符型
+     */
+    @JSONField(name = "status")
+    private String status;
+
+    /**
+     * 数据是否有效标识  Y:有效  N:无效
+     * 说明 字符型
+     */
+    @JSONField(name = "flag")
+    private String flag;
+
+    /**
+     * 是否修改  Y:修改
+     * 说明 字符型
+     */
+    @JSONField(name = "is_modify")
+    private String isModify;
+
+    /**
+     * 是否为日间手术
+     * 说明 字符型
+     */
+    @JSONField(name = "is_day_surgery")
+    private String isDaySurgery;
+
+    /**
+     * 录入者
+     * 说明 字符型
+     */
+    @JSONField(name = "operator")
+    private String operator;
+
+    /**
+     * 定点医疗机构编码
+     * 说明 字符型
+     */
+    @JSONField(name = "hosp_org_code")
+    private String hospOrgCode;
+
+    /**
+     * 在院状态
+     * 说明 字符型
+     */
+    @JSONField(name = "in_state")
+    private String inState;
+
+    /**
+     * 险种类别
+     * 说明 字符型
+     */
+    @JSONField(name = "insur_type_id")
+    private String insurTypeId;
+
+    /**
+     * 险种类别名称
+     * 说明 字符型
+     */
+    @JSONField(name = "insur_type")
+    private String insurType;
+
+    /**
+     * 证件类型代码
+     * 说明 字符型
+     */
+    @JSONField(name = "card_type_id")
+    private String cardTypeId;
+
+    /**
+     * 住院医疗类型ID
+     * 说明 字符型
+     */
+    @JSONField(name = "hsptzd_medc_type_id")
+    private String hsptzdMedcTypeId;
+}

+ 43 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/frontsheetqualitycheck/QualityCheckDiseInfo.java

@@ -0,0 +1,43 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+@Data
+public class QualityCheckDiseInfo {
+    /**
+     * 排序
+     */
+    @JSONField(name = "order")
+    private Integer order;
+
+    /**
+     * 诊断类型
+     */
+    @JSONField(name = "dagns_type")
+    private String dagnsType;
+
+    /**
+     * 疾病名称
+     */
+    @JSONField(name = "disease_name")
+    private String diseaseName;
+
+    /**
+     * ICD编码
+     */
+    @JSONField(name = "icd_code")
+    private String icdCode;
+
+    /**
+     * 入院病情编号
+     */
+    @JSONField(name = "dagns_condi_id")
+    private Integer dagnsCondiId;
+
+    /**
+     * 入院病情名称
+     */
+    @JSONField(name = "dagns_condi")
+    private String dagnsCondi;
+}

+ 151 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/frontsheetqualitycheck/QualityCheckOprtInfo.java

@@ -0,0 +1,151 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+@Data
+public class QualityCheckOprtInfo {
+    /**
+     * 排序
+     */
+    @JSONField(name = "order")
+    private Integer order;
+
+    /**
+     * 手术编码
+     */
+    @JSONField(name = "oprt_code")
+    private String oprtCode;
+
+    /**
+     * 手术码对应名称
+     */
+    @JSONField(name = "oprt_name")
+    private String oprtName;
+
+    /**
+     * 手术类型
+     */
+    @JSONField(name = "oprt_type")
+    private String oprtType;
+
+    /**
+     * 手术日期
+     */
+    @JSONField(name = "oprt_date")
+    private String oprtDate;
+
+    /**
+     * 切口编号
+     */
+    @JSONField(name = "oprt_cut_id")
+    private String oprtCutId;
+
+    /**
+     * 切口名称
+     */
+    @JSONField(name = "oprt_cut")
+    private String oprtCut;
+
+    /**
+     * 愈合编号
+     */
+    @JSONField(name = "heal_id")
+    private String healId;
+
+    /**
+     * 愈合名称
+     */
+    @JSONField(name = "heal")
+    private String heal;
+
+    /**
+     * 手术医生编号
+     */
+    @JSONField(name = "oprt_doctor_id")
+    private String oprtDoctorId;
+
+    /**
+     * 手术医生
+     */
+    @JSONField(name = "oprt_doctor")
+    private String oprtDoctor;
+
+    /**
+     * 麻醉方式编号
+     */
+    @JSONField(name = "anthsa_mode_id")
+    private String anthsaModeId;
+
+    /**
+     * 麻醉方式名称
+     */
+    @JSONField(name = "anthsa_mode")
+    private String anthsaMode;
+
+    /**
+     * 是否附加手术
+     */
+    @JSONField(name = "is_add_port")
+    private String isAddPort;
+
+    /**
+     * I助编号
+     */
+    @JSONField(name = "first_ass_id")
+    private String firstAssId;
+
+    /**
+     * I助姓名
+     */
+    @JSONField(name = "first_ass")
+    private String firstAss;
+
+    /**
+     * II助编号
+     */
+    @JSONField(name = "second_ass_id")
+    private String secondAssId;
+
+    /**
+     * II助姓名
+     */
+    @JSONField(name = "second_ass")
+    private String secondAss;
+
+    /**
+     * 麻醉医生编号
+     */
+    @JSONField(name = "anthsa_doctor_id")
+    private String anthsaDoctorId;
+
+    /**
+     * 麻醉医生
+     */
+    @JSONField(name = "anthsa_doctor")
+    private String anthsaDoctor;
+
+    /**
+     * 择期手术编号
+     */
+    @JSONField(name = "plan_oprt_id")
+    private String planOprtId;
+
+    /**
+     * 择期手术
+     */
+    @JSONField(name = "plan_oprt")
+    private String planOprt;
+
+    /**
+     * 手术级别编号
+     */
+    @JSONField(name = "oprt_level_id")
+    private String oprtLevelId;
+
+    /**
+     * 手术级别名称
+     */
+    @JSONField(name = "oprt_level")
+    private String oprtLevel;
+}

+ 18 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/frontsheetqualitycheck/QualityCheckParams.java

@@ -0,0 +1,18 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QualityCheckParams {
+    @JSONField(name = "base_info")
+    private QualityCheckBaseInfo baseInfo;
+
+    @JSONField(name = "dise_info_list")
+    private List<QualityCheckDiseInfo> diseInfoList;
+
+    @JSONField(name = "oprt_info_list")
+    private List<QualityCheckOprtInfo> oprtInfoList;
+}

+ 51 - 1
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetMainService.java

@@ -1,12 +1,16 @@
 package thyyxxk.webserver.service.casefrontsheet;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.constants.EmrType;
 import thyyxxk.webserver.constants.sidicts.Insutype;
 import thyyxxk.webserver.constants.sidicts.MedType;
 import thyyxxk.webserver.dao.his.LoginDao;
@@ -14,10 +18,13 @@ import thyyxxk.webserver.dao.his.casefrontsheet.BasSelectOverviewDao;
 import thyyxxk.webserver.dao.his.casefrontsheet.CaseFrontSheetDao;
 import thyyxxk.webserver.dao.his.casefrontsheet.SheetCreatedDao;
 import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckParams;
 import thyyxxk.webserver.entity.casefrontsheet.*;
 import thyyxxk.webserver.entity.covid.Region;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.service.externalhttp.PowersiSrvc;
+import thyyxxk.webserver.service.redislike.RedisLikeService;
+import thyyxxk.webserver.service.zhuyuanyisheng.EmrServer;
 import thyyxxk.webserver.utils.*;
 
 import java.lang.reflect.Field;
@@ -33,14 +40,18 @@ public class CaseFrontSheetMainService {
     private final BasSelectOverviewDao basDao;
     private final LoginDao userDao;
     private final PowersiSrvc srvc;
+    private final RedisLikeService redis;
+    private final EmrServer emrService;
 
     public CaseFrontSheetMainService(SheetCreatedDao createdDao, CaseFrontSheetDao dao,
-                                     BasSelectOverviewDao basDao, LoginDao userDao, PowersiSrvc srvc) {
+                                     BasSelectOverviewDao basDao, LoginDao userDao, PowersiSrvc srvc, RedisLikeService redis, EmrServer emrService) {
         this.dao = dao;
         this.createdDao = createdDao;
         this.basDao = basDao;
         this.userDao = userDao;
         this.srvc = srvc;
+        this.redis = redis;
+        this.emrService = emrService;
         if (allDictionary == null) {
             allDictionary = new ConcurrentHashMap<>();
         }
@@ -754,4 +765,43 @@ public class CaseFrontSheetMainService {
         }
         return dao.selectStandardAddressMember2(addrs[0], addrs[1], addrs[2]);
     }
+
+    public ResultVo<String> frontsheetQualityCheck(CaseFrontsheetMain sheet) {
+
+        JSONArray diagList = emrService.getEmrData(sheet.getBah(), sheet.getAdmissTimes(), EmrType.DIAGNOSIS);
+        JSONArray oprtList = emrService.getEmrData(sheet.getBah(), sheet.getAdmissTimes(), EmrType.OPERATION);
+
+        log.info("diagList: {}\n================================\noprtList: {}", diagList, oprtList);
+
+        List<CodeName> anstWays = dao.selectZdAnstWays();
+        Map<String, CodeName> anstWaysMap = new HashMap<>();
+        for (CodeName item : anstWays) {
+            anstWaysMap.put(item.getCode(), item);
+        }
+
+        List<CodeName> countries = dao.selectZdCountries();
+        Map<String, CodeName> countriesMap = new HashMap<>();
+        for (CodeName item : countries) {
+            countriesMap.put(item.getCode(), item);
+        }
+
+        List<CodeName> nations = dao.selectZdNations();
+        Map<String, CodeName> nationsMap = new HashMap<>();
+        for (CodeName item : nations) {
+            nationsMap.put(item.getCode(), item);
+        }
+
+        QualityCheckParams params = new QualityCheckParams();
+        params.setBaseInfo(FrontSheetUtil.fillBaseInfoFromSheet(sheet, countriesMap, nationsMap));
+        params.setDiseInfoList(FrontSheetUtil.fillDiseInfoFromSheet(sheet.getDisdiagList()));
+        params.setOprtInfoList(FrontSheetUtil.fillOprtInfoFromSheet(sheet.getSurgeryList(), anstWaysMap));
+
+
+        String url = "http://172.16.32.126:8080/drg_web/drgGroupThird/V2/groupAndQuality.action";
+        RestTemplate template = new RestTemplate();
+        String res = template.postForObject(url, JSONObject.parseObject(
+                JSON.toJSONString(params, SerializerFeature.WriteNullStringAsEmpty)), String.class);
+        log.info(res);
+        return ResultVoUtil.success("http://172.16.32.126:8080"+res);
+    }
 }

+ 5 - 3
src/main/java/thyyxxk/webserver/service/casefrontsheet/VerifyCaseFrontSheet.java

@@ -359,9 +359,11 @@ public class VerifyCaseFrontSheet {
                 (StringUtil.invalidValue(info.getHurtReasonName()) || StringUtil.invalidValue(info.getHurtReasonCode()))) {
             array.add(new CodeName("hurtReasonName","根据患者出院主要诊断,损伤中毒诊断不能为空!"));
         }
-        if (null != opType && opType != 2 && StringUtil.notBlank(info.getBloodType()) && !"5".equals(info.getBloodType())) {
-            if (!"1".equals(info.getRh()) && !"2".equals(info.getRh())) {
-                array.add(new CodeName("rh","患者血型确定时,Rh血型应为阴或阳!"));
+        if (null != opType && opType != 2 && StringUtil.notBlank(info.getBloodType())) {
+            if (!"5".equals(info.getBloodType()) && !"6".equals(info.getBloodType())) {
+                if (!"1".equals(info.getRh()) && !"2".equals(info.getRh())) {
+                    array.add(new CodeName("rh","患者血型确定时,Rh血型应为阴或阳!"));
+                }
             }
         }
         if (hasDuplicateDiag(info.getDisdiagList())) {

+ 0 - 76
src/main/java/thyyxxk/webserver/service/xctest/xctest.java

@@ -1,76 +0,0 @@
-package thyyxxk.webserver.service.xctest;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import thyyxxk.webserver.service.zhuyuanyisheng.EmrServer;
-import thyyxxk.webserver.utils.StringUtil;
-
-import javax.annotation.PostConstruct;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-import static thyyxxk.webserver.utils.ExcelUtil.readExcel;
-
-@Service
-@Component
-@Slf4j
-public class xctest {
-
-    private final EmrServer server;
-
-    public xctest(EmrServer server) {
-        this.server = server;
-    }
-
-    public void init() {
-//        log.info("抽取到的诊断:{}", server.getEmrData("0410033", 2, EmrType.OPERATION));
-    }
-
-    public static void main(String[] args) throws IOException {
-        String filePath = "D:\\world\\创智类\\患者基本信息.xlsx";
-        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(Files.newInputStream(Paths.get(filePath)));
-        XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
-        //获取最大行数
-        int maxRow = sheet.getLastRowNum();
-        StringBuilder sb = new StringBuilder();
-        for (int row = 1; row < maxRow; row++) {
-            Row rowStr = sheet.getRow(row);
-            String str = String.format(
-                    "/**\n" +
-                            "* %s \n" +
-                            "* 说明 %s \n" +
-                            "*/ \n" +
-                            "@JSONField(name = \"%s\") \n" +
-                            "private %s %s; \n",
-                    rowStr.getCell(1).toString(),
-                    rowStr.getCell(6).toString(),
-                    rowStr.getCell(0).toString(),
-                    type(rowStr.getCell(2).toString()),
-                    StringUtil.lineToHump(rowStr.getCell(0).toString()));
-            System.out.println(str);
-
-        }
-    }
-
-    private static String type(String str) {
-        switch (str) {
-            case "字符型":
-            case "数值型":
-                return "String";
-            default:
-                return "String";
-        }
-    }
-
-
-}

+ 303 - 0
src/main/java/thyyxxk/webserver/utils/FrontSheetUtil.java

@@ -0,0 +1,303 @@
+package thyyxxk.webserver.utils;
+
+import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckBaseInfo;
+import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckDiseInfo;
+import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckOprtInfo;
+import thyyxxk.webserver.entity.casefrontsheet.CaseFrontsheetDisdiag;
+import thyyxxk.webserver.entity.casefrontsheet.CaseFrontsheetMain;
+import thyyxxk.webserver.entity.casefrontsheet.CaseFrontsheetSurgery;
+import thyyxxk.webserver.entity.dictionary.CodeName;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class FrontSheetUtil {
+    public static QualityCheckBaseInfo fillBaseInfoFromSheet(CaseFrontsheetMain sheet, Map<String, CodeName> countriesMap,
+                                                             Map<String, CodeName> nationsMap) {
+        QualityCheckBaseInfo baseInfo = new QualityCheckBaseInfo();
+        baseInfo.setHospitalCode("H43010500370");
+        baseInfo.setHospitalName("长沙泰和医院");
+        baseInfo.setCardNumber(sheet.getSocialNo().toUpperCase());
+        baseInfo.setPatientNo(sheet.getBah() + "_" + sheet.getAdmissTimes());
+        baseInfo.setHsptzdCount(sheet.getAdmissTimes());
+        baseInfo.setAge(sheet.getAge());
+        baseInfo.setName(sheet.getName());
+        baseInfo.setSexId(sheet.getSex());
+        baseInfo.setSex("1".equals(sheet.getSex()) ? "男" : "女");
+        baseInfo.setBirthday(DateUtil.formatDatetime(sheet.getBirthDate(), DateUtil.DATE));
+        baseInfo.setIdCard(sheet.getSocialNo().toUpperCase());
+        CodeName country = countriesMap.get(sheet.getCountry());
+        if (null != country) {
+            baseInfo.setCountryId(country.getYbCode());
+            baseInfo.setCountry(country.getName());
+        }
+        CodeName nation = nationsMap.get(sheet.getNation());
+        if (null != nation) {
+            baseInfo.setNationId(nation.getYbCode());
+            baseInfo.setNation(nation.getName());
+        }
+        // TODO: 2022/12/9 映射职业代码
+        baseInfo.setMarriageStatusId(reflectMarriage(sheet.getMarriage()));
+        baseInfo.setMarriageStatus(filterMarriageName(sheet.getMarriage()));
+        baseInfo.setCompanyName(sheet.getUnitName());
+        baseInfo.setCompanyAddress(sheet.getUnitPlace());
+        baseInfo.setCompanyTel(sheet.getUnitPhone());
+        baseInfo.setCompanyPost(sheet.getUnitZipCode());
+        baseInfo.setResidentAddress(sheet.getHkPlaceName());
+        baseInfo.setResidentPost(sheet.getHkZipCode());
+        baseInfo.setCont(sheet.getContactName());
+        baseInfo.setContRelPatient(sheet.getContactRelation());
+        baseInfo.setContAddress(sheet.getContactAddrName());
+        baseInfo.setContTel(sheet.getContactPhone());
+        baseInfo.setAsCard(sheet.getHealthCardNo());
+        baseInfo.setHsptzdDate(DateUtil.formatDatetime(sheet.getAdmissDate(), DateUtil.DATE));
+        baseInfo.setHsptzdDeptId(sheet.getAdmissDeptCode());
+        baseInfo.setHsptzdDept(sheet.getAdmissDept());
+        baseInfo.setHsptzdWard(sheet.getAdmissWard());
+        baseInfo.setHospDischDate(DateUtil.formatDatetime(sheet.getDismissDate(), DateUtil.DATE));
+        baseInfo.setDischDept(sheet.getDismissDept());
+        baseInfo.setDischDeptId(sheet.getDismissDeptCode());
+        baseInfo.setActualAdmDays(sheet.getAdmissDays());
+        baseInfo.setOutemgcDagnsId(sheet.getClinicDiagCode());
+        baseInfo.setOutemgcDagns(sheet.getClinicDiagStr());
+        baseInfo.setPthlgyDagns(sheet.getPathologicDiagStr());
+        baseInfo.setAllergicDrugs(sheet.getAllergicMedicine());
+        baseInfo.setRescueNum(sheet.getRescueTimes());
+        baseInfo.setRescueSuccNum(sheet.getRescueSuccessTimes());
+        baseInfo.setQualityDate(DateUtil.formatDatetime(sheet.getQualityControlDate(), DateUtil.DATE));
+        baseInfo.setTotalFee(sheet.getTotalCost());
+        baseInfo.setOutHospId(reflectDismissWay(sheet.getZyDismissWay()));
+        baseInfo.setOutHosp(filterDismissWayName(sheet.getZyDismissWay()));
+        baseInfo.setSelfFee(sheet.getSelfPay());
+        baseInfo.setInteServFee(sheet.getGeneralMedicalServiceFee());
+        baseInfo.setInteOperaFee(sheet.getGeneralTreatmentOperatingFee());
+        baseInfo.setInteNursFee(sheet.getCareFee());
+        baseInfo.setInteOtherFee(sheet.getElseFee());
+        baseInfo.setDagnsPathoFee(sheet.getPathologicDiagFee());
+        baseInfo.setDagnsLabFee(sheet.getExperimentDiagFee());
+        baseInfo.setDagnsImaFee(sheet.getCtDiagFee());
+        baseInfo.setDagnsCliFee(sheet.getClinicalDiagFee());
+        baseInfo.setTreaNooprtFee(sheet.getNotSurgicalFee());
+        baseInfo.setTreaCliFee(sheet.getClinicalPhysicalFee());
+        baseInfo.setTreaOprtreatFee(sheet.getSurgicalFee());
+        baseInfo.setTreaAnthsaFee(sheet.getAnesthetizeFee());
+        baseInfo.setTreaOprtFee(sheet.getSurgeryFee());
+        baseInfo.setRecFee(sheet.getRecoverFee());
+        baseInfo.setTradiMeditreaFee(sheet.getTcmTreatmentFee());
+        baseInfo.setWesternAntbosFee(sheet.getWestMedicineFee());
+        baseInfo.setBlooBloodFee(sheet.getBloodFee());
+        baseInfo.setBlooAlbuminFee(sheet.getAlbuminProductsFee());
+        baseInfo.setBlooGlobulinFee(sheet.getGlobulinProductsFee());
+        baseInfo.setBlooCoagulaFee(sheet.getCoagulationFactorProductsFee());
+        baseInfo.setBlooCellFee(sheet.getCytokineProductsFee());
+        baseInfo.setComsuChkdispFee(sheet.getCostOfDisposableMedicalMaterialsForExamination());
+        baseInfo.setComsuTreadispFee(sheet.getCostOfDisposableMedicalMaterialsForTreatment());
+        baseInfo.setComsuOprtdispFee(sheet.getCostOfDisposableMedicalMaterialsForOperation());
+        baseInfo.setIsagainHsptzdId(sheet.getAdmissAgainInOneMonth());
+        baseInfo.setIsagainHsptzd(sheet.getAdmissAgainPurpose());
+        return baseInfo;
+    }
+
+    public static List<QualityCheckDiseInfo> fillDiseInfoFromSheet(List<CaseFrontsheetDisdiag> diagList) {
+        List<QualityCheckDiseInfo> list = new ArrayList<>();
+        for (CaseFrontsheetDisdiag diag : diagList) {
+            if (StringUtil.isBlank(diag.getName())) {
+                break;
+            }
+            QualityCheckDiseInfo diseInfo = new QualityCheckDiseInfo();
+            diseInfo.setOrder(diag.getNo());
+            diseInfo.setDagnsType(diag.getNo() == 1 ? "1" : "2");
+            diseInfo.setDiseaseName(diag.getName());
+            diseInfo.setIcdCode(diag.getCode());
+            diseInfo.setDagnsCondiId(diag.getAdmissStatus());
+            diseInfo.setDagnsCondi(filterDiagnoseCondition(diag.getAdmissStatus()));
+            list.add(diseInfo);
+        }
+        return list;
+    }
+
+    public static List<QualityCheckOprtInfo> fillOprtInfoFromSheet(List<CaseFrontsheetSurgery> surgeryList,
+                                                                   Map<String, CodeName> anstWaysMap) {
+        List<QualityCheckOprtInfo> list = new ArrayList<>();
+        for (CaseFrontsheetSurgery surgery : surgeryList) {
+            if (StringUtil.isBlank(surgery.getName())) {
+                break;
+            }
+            QualityCheckOprtInfo oprtInfo = new QualityCheckOprtInfo();
+            oprtInfo.setOrder(surgery.getNo());
+            oprtInfo.setOprtCode(surgery.getCode());
+            oprtInfo.setOprtName(surgery.getName());
+            oprtInfo.setOprtType(surgery.getNo() == 1 ? "1" : "2");
+            oprtInfo.setOprtDate(DateUtil.formatDatetime(surgery.getDate(), DateUtil.DATE));
+            oprtInfo.setOprtCutId(reflectCutId(surgery.getCut()));
+            oprtInfo.setOprtCut(filterCutName(oprtInfo.getOprtCutId()));
+            oprtInfo.setHealId(reflectHealId(surgery.getHeal()));
+            oprtInfo.setHeal(filterHealName(oprtInfo.getHealId()));
+            oprtInfo.setOprtDoctorId(surgery.getOperator());
+            oprtInfo.setOprtDoctor(surgery.getOperatorName());
+            CodeName anstWay = anstWaysMap.get(surgery.getAnaesthesia());
+            if (null != anstWay) {
+                oprtInfo.setAnthsaModeId(anstWay.getYbCode());
+                oprtInfo.setAnthsaMode(anstWay.getName());
+            }
+            oprtInfo.setFirstAssId(surgery.getAssistantOne());
+            oprtInfo.setFirstAss(surgery.getAssistantOneName());
+            oprtInfo.setSecondAssId(surgery.getAssistantTwo());
+            oprtInfo.setSecondAss(surgery.getAssistantTwoName());
+            oprtInfo.setAnthsaDoctorId(surgery.getAnaesthesiaor());
+            oprtInfo.setAnthsaDoctor(surgery.getAnaesthesiaorName());
+            oprtInfo.setOprtLevelId(surgery.getLevel());
+            oprtInfo.setOprtLevel(filterOprtLevelName(surgery.getLevel()));
+            oprtInfo.setIsAddPort(null);
+            oprtInfo.setPlanOprtId(null);
+            oprtInfo.setPlanOprt(null);
+            list.add(oprtInfo);
+        }
+        return list;
+    }
+
+    public static String reflectDismissWay(String code) {
+        switch (code) {
+            case "0":
+                return "1";
+            case "1":
+                return "2";
+            case "2":
+                return "3";
+            case "3":
+                return "4";
+            case "4":
+                return "5";
+            case "5":
+                return "9";
+            default:
+                return "";
+        }
+    }
+
+    public static String filterDismissWayName(String code) {
+        switch (code) {
+            case "0":
+                return "医嘱离院";
+            case "1":
+                return "医嘱转院";
+            case "2":
+                return "医嘱转社区卫生服务机构/乡镇卫生院";
+            case "3":
+                return "非医嘱离院";
+            case "4":
+                return "死亡";
+            case "5":
+                return "其他";
+            default:
+                return "";
+        }
+    }
+
+    public static String reflectMarriage(String code) {
+        switch (code) {
+            case "1":
+                return "10";
+            case "2":
+                return "20";
+            case "3":
+                return "30";
+            case "4":
+                return "40";
+            case "9":
+                return "90";
+            default:
+                return "";
+        }
+    }
+
+    public static String filterMarriageName(String code) {
+        switch (code) {
+            case "1":
+                return "未婚";
+            case "2":
+                return "已婚";
+            case "3":
+                return "丧偶";
+            case "4":
+                return "离婚";
+            case "9":
+                return "其他";
+            default:
+                return "";
+        }
+    }
+
+    public static String filterOprtLevelName(String level) {
+        switch (level) {
+            case "1":
+                return "一级手术";
+            case "2":
+                return "二级手术";
+            case "3":
+                return "三级手术";
+            case "4":
+                return "四级手术";
+            default:
+                return "";
+        }
+    }
+
+    public static String reflectHealId(String heal) {
+        if (StringUtil.isBlank(heal)) {
+            heal = "0";
+        }
+        return heal.equals("0") ? "9" : heal;
+    }
+
+    public static String filterHealName(String healId) {
+        switch (healId) {
+            case "1":
+                return "甲";
+            case "2":
+                return "乙";
+            case "3":
+                return "丙";
+            case "9":
+                return "未知";
+        }
+        return "";
+    }
+
+    public static String reflectCutId(String cut) {
+        if (StringUtil.isBlank(cut)) {
+            return "1";
+        }
+        return String.valueOf(Integer.parseInt(cut) + 1);
+    }
+
+    public static String filterCutName(String cutId) {
+        switch (cutId) {
+            case "1":
+                return "0";
+            case "2":
+                return "Ⅰ";
+            case "3":
+                return "Ⅱ";
+            case "4":
+                return "Ⅲ";
+        }
+        return "";
+    }
+
+    public static String filterDiagnoseCondition(int condition) {
+        switch (condition) {
+            case 1:
+                return "有";
+            case 2:
+                return "临床未确定";
+            case 3:
+                return "情况不明";
+            case 4:
+                return "无";
+            default:
+                return "";
+        }
+    }
+}