数据库日志字段分析.md 4.6 KB

数据库日志字段分析

📋 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)

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)

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个字段都被医保和工伤接口使用,但数据来源和构建方式有所不同。医保接口使用标准的医保请求格式,而工伤接口需要手动构建日志请求对象来适配数据库表结构。