فهرست منبع

读卡查询医保身份

lihong 1 ماه پیش
والد
کامیت
15395390db

+ 5 - 9
src/main/java/cn/hnthyy/thmz/controller/mz/MzPatientMiController.java

@@ -6,28 +6,19 @@ import cn.hnthyy.thmz.common.Constants;
 import cn.hnthyy.thmz.common.exception.BizException;
 import cn.hnthyy.thmz.entity.MzException;
 import cn.hnthyy.thmz.entity.his.mz.MzPatientMi;
-import cn.hnthyy.thmz.entity.his.mz.MzZyReq;
-import cn.hnthyy.thmz.entity.his.zy.APatientMi;
 import cn.hnthyy.thmz.entity.thmz.HybirdTest;
 import cn.hnthyy.thmz.entity.thmz.User;
-import cn.hnthyy.thmz.entity.thmz.fetchSpcSlwinfo;
 import cn.hnthyy.thmz.enums.CertificateTypeEnum;
 import cn.hnthyy.thmz.enums.GenderEnum;
 import cn.hnthyy.thmz.enums.YesNoEnum;
-import cn.hnthyy.thmz.service.his.ResponceTypeService;
 import cn.hnthyy.thmz.service.his.mz.MzPatientMiService;
 import cn.hnthyy.thmz.service.his.mz.MzSerialNoService;
 import cn.hnthyy.thmz.service.his.mz.MzVisitTableService;
 import cn.hnthyy.thmz.service.his.mz.ShareholderCardService;
-import cn.hnthyy.thmz.service.his.zy.APatientMiService;
-import cn.hnthyy.thmz.service.his.zy.ZyActpatientService;
 import cn.hnthyy.thmz.service.thmz.HybirdTestService;
 import cn.hnthyy.thmz.service.thmz.TsmzService;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.IdcardUtil;
-import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -719,6 +710,11 @@ public class MzPatientMiController {
             return resultMap;
         }
     }
+    @PostMapping("/queryInsuinfoDetail")
+    public R queryInsuinfoDetail(@RequestBody Map<String,Object> param){
+        param.put("staffId", TokenUtil.getUser().getUserIdCode());
+       return tsmzService.queryInsuinfoDetail(param);
+    }
 
 
     /**

+ 23 - 4
src/main/java/cn/hnthyy/thmz/service/impl/thmz/TsmzServiceImpl.java

@@ -27,10 +27,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -269,6 +266,28 @@ public class TsmzServiceImpl implements TsmzService {
         return null;
     }
 
+    @Override
+    public R queryInsuinfoDetail(Map<String,Object> param) {
+        log.info("查询医保信息接口传参:{}",param);
+        try {
+            String res = HttpRequest.post(tsmzServiceUrl + "/queryInsuinfoDetail")
+                    .body(JsonUtil.object2Json(param))
+                    .timeout(8000)
+                    .execute()
+                    .body();
+            ResultVo  resultVo = (ResultVo)JsonUtil.jsontoObject(res, ResultVo.class);
+            log.info("返回结果:{}",resultVo);
+            if(resultVo.getCode() == 200){
+              return  R.ok().put("data", resultVo.getData());
+            }else {
+              return  R.error("查询医保信息接口报错信息:"+resultVo.getMessage());
+            }
+        }catch (Exception e){
+            log.error("查询医保信息接口报错信息:",e);
+           return R.error("查询医保信息接口报错信息:"+e.getMessage());
+        }
+    }
+
     @Override
     public Map<String, Object> queryInsuinfo(String staffId, String patientId) {
         log.info("调用查询患者是否有职工参保信息接口,操作人={},病人={}", staffId, patientId);

+ 8 - 0
src/main/java/cn/hnthyy/thmz/service/thmz/TsmzService.java

@@ -84,6 +84,14 @@ public interface TsmzService {
      * @return
      */
     Map<String, Object> queryInsuinfo(String staffId, String patientId);
