# 医保接口数据库操作详细分析 ## 1. admissRegister 方法数据库操作 ### 1.1 `t_si_log` 表 - 医保接口调用日志表 #### **操作类型**:INSERT | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `msgid` | String | `input.getString("msgid")` | 医保接口请求消息ID | | `infno` | String | `input.getString("infno")` | 医保接口功能号 | | `insuplc_admdvs` | String | `input.getString("insuplc_admdvs")` | 医保统筹区划 | | `opter` | String | `input.getString("opter")` | 经办人 | | `body` | String | `input.toJSONString()` | 完整的请求体JSON | | `result` | String | `result.toJSONString()` | 完整的响应体JSON | | `pat_no` | String | `p.getInpatientNo()` | 住院号 | | `times` | Integer | `p.getAdmissTimes()` | 住院次数 | | `ledger_sn` | Integer | `p.getLedgerSn()` | 账页号 | | `log_type` | Integer | 固定值 `1` | 住院类型 | | `create_datetime` | DateTime | `getdate()` | 记录生成时间 | | `infcode` | Integer | `result.getIntValue("infcode")` | 返回结果(0成功,-1失败) | | `psn_no` | String | `admMdtrtinfo.getPsnNo()` | 人员编号 | ### 1.2 `t_si_pat_info` 表 - 患者医保信息表 #### **操作类型**:UPDATE(afterAdmissRegister方法) | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `insuplc_admdvs` | String | `ybData.getInsuplcAdmdvs()` | 医保统筹区划 | | `psn_type` | String | `ybData.getPsnType()` | 人员类别 | | `emp_name` | String | `ybData.getEmpName()` | 单位名称 | | `balance` | BigDecimal | `ybData.getBalance()` | 账户余额 | | `mdtrt_id` | String | `output.getJSONObject("result").getString("mdtrt_id")` | 就诊ID(外部接口返回) | | `adm_reg_msgid` | String | `input.getString("msgid")` | 入院登记消息ID | ### 1.3 `t_si_pat_info` 表 - 患者医保信息表 #### **操作类型**:UPDATE(updateResponceType方法) | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `responce_type` | String | `dao.selectResponceType(admMdtrtinfo.getMedType())` | 响应类型(根据医保类型查询) | ## 2. obtainBasicPersonInfo 方法数据库操作 ### 2.1 `mz_patient_mi` 表 - 门诊患者信息表 #### **操作类型**:SELECT | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `social_no` | String | 数据库查询 | 身份证号 | | `name` | String | 数据库查询 | 姓名 | | `times` | Integer | 数据库查询 | 门诊次数 | | `certificate_type` | String | 数据库查询 | 证件类型 | ### 2.2 `zy_ledger_file` 表 - 住院账页文件表 #### **操作类型**:SELECT | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `ledger_sn` | Integer | `dao.selectMaxLedgerSn()` | 最大账页号 | ### 2.3 `a_patient_mi` 表 - 患者基本信息表 #### **操作类型**:SELECT | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `psn_cert_type` | String | `dao.selectPsnCertType()` | 人员证件类型 | ### 2.4 `t_si_pat_info` 表 - 患者医保信息表 #### **操作类型**:UPDATE(updatePsnIdetType方法) | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `psn_idet_type` | String | `psnBaseinfo.getPsnIdetType()` | 人员身份类型(外部接口返回) | #### **操作类型**:INSERT/UPDATE(insertSiZyInfoPsnNo/updateSiZyInfoPsnNo方法) **INSERT 字段及数据来源**: | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `pat_no` | String | `qryPsnBsInfo.getPatNo()` | 住院号 | | `times` | Integer | `qryPsnBsInfo.getTimes()` | 住院次数 | | `ledger_sn` | Integer | `qryPsnBsInfo.getLedgerSn()` | 账页号 | | `psn_no` | String | `psnBaseinfo.getPsnNo()` | 人员编号(外部接口返回) | | `psn_name` | String | `psnBaseinfo.getPsnName()` | 人员姓名(外部接口返回) | | `psn_cert_type` | String | `psnBaseinfo.getPsnCertType()` | 人员证件类型(外部接口返回) | | `certno` | String | `psnBaseinfo.getCertno()` | 证件号码(外部接口返回) | | `psn_idet_type` | String | `psnBaseinfo.getPsnIdetType()` | 人员身份类型(外部接口返回) | | `insuplc_admdvs` | String | `psnBaseinfo.getInsuplcAdmdvs()` | 医保统筹区划(外部接口返回) | | `psn_type` | String | `psnBaseinfo.getPsnType()` | 人员类别(外部接口返回) | | `emp_name` | String | `psnBaseinfo.getEmpName()` | 单位名称(外部接口返回) | | `balance` | BigDecimal | `psnBaseinfo.getBalance()` | 账户余额(外部接口返回) | **UPDATE 字段及数据来源**: | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `psn_no` | String | `psnBaseinfo.getPsnNo()` | 人员编号(外部接口返回) | | `psn_name` | String | `psnBaseinfo.getPsnName()` | 人员姓名(外部接口返回) | | `psn_cert_type` | String | `psnBaseinfo.getPsnCertType()` | 人员证件类型(外部接口返回) | | `certno` | String | `psnBaseinfo.getCertno()` | 证件号码(外部接口返回) | | `psn_idet_type` | String | `psnBaseinfo.getPsnIdetType()` | 人员身份类型(外部接口返回) | | `insuplc_admdvs` | String | `psnBaseinfo.getInsuplcAdmdvs()` | 医保统筹区划(外部接口返回) | | `psn_type` | String | `psnBaseinfo.getPsnType()` | 人员类别(外部接口返回) | | `emp_name` | String | `psnBaseinfo.getEmpName()` | 单位名称(外部接口返回) | | `balance` | BigDecimal | `psnBaseinfo.getBalance()` | 账户余额(外部接口返回) | ### 2.5 `t_si_log` 表 - 医保接口调用日志表 #### **操作类型**:INSERT | 字段名 | 数据类型 | 数据来源 | 备注 | |--------|----------|----------|------| | `msgid` | String | `input.getString("msgid")` | 医保接口请求消息ID | | `infno` | String | `input.getString("infno")` | 医保接口功能号 | | `insuplc_admdvs` | String | `input.getString("insuplc_admdvs")` | 医保统筹区划 | | `opter` | String | `input.getString("opter")` | 经办人 | | `body` | String | `input.toJSONString()` | 完整的请求体JSON | | `result` | String | `result.toJSONString()` | 完整的响应体JSON | | `pat_no` | String | `qryPsnBsInfo.getPatNo()` | 住院号 | | `times` | Integer | `qryPsnBsInfo.getTimes()` | 住院次数 | | `ledger_sn` | Integer | `qryPsnBsInfo.getLedgerSn()` | 账页号 | | `log_type` | Integer | 固定值 `1` | 住院类型 | | `create_datetime` | DateTime | `getdate()` | 记录生成时间 | | `infcode` | Integer | `result.getIntValue("infcode")` | 返回结果(0成功,-1失败) | | `psn_no` | String | `psnBaseinfo.getPsnNo()` | 人员编号(外部接口返回) | ## 3. 外部接口数据来源详细说明 ### 3.1 admissRegister 方法外部接口数据 **接口名称**:医保入院登记接口 **接口功能号**:`SiFunction.ADMISSION_REGISTRATION` **返回数据结构**: ```json { "infcode": 0, "output": { "result": { "mdtrt_id": "就诊ID" } } } ``` ### 3.2 obtainBasicPersonInfo 方法外部接口数据 **接口名称**:医保人员基本信息查询接口 **接口功能号**:`SiFunction.OBTAIN_BASIC_PERSON_INFO` **返回数据结构**: ```json { "infcode": 0, "output": { "baseinfo": { "psn_no": "人员编号", "psn_name": "人员姓名", "psn_cert_type": "人员证件类型", "certno": "证件号码", "psn_idet_type": "人员身份类型", "insuplc_admdvs": "医保统筹区划", "psn_type": "人员类别", "emp_name": "单位名称", "balance": "账户余额" }, "idetinfo": [ { "psn_idet_type": "人员身份类型" } ] } } ``` ## 4. 数据流向总结 ### 4.1 数据输入来源 1. **前端参数**:住院号、住院次数、账页号等基础信息 2. **外部医保接口**:人员信息、医保状态、账户余额等医保相关数据 3. **本地数据库查询**:患者基础信息、医保类型等 ### 4.2 数据输出目标 1. **`t_si_log`**:记录所有医保接口调用日志 2. **`t_si_pat_info`**:存储患者医保信息和状态 3. **其他相关表**:根据业务需要更新相关患者信息 ### 4.3 关键数据转换 1. **外部接口数据 → 本地数据库字段**:将医保接口返回的数据映射到本地数据库字段 2. **状态同步**:确保本地数据库中的医保状态与外部医保系统保持一致 3. **日志记录**:完整记录所有医保接口调用过程,便于问题排查和审计