# @asymmetrik/fhir-response-util 中文文档

规范地址：https://npmcn.com/package/%40asymmetrik/fhir-response-util/

版本：1\.2\.4
npm 元数据更新时间：2026-03-13T16:28:39.865Z
中文译文更新时间：2026-11-07T01:30:33.935Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40asymmetrik/fhir-response-util
原文对照：https://npmcn.com/package/%40asymmetrik/fhir-response-util/?lang=original
项目主页：https://github.com/Asymmetrik/phx-tools
源码仓库：https://github.com/Asymmetrik/phx-tools

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：24 kB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2019-02-13T14:39:44.231Z
- 最新版本发布：2020-09-29T14:59:51.813Z
- 近 30 天下载量：2493（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

用于处理响应头、内容和状态类型的工具.

## 安装

```sh
npm install @asymmetrik/fhir-response-util
```

也可以使用：`pnpm add @asymmetrik/fhir-response-util`、`yarn add @asymmetrik/fhir-response-util`、`bun add @asymmetrik/fhir-response-util`

## README

# FHIR 反应工具

> 处理回复信头、内容和状态类型的工具

## 安装

```shell
yarn add @asymmetrik/fhir-response-util
```

## 使用量

反应效用暴露出下列方法,可用于不同的情景和不同类型的反应。 它们都对所收到的论点作出某些假设,这些论点载于下文 [参数](https://npmcn.com/package/%40asymmetrik/fhir-response-util/#readme-arguments) 节.

这是设计用于 [节点-fhir-服务器核心](https://github.com/Asymmetrik/node-fhir-server-core) 和类似的FHIR服务器. 每种方法的描述都有一些伪码,可以给出这个方法可能如何操作的概念. 如果您在节点-fhir-server-core读取了资源控制器的源代码,您可以看到我们内部是如何使用这个的.

### 读取

> 返回资源库时使用

这将在发送json返回客户端的同时设置正确的Content-Type和状态代码.

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function getPatientsController(req, res, next) {
  // The user may have some service to fetch results
  service
    .getPatients(req)
    .then((bundle) => {
      // Assuming bundle contains a bunch of patients
      handler.read(req, res, bundle);
    })
    .catch((err) => {
      next(err);
    });
}
```

### 读取一个

> 用于返回任何类型的单一资源.

这将在发送json返回客户端的同时设置正确的Content-Type和状态代码.

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function getPatientController(req, res, next) {
  // The user may have some service to fetch results
  service
    .getPatient(req)
    .then((patient) => {
      handler.readOne(req, res, patient);
    })
    .catch((err) => {
      next(err);
    });
}
```

### 创建

> 用于创建任何类型的单一资源 .

这将设置正确的内容-定位、位置和ETag标题 。 以及设定正确的状态代码.

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function createPatientController(req, res, next) {
  // The user may have some service to fetch results
  service
    .create(req)
    .then((patient) => {
      let json = { id: patient.id, resource_version: patient.meta.versionId };
      let options = { type: 'Patient' };

      handler.create(req, res, json, options);
    })
    .catch((err) => {
      next(err);
    });
}
```

### 更新

> 用于更新任何类型的单一资源

这将设置正确的内容定位、 最后修改、 位置和 ETag 标题 。 以及设置正确的内容-类型和状态代码.

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function updatePatientController(req, res, next) {
  // The user may have some service to fetch results
  service
    .update(req)
    .then((patient) => {
      let json = { id: patient.id, resource_version: patient.meta.versionId, created: false };
      let options = { type: 'Patient' };

      handler.update(req, res, json, options);
    })
    .catch((err) => {
      next(err);
    });
}
```

### 删除

> 删除任何类型的单一资源时使用

这将设置正确的ETag头和状态代码 .

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function removePatientController(req, res, next) {
  // The user may have some service to fetch results
  service
    .remove(req)
    .then((id) => {
      let json = { deleted: id };

      handler.remove(req, res, json);
    })
    .catch((err) => {
      next(err);
    });
}
```

### 历史

> 查询任何类型资源的历史时使用

这将在发送json返回客户端的同时设置正确的Content-Type和状态代码.

```javascript
const handler = require('@asymmetrik/fhir-response-util');

// Some controller
function getPatientHistoryController(req, res, next) {
  // The user may have some service to fetch results
  service
    .history(req)
    .then((bundle) => {
      handler.history(req, res, bundle);
    })
    .catch((err) => {
      next(err);
    });
}
```

## 参数

[`req`](https://expressjs.com/en/api.html#req) 财务报告和审定财务报表 [`res`](https://expressjs.com/en/api.html#res) 在每种方法中,你所看见的都是快活的. `res` 只是一个普通的响应,但请求必须有一个 base version 参数(`req.params.base_version`) 具体而言,它应该是我们服务器中支持的有效版本之一,即"1 0 2","3 0 1"和"4 0 0". 如果您希望我们为此添加更多的版本,只要让我们知道,我们用这个来确定正确的内容类型以及响应类型和响应头的资源的url.

### 读取

> a. 操作员. read(req, res, json);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

Bundle FHIR 资源.

类型 : `Object`  
要求 : `true`

### 读取一个

> 操作员. read One(req, res, json);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

个人FHIR资源.

类型 : `Object`  
要求 : `true`

### 创建

> 处理器.create(req, res, json, 选项);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

属性从果. 一定有个 `id`

类型 : `Object`  
要求 : `true`

#### `json.id`

创建的 FHIR 资源的ID .

类型 : `String`  
要求 : `true`

#### `json.resource_version`

如果我们使用历史,我们创造了哪个版本的资源.

类型 : `String`  
要求 : `false`

#### `options`

在响应中设置正确的标题需要额外的选项.

类型 : `Object`  
要求 : `true`

#### `options.type`

这有助于我们设定内容位置和位置标题。 譬如说, `handler.create(req, res, json, { type: 'Patient' })` 允许我们设置这样的标题, `res.set('Location', '4_0_0/Patient/patient-identifier')`。 。 。 .

类型 : “ string ”  
要求 : “ true ”

### 更新

> 处理器.update(req, res, json, 选项);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

属性从果. 一定有个 `id`

类型 : `Object`  
要求 : `true`

#### `json.id`

创建的 FHIR 资源的ID .

类型 : `String`  
要求 : `true`

#### `json.resource_version`

如果我们使用历史,我们创造了哪个版本的资源.

类型 : `String`  
要求 : `false`

#### `json.created`

我们是否创造了资源。 如果我们创造了资源,我们需要知道,这样我们就可以设定 `res.status` 201,否则,我们将违约为200.

类型 : `Boolean`  
要求 : `false`

#### `options`

在响应中设置正确的标题需要额外的选项.

类型 : `Object`  
要求 : `true`

#### `options.type`

这有助于我们设定内容位置和位置标题。 譬如说, `handler.create(req, res, json, { type: 'Patient' })` 允许我们设置这样的标题, `res.set('Location', '4_0_0/Patient/patient-identifier')`。 。 。 .

类型 : “ string ”  
要求 : “ true ”

### 删除

> a. 操作员.remove(req, res, json);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

JSON回应. 不要求但包含可选被删除的属性 .

类型 : `Object`  
要求 : `false`

#### `json.deleted`

被删除的属性应为被删除元素的ID. 譬如说, `handler.remove(req, res, { deleted: 'qwerty-123' })`。这允许我们在响应标题中添加标识符作为ETag.

类型 : `Object`  
要求 : `false`

### 历史

> 历史管理者(req, res, json);

#### `req`

特快请求.

类型 : `Express.req`  
要求 : `true`

#### `res`

快速响应.

类型 : `Express.req`  
要求 : `true`

#### `json`

Bundle FHIR 资源.

类型 : `Object`  
要求 : `true`

## 常见问题

### @asymmetrik/fhir-response-util 是什么？

用于处理响应头、内容和状态类型的工具\.

### 如何安装 @asymmetrik/fhir-response-util？

在项目目录运行 npm install @asymmetrik/fhir-response-util，或使用 pnpm add / yarn add / bun add。

### @asymmetrik/fhir-response-util 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/asymmetrik\_\_fhir-response-util 是否存在。

### @asymmetrik/fhir-response-util 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @asymmetrik/fhir-response-util 可以商用吗？

@asymmetrik/fhir-response-util 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @asymmetrik/fhir-response-util 的下载量有多少？

根据 npm 官方下载统计，@asymmetrik/fhir-response-util 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,493 次，日均约 83 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @asymmetrik/fhir-response-util 还在维护吗？

最新版本 1\.2\.4 发布于 2020/09/29（6 年前）；至今共发布 5 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/02/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