+    /**
+     * 查询职工参保信息
+     * @author lihong
+     * @since 2025/8/18 9:56
+     * @param
+     * @return Map<String,Object>
+     **/
+    R queryInsuinfoDetail(Map<String,Object> param);
     /**
      * @description: 查询患者参保信息
      * @author: lihong

+ 163 - 0
src/main/resources/static/js/mz/toll_administration.js

@@ -493,6 +493,7 @@ function initFeeTable() {
                 formatter: function (value, row, index) {
                     var buttonCodes = localStorage.getItem("buttonCodes");
                     var str = '<button type="button" class="registration-no-color-foot-button" title="费用明细" onclick="chargeDetailModal(\'' + row.patientId + '\',' + row.times + ',' + row.receiptNo + ')"><i class="fa fa-plus"></i></button>';
+                    str += '<button type="button" class="registration-no-color-foot-button" title="查询医保身份信息" onclick="insurSiReadCardTypeModel(\'' + row.patientId + '\',' + row.times + ')"><i class="fa fa-newspaper-o"></i></button>';
                     str += '<button type="button" class="registration-no-color-foot-button" title="诊断查询" onclick="diagnoseQuery(\'' + row.patientId + '\',' + row.times + ')"><i class="fa fa-search-minus"></i></button>';
                     var payMarkGroup = getIndex("pay_mark_group");
                     if (payMarkGroup == 0) {
@@ -3281,6 +3282,168 @@ function mztczfSiReadCardTypeModel(patientId,times) {
     $("#mztczfSiReadCardModal").modal();
 }
 
+
+var insurPatientId = null;
+var insurTimes = null;
+/**
+ * 打开医保身份信息读卡窗口
+ */
+function insurSiReadCardTypeModel(patientId,times){
+    insurPatientId = patientId;
+    insurTimes = times;
+    clearInsurData()
+    initAdvmPro("insuAdvmPro")
+    $("#insurDetailModal").modal();
+}
+
+
+function initInsurDetail(){
+    let url = "http://localhost:8321/readcard/entry?param=";
+    let insuerReadCarrType = $("#insurfSiReadCardType").val()
+    let insurAdvmCity = $("#insurAdvmCity")
+    if(!stringNotBlank(insuerReadCarrType)){
+        errorMesageSimaple('请选择读卡类型')
+        return
+    }
+    if(!stringNotBlank(insurAdvmCity)){
+        errorMesageSimaple('请选择参保地')
+        return
+    }
+    if (insuerReadCarrType == "03") {
+        url += 'sicard_01101';
+    } else if (insuerReadCarrType == "01") {
+        url += 'qrcode_01101';
+    } else if (insuerReadCarrType == "02") {
+        url += 'idcard_01101';
+    }else if (insuerReadCarrType == "04") {
+        url += 'face_01101';
+    }
+    $.ajax({
+        type: "GET",
+        url: url,
+        contentType: "application/json;charset=UTF-8",
+        dataType: "json",
+        headers: {
+            'Accept': 'application/json',
+            'Authorization': 'Bearer ' + localStorage.getItem("token")
+        },
+        success: function (insures) {
+            if (insures.code == 200) {
+                let insurreadCardResult = null;
+                if (insuerReadCarrType == "01") {
+                    let data = JSON.parse(insures.data);
+                    insurreadCardResult = JSON.stringify(data.data);
+                } else {
+                    insurreadCardResult = insures.data ;
+                }
+                queryInsurDetail(insurPatientId,insurTimes,insuerReadCarrType,insurreadCardResult,insurAdvmCity)
+            } else {
+                warningMesageSimaple("读卡失败!")
+            }
+        },
+        error: function (XMLHttpRequest, textStatus, errorThrown) {
+            warningMesageSimaple("读卡异常,可以稍后重试!")
+        }
+    });
+}
+
+function queryInsurDetail(patientId,times,readCardType,readCardResult,admdvs){
+    postAjaxJsonHttpRequst("/thmz/queryInsuinfoDetail",{patientId:patientId,times:times,readCardType:readCardType,readCardResult:readCardResult,admdvs:admdvs},true,function (res){
+        console.log('initInsurDetail',res.data)
+        if(res.code == 0){
+            $("#insurPsnName").val(res.data.psnName)
+            $("#insurPsnNo").val(res.data.psnNo)
+            $("#insurCertno").val(res.data.certno)
+            $("#insurGendName").val(res.data.gendName)
+            $("#insurBrdy").val(res.data.brdy)
+            $('#insur_detail_table').bootstrapTable('destroy');
+            // 初始化表格
+            $('#insur_detail_table').bootstrapTable({
+                data:  res.data.insuinfo,
+                toolbar: '#toolbar',                //工具按钮用哪个容器
+                striped: true,
+                cache: true,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+                pagination: false,                   //是否显示分页(*)
+                sortable: true,                     //是否启用排序
+                sortOrder: "asc",
+                pageNumber: 1,                       //初始化加载第一页,默认第一页
+                pageSize: 5,                       //每页的记录行数(*)
+                pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数(*)
+                search: false,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
+                strictSearch: true,
+                showColumns: false,                  //是否显示所有的列
+                showRefresh: false,                  //是否显示刷新按钮
+                minimumCountColumns: 2,             //最少允许的列数
+                clickToSelect: true,                //是否启用点击选中行
+                uniqueId: "ID",                     //每一行的唯一标识,一般为主键列
+                showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
+                cardView: false,                    //是否显示详细视图
+                detailView: false,
+                columns: [
+                    {
+                        field: 'insutypeName',
+                        title: '险种类型',
+                        align: "center",
+                        valign: 'middle',
+                    }, {
+                        field: 'psnTypeName',
+                        title: '人员类别',
+                        align: "center",
+                        valign: 'middle',
+                    }
+                    , {
+                        field: 'psnInsuStasName',
+                        title: '参保状态',
+                        align: "center",
+                        valign: 'middle',
+                    },
+                    {
+                        field: 'insuplcAdmdvsName',
+                        title: '参保地',
+                        align: "center",
+                        valign: 'middle',
+                    },
+                    {
+                        field: 'psnInsuDate',
+                        title: '参保日期',
+                        align: "center",
+                        valign: 'middle',
+                    },
+                    {
+                        field: 'pausInsuDate',
+                        title: '暂停参保日期',
+                        align: "center",
+                        valign: 'middle',
+                    },{
+                        field: 'empName',
+                        title: '单位',
+                        align: "center",
+                        valign: 'middle',
+                    }
+                ],
+            });
+        }else {
+            errorMesage(res)
+        }
+    })
+}
+
+
+function clearInsurData(){
+    $("#insurPsnName").val(null)
+    $("#insurPsnNo").val(null)
+    $("#insurCertno").val(null)
+    $("#insurGendName").val(null)
+    $("#insurBrdy").val(null)
+    $('#insur_detail_table').bootstrapTable('destroy');
+}
+
+function closedInsurDetailModal(){
+    clearInsurData()
+    $("#insurDetailModal").modal('hide');
+
+}
+
 /**
  * 处方加锁
  */

