@aidbox/sdk-r4

中文文档
1.0.15发布于 2024/10/31ISCTypeScriptCommonJS近 30 天下载 3141

带有 HL7- R4 软件包的默认辅助箱 SDK

中文使用文档
文档目录18 节
  1. 如何使用
  2. API 密码
  3. 资源。 列表
  4. 资源.get
  5. 资源。创建
  6. 资源.更新()
  7. qq 资源. delete ()
  8. 创建订阅
  9. 发送日志
  10. Bundle 请求
  11. 任务 API
  12. 定义
  13. 执行情况
  14. 执行
  15. 工作流程引擎
  16. 工作流程定义
  17. 工作流程
  18. 工作流程执行

辅助箱 JavaScript SDK FHIR-R4

如何使用

重要内容: 在我们开始之前,我们必须确保 辅助框 客户端 实值 配置 还有你的 准入政策 提供 你试图接触到的资源的颗粒性访问.

import { Client } from 'aidbox-sdk';

export const aidbox = new Client('<HOST_URL>', {
  auth: {
    method: 'basic',
    credentials: {
      username: '<CLIENT_NAME>',
      password: '<CLIENT_SECRET>',
    },
  },
});

此代码从 Aidbox- sdk 软件包创建 SDK 的新实例, 并将其设置为连接到 Aidbox 服务器 运行中 <HOST_URL>。 。 。 . 你需要替换 <CLIENT_NAME> 财务报告和审定财务报表 <CLIENT_SECRET> 和你的客户身份和客户秘密 配置较早,SDK也支持两种类型的API(Aidbox, 斐济 显示差异只要提供其中之一 作为第三个参数.

通过在项目中使用 Aidbox-sdk ,您可以轻松地与 Aidbox 服务器交互,并进行诸如读取和 写入资源, 查找资源, 以及更多 .

那你可以随时随地使用辅助箱

import { aidbox } from '../aidbox-client';

async function getPatients() {
  return aidbox.resource.list('Patient');
}

API 密码

资源。 列表

列表方法接受资源名称,并成为随后请求复杂化的依据

地点

添加搜索参数的方法

举例来说,你想找到所有叫约翰的病人,所以

resource.list('Patient').where('name', 'John');

或者你想找到所有叫约翰或史蒂夫的病人

resource.list('Patient').where('name', ['John', 'Steve']);

另外,支持数字和日期前缀的方法,只是通过它作为第三个参数

resource.list('Patient').where('birthdate', '2014-06-30', 'gt');

排序

方法排序添加排序参数

例如,您想要展示最年长的病人

resource.list('Patient').sort('birthdate', 'asc');

还有,你想用病人的名字来整理数据

resource.list('Patient').sort('birthdate', 'asc').sort('name', 'asc');

计数

限制请求返回资源数量的方法计数

resource.list('Patient').count(10);

内容提要

要请求服务器提供部分资源,您可以使用摘要函数。 此函数允许您 指定要收到的摘要类型,例如 真实、虚假、文本、数据或计数。 。 。 .

默认情况下, 当你向服务器提出请求时, 它会返回所有的资源 .

摘要功能接受几类摘要,每类摘要提供了不同程度的详细内容 数据。 例如:

  • true - 有限的资源元素子集

  • 假 - 资源的所有部分

  • 文本 - 只有文本、 id、 meta 和顶级强制元素

  • 数据 - 没有文本元素的资源

  • 计数 - 计算匹配资源,而不返回实际匹配

    摘要( “数据”)

要件

如果您需要从服务器取回某一资源的特定元素,则可以使用元素函数. 此函数 允许您指定您感兴趣的资源中哪些部分,并可以帮助减少数据数量 由服务器返回.

通过使用元素函数,您可以自定义只获取您需要的数据的请求,而不是 请求整个数据集。 在处理大型数据集时,或当您只需要一个 可用数据的小子集.

要使用元素函数,只需在您想要获取的元素中传递作为参数。 例如,如果你 需要资源的名称和地址字段,您可以使用下列语法提出请求:

resource.list('Patient').elements(['name', 'address']);

此请求将只返回每个资源的名称和地址字段,而不是整个数据集 。 通过减少 ,您可以帮助精简请求,提高应用程序的性能.

资源.get

获取函数是用其ID检索单一资源的工具.

要使用 GetResource 函数,您必须在资源类型和ID中通过作为参数. 例如,如果你想的话 用 ID- ID 检索病人资源, 您可以使用下列语法提出请求 :

resource.get('Patient', 'id');

资源。创建

创建资源函数用于创建新资源.

第一个参数是一个资源名称,第二个参数是一个资源主体

resource.create('Patient', { active: true });

资源.更新()

更新功能用于更新其id识别的特定资源并配有部分数据集 在第三个参数中提供。 此函数允许部分更新资源而无需发送 整个资源对象.

第一个参数指定要更新的资源名称. 第二个参数确定具体 待更新的资源.

resource.update('Patient', 'c58f29eb-f28d-67c1-0400-9af3aba3d58c', {
  active: false,
});

qq 资源. delete ()

删除资源功能用于删除其id识别的特定资源.

resource.delete('Patient', 'c58f29eb-f28d-67c1-0400-9af3aba3d58c');

创建订阅

Aidbox订阅是订阅和获取服务器上更新资源的通知的一种方式. 见 我们 订阅样本 更多细节.

await client.subsSubscription.create({
  id: 'patient-created',
  status: 'active',
  trigger: { Patient: { event: ['create'] } },
  channel: { endpoint: 'https://aidbox/patient-created' },
});

发送日志

Aidbox具有扩展其日志的能力. 有一个 a 一个 结束点 那个 从应用程序中接受带有定义结构的日志。 这些原木被吸收入弹性原木.

await client.sendLog({
    type: "ui",
    message: {event: "YOUR_EVENT", id: "id", ...},
    v: "APP_VERSION",
    fx: "fetchUsers"
})

Bundle 请求

SDK有帮助者为捆绑请求准备数据.

client.transformToBundle(
  [
    {
      resourceType: 'Patient',
      name: [
        {
          given: [''],
          family: '',
        },
      ],
    },
  ],
  'POST',
);

捆绑请求可以是 交易或批次 类型。 SDK 软件 默认使用“ 交易” 类型, 但可以通过在第二个参数中提供它来更改.

const data = ArrayOfPatients.map(client.bundleEntryPost);

await client.bundleRequest(data, 'batch');

任务 API

队列是实现可靠,同步,可伸缩,再试安全代码执行的宝贵工具. 通过使用队列,我们可以确保任务或消息得到可靠处理,即使面对失败或系统 中断. 队列的同步性质允许独立处理任务,允许并行化并减少等待 时间.

import { Engine } from 'aidbox-javascript-sdk';

const client = new Engine('http://localhost:8888', {
  username: 'test',
  password: 'secret',
});

定义

首先,我们必须创造任务的计划 设置限制 此实体的输入和输出参数 :

 SendMessage
{:zen/tags #{awf.task/definition zen/schema}
 :type     zen/map
 :keys     {:params {:type    zen/map
                     :require #{:phone :message}
                     :keys    {:phone   {:type zen/string}
                               :message {:type zen/string}}}
            :result {:type    zen/map
                     :require #{:status}
                     :keys    {:status {:type zen/string}}}}}

关于任务定义的更多信息
注意: 每次修改配置项目, 我们必须重生 SDK 包

执行情况

下一步是创造商业逻辑 将被视为一个工人, 工人会处理每个任务,我们可以

client.task.implement(
  'SendMessage',
  async ({ params, status }) => {
    const { message, phone } = params;

    try {
      await fetch('https://message-sending-server.com/', {
        method: 'POST',
        body: JSON.stringify({ message, phone }),
      });

      return { status: 'success' };
    } catch (error) {
      return { status: 'failure' };
    }
  },
  { batchSize: 5 },
);

执行

以独特的背景执行单一任务的方法

await client.task.execute('SendMessage', {
  phone: '+1234567890',
  message: 'Hi!',
});

工作流程引擎

Aidbox 提供了 Workflow 引擎模块,所以您可以定义自己的序列 在任务 API 之上的同步任务。 在许多业务流程中,某些任务取决于其他任务的完成. 通过工作流程执行定义任务依赖性允许开发者 以控制任务执行的顺序.

import { Engine } from 'aidbox-javascript-sdk';

const client = new Engine('http://localhost:8888', {
  username: 'test',
  password: 'secret',
});

工作流程定义

 CheckOutWorkflow
{:zen/tags #{awf.workflow/definition zen/schema}
 :type     zen/map
 :pool     decision-pool
 :keys     {:params {:type    zen/map
                     :require #{:clientId}
                     :keys    {:clientId {:type zen/string}}}
            :result {:type zen/map
                     :keys {:messageId {:type zen/string}}}
            :error  {:type zen/map
                     :keys {:message {:type zen/string}}}}}

关于工作流程定义的更多信息
注意: 每次修改配置项目, 我们必须重生 SDK 包

工作流程

await client.workflow.implement(
  'CheckOutWorkflow',
  async ({ params }, { execute, complete, fail }) => {
    if (params.event === 'awf.workflow.event/workflow-init') {
      const response = await fetch('https://server.com/get-client');
      const { phone } = response.json();
      return [
        execute({
          definition: 'SendMessage',
          params: { phone, message: 'Hi!' },
        }),
      ];
    }

    try {
      const response = await fetch('https://workflow-state.com');
      const data = response.json();

      if (
        params.event === 'awf.workflow.event/task-completed' &&
        data.step === 1
      ) {
        return [execute({ definition: 'UpdateInformation', params: {} })];
      }

      if (
        params.event === 'awf.workflow.event/task-completed' &&
        data.step === 2
      ) {
        return [complete({})];
      }
    } catch (error) {
      return [fail({ error })];
    }

    return [];
  },
);

工作流程执行

await client.workflow.execute('CheckOutWorkflow', { clientId: '' });

版本与发布记录

@aidbox/sdk-r4 共发布 16 个版本,首次发布于 2023/06/16;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.15latest2024/10/312 年前
1.0.142024/10/232 年前
1.0.132024/05/222 年前
1.0.122024/05/102 年前
1.0.112024/02/072 年前
1.0.102024/02/072 年前

关于 @aidbox/sdk-r4 的常见问题

@aidbox/sdk-r4 是什么?

带有 HL7- R4 软件包的默认辅助箱 SDK

如何安装 @aidbox/sdk-r4?

在项目目录运行 npm install @aidbox/sdk-r4,或使用 pnpm add / yarn add / bun add。

@aidbox/sdk-r4 支持 TypeScript 吗?

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

@aidbox/sdk-r4 支持 ESM 还是 CommonJS?

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

@aidbox/sdk-r4 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aidbox/sdk-r4 可以商用吗?

@aidbox/sdk-r4 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aidbox/sdk-r4 的下载量有多少?

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

@aidbox/sdk-r4 还在维护吗?

最新版本 1.0.15 发布于 2024/10/31(2 年前);至今共发布 16 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/06/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。