# @aehrc/sdc-populate 中文文档

规范地址：https://npmcn.com/package/%40aehrc/sdc-populate/

版本：4\.7\.2
npm 元数据更新时间：2026-09-10T06:31:22.030Z
中文译文更新时间：2026-11-05T19:07:50.629Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40aehrc/sdc-populate
原文对照：https://npmcn.com/package/%40aehrc/sdc-populate/?lang=original
项目主页：https://github.com/aehrc/smart-forms#readme
源码仓库：https://github.com/aehrc/smart-forms

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

- 包体积（解压后）：832 kB，56 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2023-09-01T04:35:59.519Z
- 最新版本发布：2026-09-10T06:31:21.569Z
- 近 30 天下载量：43469（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：53（近 12 个月 4 个）

## 中文简介

执行从 HL7 FHIR SDC( 硬接取数据) 规格的 $populate 操作 : [http://hl7.org/fhir/uv/sdc 页面存档备份,存于互联网档案馆](http://hl7.org/fhir/uv/sdc)

## 安装

```sh
npm install @aehrc/sdc-populate
```

也可以使用：`pnpm add @aehrc/sdc-populate`、`yarn add @aehrc/sdc-populate`、`bun add @aehrc/sdc-populate`

## README

# SDC 组合

字型参考文件执行 [人口数](http://hl7.org/fhir/uv/sdc/OperationDefinition-Questionnaire-populate.html) 从操作 [HL7 FHIR 结构数据采集规格](http://hl7.org/fhir/uv/sdc/ImplementationGuide/hl7.fhir.uv.sdc) 设计用途 [人口数量](http://hl7.org/fhir/uv/sdc/populate.html)。 。 。 .

看看这个 [API 参考](https://smartforms.csiro.au/docs/api/sdc-populate) 技术规格.

## 使用量

使用这个软件包有两种方法:

1.  在网络应用程序中使用
2.  在后端服务中使用, 例如 ExpressJS

### 在网络应用程序中使用

建议使用 `populateQuestionnaire()`,它执行一个应用人群。 这意味着该应用程序不是向外部服务器发送数据,而是利用库在应用程序本身中填充问卷.

```ts
const { populateSuccess, populateResult } = await populateQuestionnaire({
  questionnaire: yourQuestionnaireResource,
  fetchResourceCallback: yourFetchResourceCallbackFunction,
  fetchResourceRequestConfig: yourFetchResourceRequestConfig,
  patient: yourPatient,
});

// Pre-population is successful
if (populateSuccess && populateResult !== null) {
  const questionnaireResponse = populateResult.populatedResponse;
  
  // Do things with the pre-populated questionnaireResponse...
}
```

您还需要定义自己的 `fetchResourceCallback` 函数和 `fetchResourceRequestConfig`。此功能负责从您的 FHIR 服务器获取资源。 它应该返回一个承诺,以决定要获取的资源.

```ts
import { FetchResourceRequestConfig, FetchResourceCallback } from '@aehrc/sdc-populate';

const ABSOLUTE_URL_REGEX = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;

export const yourFetchResourceRequestConfig: FetchResourceRequestConfig = {
  sourceServerUrl: 'https://proxy.smartforms.io/fhir',
  authToken: string | null
};

export const yourFetchResourceCallbackFunction: FetchResourceCallback = async (
  query: string,
  requestConfig: FetchResourceRequestConfig
) => {
  let { sourceServerUrl } = requestConfig;
  const { authToken } = requestConfig;

  const headers: Record<string, string> = {
    Accept: 'application/json;charset=utf-8'
  };

  if (authToken) {
    headers['Authorization'] = `Bearer ${authToken}`;
  }

  if (!sourceServerUrl.endsWith('/')) {
    sourceServerUrl += '/';
  }

  const requestUrl = ABSOLUTE_URL_REGEX.test(query) ? query : `${sourceServerUrl}${query}`;
  const response = await fetch(requestUrl, { headers });

  if (!response.ok) {
    throw new Error(`HTTP error when performing ${requestUrl}. Status: ${response.status}`);
  }

  return response.json();
};
```

可用参数 `populateQuestionnaire()`数字 :

| 参数 | 说明 |
| --- | --- |
| `questionnaire` | 要填充的调查问卷 |
| `fetchResourceCallback` | 从您的 FHIR 服务器获取资源的回调功能 |
| `fetchResourceRequestConfig` | 任何要传递到取回资源调用的请求配置( 如信头、 认证等) |
| `patient` | 上下文中的病人资源 |
| `user` | 作为上下文用户的从业人员资源(可选) |
| `encounter` | 在上下文中遇到资源( 可选) |
| `fetchTerminologyCallback` | 回调函数以获取名词资源( 可选) |
| `fetchTerminologyRequestConfig` | 任何要传递到获取的术语调用( 如标题、 认证等) (可选) |

### 在后端服务中使用它

在后端服务中使用这个库需要更多的预配置. 由于如何 [人口数](https://hl7.org/fhir/uv/sdc/OperationDefinition-Questionnaire-populate.html) 输入参数 `populate()` 函数.

对如何使用这些工具进行了抽样审查 `populate()` 函数在 [https://github.com/aehrc/smart-forms/blob/main/ services/populate-express/src/index.ts 互联网档案馆的存檔,存档日期2013-12-21](https://github.com/aehrc/smart-forms/blob/main/services/populate-express/src/index.ts)。 。 。 .

### 地方发展说明

建议在网络应用或服务范围内运行此图书馆,如果您正在本地开发. 这个库同时编译到CommonJS和ES模块,因此在网络框架和以节点为基础的后端之间使用它没有问题.

要编译代码, 使用 `npm run compile`。 。 。 . 要查看更改, 使用 `npm run watch`。 。 。 .

注意: 不使用 `tsc` 或者说 `tsc -w` 因为它只会被编译到ES模块中,这意味着它不会与基于CommonJS的应用合作.

## 常见问题

### @aehrc/sdc-populate 是什么？

执行从 HL7 FHIR SDC\( 硬接取数据\) 规格的 $populate 操作 : http://hl7\.org/fhir/uv/sdc 页面存档备份,存于互联网档案馆

### 如何安装 @aehrc/sdc-populate？

在项目目录运行 npm install @aehrc/sdc-populate，或使用 pnpm add / yarn add / bun add。

### @aehrc/sdc-populate 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aehrc/sdc-populate 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @aehrc/sdc-populate 可以商用吗？

@aehrc/sdc-populate 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aehrc/sdc-populate 的下载量有多少？

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

### @aehrc/sdc-populate 还在维护吗？

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

