# 数据库日志字段分析 ## 📋 SiLog表的所有字段 | 序号 | 字段名 | 字段类型 | 字段说明 | 医保接口 | 工伤接口 | |------|--------|----------|----------|----------|----------| | 1 | `msgid` | String | 报文ID | ✅ 使用 | ✅ 使用 | | 2 | `infno` | String | 功能号 | ✅ 使用 | ✅ 使用 | | 3 | `insuplcAdmdvs` | String | 参保地医保区划 | ✅ 使用 | ✅ 使用 | | 4 | `opter` | String | 经办人 | ✅ 使用 | ✅ 使用 | | 5 | `body` | String | 交易输入 | ✅ 使用 | ✅ 使用 | | 6 | `result` | String | 交易输出 | ✅ 使用 | ✅ 使用 | | 7 | `patNo` | String | 住院号/门诊号 | ✅ 使用 | ✅ 使用 | | 8 | `times` | Integer | 住院/门诊次数 | ✅ 使用 | ✅ 使用 | | 9 | `ledgerSn` | Integer | 账页号 | ✅ 使用 | ✅ 使用 | | 10 | `logType` | Integer | 日志类别(1-住院,2-门诊) | ✅ 使用 | ✅ 使用 | | 11 | `infcode` | Integer | 返回代码 | ✅ 使用 | ✅ 使用 | | 12 | `psnNo` | String | 人员编号 | ✅ 使用 | ✅ 使用 | ## 🏥 医保接口字段使用详情 ### 医保预结算接口 (hospitalizationPreSettlement) ```java logDao.insert(new SiLog(input, result, p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn(), infcode, zyPreSetlmt.getPsnNo())); ``` **字段来源**: - `msgid`: 从 `input.getString("msgid")` 获取 - `infno`: 从 `input.getString("infno")` 获取 - `insuplcAdmdvs`: 从 `input.getString("insuplc_admdvs")` 获取 - `opter`: 从 `input.getString("opter")` 获取 - `body`: 从 `input.toJSONString()` 获取 - `result`: 从 `result.toJSONString()` 获取 - `patNo`: 从 `p.getInpatientNo()` 获取 - `times`: 从 `p.getAdmissTimes()` 获取 - `ledgerSn`: 从 `p.getLedgerSn()` 获取 - `logType`: 固定值 `1` (住院) - `infcode`: 从 `result.getInteger(RESULT_CODE)` 获取 - `psnNo`: 从 `zyPreSetlmt.getPsnNo()` 获取 ## 🏭 工伤接口字段使用详情 ### 工伤预结算接口 (workInjuryPreSettlement) ```java logDao.insert(new SiLog(logInput, result, p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn(), infcode, zyPreSetlmt.getPsnNo())); ``` **字段来源**: - `msgid`: 从 `logInput.getString("msgid")` 获取 (手动构建) - `infno`: 从 `logInput.getString("infno")` 获取 (手动构建) - `insuplcAdmdvs`: 从 `logInput.getString("insuplc_admdvs")` 获取 (固定值 `""`) - `opter`: 从 `logInput.getString("opter")` 获取 (手动构建) - `body`: 从 `logInput.toJSONString()` 获取 (手动构建的JSON) - `result`: 从 `result.toJSONString()` 获取 - `patNo`: 从 `p.getInpatientNo()` 获取 - `times`: 从 `p.getAdmissTimes()` 获取 - `ledgerSn`: 从 `p.getLedgerSn()` 获取 - `logType`: 固定值 `1` (住院) - `infcode`: 从 `extractWorkInjuryResultCode(result)` 获取 - `psnNo`: 从 `zyPreSetlmt.getPsnNo()` 获取 ## 📊 字段使用对比总结 | 字段 | 医保接口来源 | 工伤接口来源 | 差异说明 | |------|-------------|-------------|----------| | `msgid` | `input.getString("msgid")` | `logInput.getString("msgid")` | 医保从标准请求头获取,工伤手动构建 | | `infno` | `input.getString("infno")` | `logInput.getString("infno")` | 医保从标准请求头获取,工伤手动构建 | | `insuplcAdmdvs` | `input.getString("insuplc_admdvs")` | 固定值 `""` | 医保有区划,工伤不需要 | | `opter` | `input.getString("opter")` | `logInput.getString("opter")` | 医保从标准请求头获取,工伤手动构建 | | `body` | `input.toJSONString()` | `logInput.toJSONString()` | 医保是完整请求,工伤是构建的日志请求 | | `result` | `result.toJSONString()` | `result.toJSONString()` | 相同 | | `patNo` | `p.getInpatientNo()` | `p.getInpatientNo()` | 相同 | | `times` | `p.getAdmissTimes()` | `p.getAdmissTimes()` | 相同 | | `ledgerSn` | `p.getLedgerSn()` | `p.getLedgerSn()` | 相同 | | `logType` | 固定值 `1` | 固定值 `1` | 相同 | | `infcode` | `result.getInteger(RESULT_CODE)` | `extractWorkInjuryResultCode(result)` | 医保直接获取,工伤需要提取 | | `psnNo` | `zyPreSetlmt.getPsnNo()` | `zyPreSetlmt.getPsnNo()` | 相同 | ## 🔍 关键差异 1. **请求头字段**: 医保接口使用标准的医保请求头格式,工伤接口需要手动构建 2. **医保区划**: 医保接口有区划信息,工伤接口不需要 3. **返回代码提取**: 医保接口直接获取,工伤接口需要特殊提取方法 4. **日志记录策略**: 两者都只对预结算接口进行数据库日志记录 ## 📝 结论 所有12个字段都被医保和工伤接口使用,但数据来源和构建方式有所不同。医保接口使用标准的医保请求格式,而工伤接口需要手动构建日志请求对象来适配数据库表结构。