iSeries AS400系统特定值变更溯源及医疗场景下检验申请修改记录缺失问题咨询
iSeries AS400系统特定值变更溯源及医疗场景下检验申请修改记录缺失问题咨询
看起来你在医疗环境的AS400系统里遇到了检验申请修改记录追踪的难题——用户XYZ修改了CBC检验申请的状态但没留下痕迹,只显示创建者ABC。我来给你梳理几个可行的排查和解决方向:
1. 优先检查应用程序自带的审计日志
大部分医疗行业的AS400定制应用都会内置操作审计功能,而非依赖系统级审计。你可以先找一下系统里是否存在专门记录修改操作的物理文件(比如命名类似REQ_CHANGE_LOG、LAB_REQ_AUDIT这类):
- 用
DSPPFM命令直接查看这类文件的内容,筛选目标CBC申请的编号,看是否有XYZ的修改记录,里面通常会包含操作用户、修改时间、变更前后的字段值。 - 也可以用SQL语句查询,比如:
SELECT OP_USER, OP_DATE, OLD_VALUE, NEW_VALUE FROM YOUR_LIB.REQ_CHANGE_LOG WHERE REQ_ID = '目标申请号'
2. 启用或查询系统级审计日志
如果应用本身没有审计功能,那就得依赖AS400的系统审计了:
- 先检查系统值
QAUDCTL的设置,用WRKSYSVAL QAUDCTL命令查看,确保它包含*CHANGE和*OBJMGT这类选项(如果之前没开启,那历史修改记录是查不到的,只能从启用后开始记录)。 - 系统审计日志默认存在
QAUDJRNjournal中,用DSPJRN命令提取目标检验申请文件的变更记录,比如:
这个命令会列出所有针对该文件的更新操作,你可以从中找到对应申请号的记录,查看操作字段里的用户ID(USER)就是修改者XYZ。DSPJRN JRN(QSYS/QAUDJRN) FILE(YOUR_LIB/LAB_REQ_FILE) ENTTYP(*UPD) - 也可以用
RTVAUDEVT命令把审计事件导出到文件,再用SQL筛选更高效。
3. 确认检验申请文件的Journaling状态
AS400里的物理文件如果开启了journaling,所有的增删改操作都会被记录到对应的journal中,哪怕应用没做审计:
- 用
DSPFD FILE(YOUR_LIB/LAB_REQ_FILE)命令查看文件属性,找到「Journal Information」部分,看是否有绑定的journal。 - 如果有journal,直接用
DSPJRN命令查询该journal中针对目标申请的更新记录,比如:
日志里会明确显示操作用户、时间,以及修改前后的字段值(包括那个被改成"0"的状态字段)。DSPJRN JRN(YOUR_LIB/YOUR_JOURNAL) FILE(YOUR_LIB/LAB_REQ_FILE) KEYVAL('目标申请号') ENTTYP(*UPD)
4. 检查文件结构是否包含修改追踪字段
有些系统的物理文件可能只设计了创建用户字段(比如CREATE_USER),没有记录最后修改用户和时间的字段(比如LAST_CHG_USER、LAST_CHG_DATE):
- 用
DSPFFD FILE(YOUR_LIB/LAB_REQ_FILE)查看文件的字段列表,确认是否有这类追踪字段。 - 如果没有的话,要么联系应用开发商修改程序,在每次保存申请时更新这些字段;要么就只能依赖前面提到的系统journal或审计日志来补全追踪能力。
备注:内容来源于stack exchange,提问作者Job247Online
相关产品推荐
相关产品推荐