+ 98 - 0
src/main/resources/templates/mz/toll_administration.html

@@ -857,6 +857,104 @@
 <!--读卡查询弹窗结尾-->
 
 
+<!--医保身份详情窗口-->
+<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="insurDetailModal">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content" style="width: 850px;margin-left: 100px;">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
+                </button>
+                <h4 class="modal-title modal-title-thmz">医保身份信息</h4>
+            </div>
+            <div class="modal-body">
+                <form class="form-horizontal form-label-left mz-fixed-form" autocomplete="off" onsubmit="return false;">
+                    <div class="item form-group">
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurPsnName">读卡类型</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <select class="form-control selectpicker show-tick" required="true"
+                                        id="insurfSiReadCardType" title="请选择读卡类型">
+                                    <option value="03">社保卡</option>
+                                    <option value="01">电子凭证</option>
+                                    <option value="02">身份证</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insuAdvmPro">参保地</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <select class="form-control selectpicker show-tick"  data-live-search="true"
+                                        id="insuAdvmPro" onchange="cityChange('insuAdvmPro','insurAdvmCity')" title="参保地省"></select>
+                            </div>
+                        </div>
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <select class="form-control selectpicker show-tick"  data-live-search="true"
+                                        id="insurAdvmCity" onchange="" title="参保地市"></select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="item form-group">
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurPsnName">姓名</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <div class="input-group demo2 input-group-own">
+                                    <input id="insurPsnName" class="form-control col-md-7 col-xs-12"
+                                          readonly type="text"/>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurGendName">性别</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <div class="input-group demo2 input-group-own">
+                                    <input id="insurGendName" class="form-control col-md-7 col-xs-12"
+                                           readonly type="text"/>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-md-4 col-sm-4 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurBrdy">出生日期</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <div class="input-group demo2 input-group-own">
+                                    <input id="insurBrdy" class="form-control col-md-7 col-xs-12"
+                                           readonly type="text"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="item form-group">
+                        <div class="col-md-6 col-sm-6 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurCertno">证件号码</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <div class="input-group demo2 input-group-own">
+                                    <input id="insurCertno" class="form-control col-md-7 col-xs-12"
+                                           readonly type="text"/>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-md-6 col-sm-6 col-xs-12 item">
+                            <label class="control-label col-md-4 col-sm-4 col-xs-12" for="insurPsnNo">医保编码</label>
+                            <div class="col-md-8 col-sm-8 col-xs-12">
+                                <div class="input-group demo2 input-group-own">
+                                    <input id="insurPsnNo" class="form-control col-md-7 col-xs-12"
+                                           readonly type="text"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </form>
+            </div>
+            <div>
+                <table id="insur_detail_table"></table>
+            </div>
+            <div class="modal-footer">
+                <button type="button"  class="btn btn-primary"   onclick="initInsurDetail()">读卡查询医保身份</button>
+                <button type="button" class="btn btn-default" onclick="closedInsurDetailModal()">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>
 
 <!--医保结算弹窗开始-->
 <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="loadingModal" data-backdrop="static" data-keyboard="false" style="margin-top: 50px;">