HL7中国FHIR Connectathon测试实施指南
2024.5.5 - release

本指南适用于HL7中国的FHIR Connectathon测试。

审计服务规范

概述

审计服务(AT-on-FHIR)交互规范定义了一个基于FHIR规范的有关审计事件的交互接口。

在交互规范中定义的交易参考了IHE的ATNA规范。

本交互规范寻求一种IHE ATNA的替代方案,简化交互接口,适用于当前流行的网络交互。

本规范基于FHIR R5版本进行设计。

角色与交易

角色

在本文档中包括如下角色:

  • 审计服务提供者: 指向提供审计事件注册服务的应用程序。这指代提供提交审计事件服务接口的应用系统。
  • 审计事件消费者: 指向作为审计事件消费者的应用程序。
  • 审计源: 指向作为审计事件提交者的应用程序。

角色与交易

下图描述了角色以及角色之间的交易服务:

这里有张用例图

交易如下表所示:

角色 标识 交易描述 可选性
审计源 IST-AT-001 提交审计事件 R
审计事件消费者 IST-AT-002 查询审计事件 R
审计服务提供者 IST-AT-001 提交审计事件 R
  IST-AT-002 查询审计事件 R

审计事件仅能新增,不提供对审计事件的修改和删除功能。

交易

在本交互规范的当前版本定义了如下2个交易:

提交审计事件(IST-AT-001)

本交易由审计事件提交者角色和审计服务提供者角色使用。提交审计事件(IST-AT-001)交易用于向审计服务提供者角色提交审计事件消息。

调用地址:

POST http://[ip]:[port]/[audit]/AuditEvent
请求消息

此消息使用POST方法将审计事件信息作为AuditEvent资源进行传输。

请求消息体的Content-Type应为application/fhir+jsonapplication/fhir+xml

消息体定义参见核心审计事件结构定义

消息体示例提供了两个典型活动的参考示例:

  • 系统登录事件
  • 系统启动事件

具体格式和内容参见审计事件消息示例页面

响应消息

响应消息反馈了提交审计事件请求的处理结果,应遵循如下约束条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 无响应消息体。 处理失败:
  • 使用状态码400500标识整个请求处理失败;
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的异常处理章节。

查询审计事件(IST-AT-002)

本交易由审计事件消费者角色和审计服务提供者角色使用。查询审计事件(IST-AT-002)交易用于向审计服务提供者角色进行有关审计事件的查询。

调用地址:

GET http://[ip]:[port]/[audit]/AuditEvent
请求消息

查询参数表示为一系列的name-value对,这些name-value对表示查询的筛选器,在本规范中需支持:

参数 参数类型 描述 对应元素
action token 审计事件活动类型 action
category token 审计事件类型(粗粒度) category
code token 审计事件类型(细粒度) code
date date 审计事件记录时间 recorded
outcome token 审计事件结果 outcome.code
source reference 审计源的标识 source.observer
agent reference 参与者 agent.who
响应消息

响应消息应返回符合查询条件的资源结果集,应遵循如下约束条件:

  • 使用状态码200 OK标识整个请求处理成功。
  • 返回Bundle资源,其中包含零到多个AuditEvent资源。 处理失败:
  • 如果执行失败,则应返回OperationOutcome资源。具体内容参见后面的“异常处理”章节。

审计事件类型代码表

如下给出一些常见的审计事件类型代码:

事件类型 事件名称
110100 系统活动相关
110114 用户权限相关
rest RESTful操作

更多的类型参见Audit Event ID

事件子类型 事件名称
110120 系统启动
110121 系统停止
110122 用户登录
110123 用户登出
110136 用户角色变更
110137 用户权限变更

更多的类型参见AuditEvent SubType Codes

异常处理

在进行服务交易时如果出现异常,服务端会采用统一的方式进行异常信息的反馈,也就是返回OperationOutcome资源,由该资源记录异常处理信息。

下表给出了审计事件服务中预定义的异常编码取值:

Code Description
AuditMissingSource 消息体中缺少审计源
AuditMessageError 消息格式错误
AuditError 其它的、不明确的处理错误

异常消息示例:

<OperationOutcome xmlns="http://hl7.org/fhir">
  <id value="AuditOperationOutcomeExample01"/>
  <issue>
    <severity value="error"/>
    <code value="process"/>
    <details>
      <coding>
        <system value="http://hl7.org.cn/fhir/CodeSystem/operationoutcome-code-audit"/>
        <code value="AuditMessageError"/>
        <display value="消息格式错误"/>
      </coding>
    </details>
    <diagnostics value="审计消息格式错误"/>
  </issue>
</OperationOutcome>