# @beparallel/grouping 中文文档

规范地址：https://npmcn.com/package/%40beparallel/grouping/

版本：1\.3\.1
npm 元数据更新时间：2026-10-13T16:13:54.167Z
中文译文更新时间：2026-11-09T20:30:32.766Z
软件包许可：未声明

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

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

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

- 包体积（解压后）：74 MB，851 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：5 个
- 首次发布：2025-06-06T16:06:18.158Z
- 最新版本发布：2026-10-13T16:13:53.563Z
- 近 30 天下载量：1746（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：103（近 12 个月 28 个）

## 中文简介

法国医院医疗编码中使用的官方ATIH分组引擎(PMSI GHM/GHS)的Node.js包装器. 该套件提供了本地C组群模块,用于将住院病人分类为GHM和GHS代码,作为PMSI/T2A系统的一部分

## 安装

```sh
npm install @beparallel/grouping
```

也可以使用：`pnpm add @beparallel/grouping`、`yarn add @beparallel/grouping`、`bun add @beparallel/grouping`

## README

# 分组

法国PMSI(英语:Programme de Médicalization des Systèmes d'Information)中使用的官方ATIH分组引擎的节点js包装.

这个软件包可以将本地的C类组群模块整合起来,将住院时间分类为: **德国** (Homogène de Malades集团)和 **全球统一制度** (Groupe Homogène de Séjours)代码,符合法国的T2A计费制度.

## 概览

本项目使用 : [节点- API](https://nodejs.github.io/node-addon-examples/about/what/) 来包装官方的 ATIH 分组引擎。 分组引擎是法国医疗系统计费和分类基础设施的重要组成部分.

### 法国医学编码背景

法国的卫生保健系统使用PMSI(信息系统医疗方案),在T2A(Tadization Àl'Activité)系统下进行医疗活动编码和医院收费。 这个项目具体解决了将医疗停留自动分为标准化类别的必要性.

关于法国分组算法和医学编码的综合背景,请参见此 [详细概览](https://www.notion.so/Grouping-for-Medical-Coding-in-France-205ef7290c5f805ea356fdc1fc7fe94f)。 。 。 .

## 技术架构

该套装包括:

1.  **原产地 C/C++ 模块**: 核心 ATIH 分组引擎 `atih/` 文件夹(参见 [doc/atih/分组 方法.md](https://npmcn.com/package/%40beparallel/grouping/doc/atih/grouping_method.md)(中文(简体) )
2.  **Java脚本接口**:高级节点js API in `src/` 将 JS 对象转换为 ATIH RSS 字符串并解析本地结果
3.  **类型定义**: 用于发展支持的脚本类型定义
4.  **运行时间数据**: ATIH 参考表,随包一起运出 `tables/V2024`, (中文(简体) ), `tables/V2025`, (中文(简体) ), `tables/V2026`

### 仓库布局

| 路径 | 目的 |
| --- | --- |
| `atih/` | ATIH分组引擎的原生C源(`grouping/`)和FICUM控制模块(`ficum/`(中文(简体) ) |
| `src/` | 类型脚本 API : `exports/` (公共职能+类型), `utils/` (RUM型号,022/023格式序列器,enums) |
| `tables/V{2024,2025,2026}/` | ATIH 按年在运行时间装入的参考表格 |
| `atih/smr/`, (中文(简体) ), `tables/SMR/{2025,2026}/`, (中文(简体) ), `lib/SMR/` | FG SMR: ATIH 源 (未修改), N- API 包装器, 二进制表格, 标签文件(参见 [FG 工管关系](https://npmcn.com/package/%40beparallel/grouping/#readme-fg-smr-soins-m%C3%A9dicaux-et-de-r%C3%A9adaptation)(中文(简体) ) |
| `lib/`, (中文(简体) ), `txt/` | 支持 ATIH 数据文件 |
| `doc/` | ATIH 格式规格和出版的运行本 |
| `tools/grouping-fixtures/` | 从AlphaCode API中获取确定性测试固定装置的工具(见它 [读取](https://npmcn.com/package/%40beparallel/grouping/tools/grouping-fixtures/README.md)(中文(简体) ) |
| `src/tests/fixtures/` | 已捕获 `.case.json` 组合测试套件所主张的固定装置 |

> 本地引擎加载相对于 **软件包根** (通过 `require.resolve('@beparallel/grouping/package.json')`),而不是消费应用程序的工作目录. 这个 `tables/`, (中文(简体) ), `lib/`,以及 `txt/` 文件夹是已出版的 tarball (`files` 内 `package.json`) (中文(简体) ).

## 公共 API

软件包的切入点导出分组函数、错误模型和所有类型:

```javascript
import {
  grpMco, // grpMco(input) picks the engine from the discharge dates; grpMco(input, { edition }) forces one
  selectMcoEdition,
  MCO_EDITIONS,
  McoEngineUnavailableError,
  grp, // deprecated: like grpMco(input), but silently falls back to 2026
  grp2024,
  grp2025,
  grp2026,
  GroupingError,
  BlockingErrorGroup,
  RUMEnums // TYPE_ETAB, RUM_ENTRY_MODE, RUM_EXIT_MODE, ...
} from '@beparallel/grouping'
```

导入包装入没有本地加通: 每个 `.node` 文件被第一个需要它的呼叫所装入,一个缺失的被丢到那里,它的预期路径在下面 `build/Release/` 以及如何获得`pnpm prebuild:install` 或者说 `pnpm build:c:native`) (中文(简体) ).

这个 `RUMObject` 财务报告和审定财务报表 `TYPE_ETAB` 用于构建输入的类型也可以从生成的类型路径中获取(这就是 AlphaCode 如何构建的) `valuation` 服务进口:

```typescript
import type { RUMObject } from '@beparallel/grouping/dist/types/utils'
```

### 编辑选择 : `grpMco`

`grpMco(input, options?)` 第一组保留一个FG MCO版`MCO_EDITIONS` =: `'2024'`, (中文(简体) ), `'2025'`, (中文(简体) ), `'2026'`)返回引擎的结果+ `engineYear` (单位:千美元)`2024 | 2025 | 2026`,运行的引擎;类型 `GrpMcoResult`:

-   `grpMco(input, { edition: '2025' })` 运行精确 `grp2025(input)`不论出院日期如何 外边的版本 `MCO_EDITIONS` (单位:千美元)`'2027'`,数字... ) `McoEngineUnavailableError`。 。 。 .
-   `grpMco(input)` 运行 `selectMcoEdition(input.rumObjects)`: 第一个 **2026, 2025, 2024 (英语)** 结束 **任意** 卢姆 `exitDate` (单位:千美元)`DDMMYYYY`; RUM 无 `exitDate` (见注5) 两年内与退伍日期有关的缓期执行是最新的(`31122025` + 键 `02012026` → `'2026'`) (中文(简体) ). 当卸货日期与发货版本不符时(完全没有,或 `2023`, (中文(简体) ), `2027`...,它抛出 `McoEngineUnavailableError` 指定所看到的日期和已发运的版本.
-   `selectMcoEdition(rumObjects)` 被导出,以便调用者能够在分组前知道(或日志)版本,而无需重新执行规则.
-   输入由 `GrpMcoInputSchema` (zod,严格在上层: `{ rumObjects, typeEtab }`1至99卢比);a `ZodError` 否则会被扔出去。 RUM 字段由引擎检查(error code),和以前一样.

每版将 RUM 序列化为自己的格式: **023 (英语)** 用于2026年, **022 (英语)** 2025年和2024年的拨款. `grp2024` 编号 : `grp2025` 编号 : `grp2026` 仍可使用,也可返回 `engineYear`。 。 。 .

`grp(input)` 实值 **已贬值**: 它适用与 `grpMco(input)` 但是,当没有放出日期匹配时,记录一个控制台警告并默默运行2026引擎. 它维持现有呼叫者的行为 `grpMco(input)` (或 `grpMco(input, { edition })`相反.

### 投入

所有分组函数都取由 Zod 验证的单个对象 :

```typescript
interface GroupingInput {
  rumObjects: RUMObject[] // one or more Résumés d'Unité Médicale
  typeEtab: TYPE_ETAB // 1 = PUBLIC_HOSPITAL (ex-DGF), 2 = PRIVATE_HOSPITAL (ex-OQN)
}
```

A 类 `RUMObject` 镜像 ATIH RSS 线条。 日期为 `DDMMYYYY` 字符串;诊断是CIM-10代码; `ZAs` 是CCAM的动作行。 一个真实( 抓取) 的例子 :

```javascript
const input = {
  typeEtab: 1, // PUBLIC_HOSPITAL
  rumObjects: [
    {
      FINESS: '511928447',
      RSS: '22676886701954659349',
      RUM: '7319798297',
      birthDate: '22011959',
      sex: '1',
      uMed: 'RAC',
      entryDate: '19122025',
      entryMode: '8',
      exitDate: '22122025',
      exitMode: '8',
      nDA: 2,
      nZA: 5,
      DP: 'G553', // principal diagnosis
      DAs: ['M4806', 'E6694'], // associated diagnoses
      ZAs: [
        // CCAM acts
        { date: '19122025', code: 'LFFA001', phase: '0', act: '1', mod: 'JK', AN: '1', qty: '1' },
        { date: '19122025', code: 'LFAA002', phase: '0', act: '4', diag: '1', AN: '2', qty: '1' }
      ]
    }
  ]
}

const result = grpMco(input) // → 2025 engine (2025 discharge), result.engineYear === 2025
```

整个球场在 `RUMObjectSchema` (单位:千美元)[src/utils/类型/rum.types.ts](https://npmcn.com/package/%40beparallel/grouping/src/utils/types/rum.types.ts); 桶(出入境方式、性别、RAAC等) [src/utils/类型/rum.enum.ts](https://npmcn.com/package/%40beparallel/grouping/src/utils/types/rum.enums.ts) 和再出口为 `RUMEnums`对于更为完整的案例,请浏览以下所记录的案件: [弧/测试/固定/](https://npmcn.com/package/%40beparallel/grouping/src/tests/fixtures/)。 。 。 .

### 产出

每个函数都返回一年的具体结果(`Grp2024Result` 编号 : `Grp2025Result` 编号 : `Grp2026Result`,参见 [市场/出口/类型/](https://npmcn.com/package/%40beparallel/grouping/src/exports/types/)),加 (中文(简体) ) `engineYear`,形状像:

```typescript
interface Grp2026Result {
  engineYear: 2026 // engine that ran (2024 | 2025 | 2026)
  returnCode: number // raw ATIH return code
  returnError: GroupingError | null // mapped error (null when grouping succeeded)
  grp_res: {
    // classification result
    cmd: string // Catégorie Majeure de Diagnostic
    ghm: string // Groupe Homogène de Malades
    version: string
    cret: string
  }
  ghs_val: { ghs: string /* + supplement/billing counters */ }
  rss_inf: { agea: number; dstot: number /* + diag/act lists, signatures */ }
}
```

### 错误模式

当引擎无法分组时, 它返回一个非零 `returnCode`,它被映射为 `GroupingError` 通过词典 [市场/出口/管理不当/集团-管理不当](https://npmcn.com/package/%40beparallel/grouping/src/exports/error-management/grouping-errors.dict.ts)数字 :

```typescript
interface GroupingError {
  code: number
  errorName: string
  scope: string | null
  blockingErrorGroup: BlockingErrorGroup | null // 90Z00Z, 90Z01Z, 90Z02Z, 90Z03Z
  description: string
}
```

`BlockingErrorGroup` 区分强制控制错误与组-1/组-2阻塞错误和FG执行错误. 关于成功, `returnError` 实值 `null` 财务报告和审定财务报表 `returnCode` 实值 `0`。 。 。 .

## FG SMR(医学和适应学院)

包件还包了 ATIH **FG 工管关系** (分发) `SourcesFGSMR2026_15`,它搭载了2025和2026引擎). 留宿是周刊的套间 **生殖健康**; 引擎返回 a **格林尼治平时** (例如:. `0871UC1`翻译: `0871`,重新调整级别 `U`,重度级别 `C`严重性 `1`)和a 数据 **格林尼治标准时** (关税类,例如:. `0858`· ; `9999` = 未估值).

```typescript
import { grpSmr, grpSmr2025, grpSmr2026, RHSObject, TYPE_ETAB, toSmrWeek } from '@beparallel/grouping'

const result = grpSmr({ rhsObjects: weeks /* RHSObject[], one per week, sorted */, typeEtab: TYPE_ETAB.PUBLIC_HOSPITAL })
result.gme // '0871UC1' (HC stays; HTP stays: per RHS in result.rhs[i].htp)
result.gmt // '0858'
result.severity // 1
result.returnCode // 0, or the smallest blocking error code (HTP: smallest non-zero rhs[i].returnCode)
result.returnError // SmrGroupingError | null (label from LIBERR.TXT)
result.rhs // per-week rows: GME, return code, errors, 90-day threshold position, weekly GMT...
```

-   **投入**数字 : `RHSObject` 编号 : `RHSObjectSchema` (单位:千美元)[斜弧/斜角/斜角/斜角/斜角/斜角](https://npmcn.com/package/%40beparallel/grouping/src/utils/rhs/rhs.types.ts))是一个RHS的命名域模型,序列化为固定宽度 **M0D 软件** 格式 (单位:千美元)[m0d-格式图](https://npmcn.com/package/%40beparallel/grouping/src/utils/rhs/m0d-format.ts)每个字段的M0D位置都在它的JSDoc. 日期为 `DDMMYYYY`· ; `weekNumber` 实值 `WWYYYY` (ISO周+ISO年,见 `toSmrWeek()`(三); `presenceDays` 是 7× 个 `0/1`,星期一至星期日; CIM-10 代码不写出点。 输入用 zod 验证(`GrpSmrInputSchema`,严格:未知密钥为出错; 1 `smrStayNumber`,周排序,38,210-特征引擎缓冲器内的每行;医学有效性作为引擎出错代码回来.
-   **引擎选择**数字 : `grpSmr2025` 编号 : `grpSmr2026` 强制引擎( r)`annee_transmission` =该年). `grpSmr` 跟着ATIH的调度器 `fgsmrmain.c`页:1 **上次访问** 决定HC vs HTP;HC去FG 2026,当其上个星期为 `01/2026`,其他FG 2025,并在第90个存在日(或排出日)于01/01/2026之前被重新组合为FG 2025;HTP RHS跟随自己的一周(绕一周) `01/2026`) (中文(简体) ). 它会扔 `SmrEngineUnavailableError` 当 FG 2024 (前几周) `09/2025`)或需要FG 2027+. `result.routing` 说哪条规则适用. `grpSmr(input, { edition: '2025' | '2026' })` 强迫一个版本(结果与 `grpSmr2025` 编号 : `grpSmr2026`; 未在 `SMR_EDITIONS` 掷出 `SmrEngineUnavailableError` 而不是回到调度员。 2025版开始于ISO周 `09/2025` (2025年2月24日星期一,日内瓦), `SMR_FIRST_WEEK_2025`在2025年竞选活动正式开始前一周(2025年3月3日星期一,第10周).
-   **估价:在自己的竞选活动中停留的每个部分.** `grpSmr` 复制 `fgsmrmain.c` 用于路由,GMEE,还原代码,出错和每2026个值,但故意不用于2025个部分. ATIH的可执行性在2026年的传输模式下运行了FG 2025(英语:`annee_transmission = 2026`N -1重新集结的HC会报告GMT的停留 `9999` 从90天起,每周格林尼治标准时间 `9999` 前几周为零天 `01/2026`; HTP RHS 2025周获得0个值日. `grpSmr` 返回那里真实的 FG 2025 值(FG 2025 运行与 `annee_transmission = 2025`在一个HTP 分裂的周`01/2026` 页:1 `previousEditionValuation` (加上该行自己的2026年估值). 定值价格(`gmt`, (中文(简体) ), `hc`关税: `engineYear` 编号 : `version`,每星期格林尼治平时加收 `rhs[i].weeklyGmtEngineYear`中,每行HTP的关税 `rhs[i].engineYear` 联合国 `previousEditionValuation` 那个部分 `engineYear`2025年竞选时的账单. `src/tests/grouping-smr-reference.test.ts` 比较 `grpSmr` 产出 `fgsmrmain.c` 和钉住这些差异.
-   **模式**数字 : `mode: SmrGroupingMode.VALORISATION` (违约,“第1组”,用于计费)或 `DESCRIPTION` (“第2组”,GMED).
-   **原生边**: 一个加词 `grpsmr.node` (两个引擎),与MCO加法分开;表格 `tables/SMR/<year>/`。ATIH 文档下 `atih/smr/SRCV2025|SRCV2026` 可移植性处理于 `binding.gyp` (见关于 `grpsmr` 目标)和 `atih/smr/compat/malloc.h`,以及 `.gitattributes` 保持正常的CRLF线的结束。 引擎状态为 process-global:不要调用几个 SMR 函数 `worker_threads` 马上.

## 如何建造

构建管道有两个阶段:本土C编译和TypeScript编译. 预建二进制通过GitHub Releases发售,因此消费者不需要本地C工具链.

### 土著汇编

[`node-gyp`](https://github.com/nodejs/node-gyp) 汇编定义的 ATIH C 源文件 `binding.gyp` 输入 `.node` 二进制加分. 确定了四个目标:

-   **缩写** - FG MCO 2025 + 2026 在一个加法中(FG分布与 2025+ 2026 保持: `fgmco_2026` + SRCV2025/2026,一次编译),出口 `grp_2025_wrapper` (使用时间: `grp2025`和 `grp_2026_wrapper` (使用时间: `grp2026`) (中文(简体) ). 两种包装没有修改: `grp_mco_2025_unit.c` 编号 : `grp_mco_2026_unit.c` 编译每个 `Init` 重新命名及其编号 `NAPI_MODULE` 已删除,以及 `grp_mco_module.c` 注册模块。 (在此之前,同一来源曾两次连通,与 `grp2025.node` 财务报告和审定财务报表 `grp2026.node`. ) (中文(简体) )
-   **grp2024 (英语)** - 留下2024个`fgmco_2025` + SRCV2024/2025 (中文(简体) )
-   **grpsmr (英语)** - FG SMR 2025 + 2026年(`atih/smr/`,参见 [FG 工管关系](https://npmcn.com/package/%40beparallel/grouping/#readme-fg-smr-soins-m%C3%A9dicaux-et-de-r%C3%A9adaptation)(中文(简体) )
-   **事实** - FICUM控制模块(UM授权文件生成/验证)

以 :

```bash
pnpm build:c:native
```

### 类型脚本汇编

`tsc` 汇编 `src/` 输入普通JS输出的目录 `dist/`,将类型声明发布到 `dist/types/`。 。 。 .

```bash
pnpm build:ts
```

## 地方发展

```bash
# Use the pinned Node version (.nvmrc → 24.14.0)
nvm use 24

pnpm install

# Install prebuilt native binaries. `prebuild:install` resolves them in this order:
#   1. If GITHUB_TOKEN is set -> download from the GitHub Release.
#   2. Otherwise -> extract a matching tarball committed under prebuilds/.
#   3. If neither works -> prints guidance to build from source.
pnpm prebuild:install

# Optional: only needed for the remote download path
# cp .env-example .env.dev   # set GITHUB_TOKEN
# export GITHUB_TOKEN=...    # token with access to the GitHub Releases

# ...or compile the native modules from source (needs python3, make, g++)
pnpm build:c:native

pnpm test
```

### 运行测试

测试需要首先编译本土C模块. 这个 `pretest` 脚本自动处理 :

```bash
pnpm test
```

这个运行 `pnpm build:c:native` (通过 `pretest` 钩子) `jest`。当 C 代码不变时跳过本地重建:

```bash
npx jest
```

只运行分组固定套件 :

```bash
pnpm test:fixtures
```

要运行特定测试文件 :

```bash
npx jest src/tests/grouping.test.ts
npx jest src/tests/ficum.test.ts
```

在有意改变行为后更新快照:

```bash
npx jest --updateSnapshot
```

### 测试固定装置

组合套房由捕获驱动 `.case.json` 固定装置 `src/tests/fixtures/**`自动发现 [斜弧/测试/固定/装载器.ts](https://npmcn.com/package/%40beparallel/grouping/src/tests/fixtures/loader.ts) 并声称 [src/测试/分组. test.ts](https://npmcn.com/package/%40beparallel/grouping/src/tests/grouping.test.ts)。 。 。 .

由 AlphaCode 生成固定元件 `compare-to-reference-grouping` 使用 API 响应 `pnpm capture-fixtures`。见 [工具/分组固定/README.md](https://npmcn.com/package/%40beparallel/grouping/tools/grouping-fixtures/README.md) 用于完整抓取工作流程,Metabase基线查询,以及匹配与匹配的地块.

### 预建二进制

为避免要求消费者在当地编译C代码,该项目使用 [`prebuild`](https://github.com/prebuild/prebuild) 财务报告和审定财务报表 [`prebuild-install`](https://github.com/prebuild/prebuild-install) 加上一个小包装, 加一个本地反弹:

-   **目录**: 每个焦油球包括: **全部** 本地目标来自 `binding.gyp`—— 说`build/Release/grp2024.node`, (中文(简体) ), `grpmco.node`, (中文(简体) ), `grpsmr.node`,以及 `ficum.node`在与本地人相同的道路上 `node-gyp` 建筑(`scripts/install-prebuild.cjs` 检查这四个。 这个 `binary.module_name` 输入 `package.json` (单位:千美元)`grpmco`)是资产名称 `prebuild-install` 解析此软件包; 它确实 **没有** 表示只运出单一文件 .
-   **出版**: 在版本标签上, [`.github/workflows/prebuild.yml`](https://npmcn.com/package/%40beparallel/grouping/.github/workflows/prebuild.yml) 创建 GitHub 发布并运行 `prebuild` 打开 **最高级** 财务报告和审定财务报表 **最高级** (节点ABI与CI对齐),每OS/arch矩阵行上传一发柏油球. 同样的工作流程也支持 `workflow_dispatch` (手工运行),在这种情况下,它会构建相同的矩阵,但上传到 **工作流程文物** 而不是释放 - 所以维护者可以将其拉到本地 `pnpm prebuild:download` 并将它们置于 `prebuilds/`。 。 。 .
-   **安装**: 消费者运行 `pnpm prebuild:install` (见 [`scripts/install-prebuild.cjs`](https://npmcn.com/package/%40beparallel/grouping/scripts/install-prebuild.cjs)) (中文(简体) ). 包装器按此顺序解决二进制 :
    1.  若为 `GITHUB_TOKEN` 已经确定,代表 `prebuild-install -T $GITHUB_TOKEN` (从 GitHub 发布主机下载).
    2.  否则( 或失败时) 检测 libc 通过 [`detect-libc`](https://github.com/lovell/detect-libc) 并按顺序将候选柏油球列表放入 `prebuilds/<scope>/`数字 :
        -   glibc Linux : `linuxglibc-{arch}` 接下来 `linux-{arch}`
        -   macOS / 其他 : `{platform}-{arch}`
    3.  第一个现有候选人被提取到包根中, 充入 `build/Release/`如果不存在,则用指向 `pnpm prebuild:create` (建造当地柏油球)或 `pnpm build:c:native` (编自出处. 使用 `pnpm prebuild:install:remote` 绕过包装并运行原始 `prebuild-install -T $GITHUB_TOKEN` 直接说.
-   **坚固的焦油丸**: 手册制作的矩阵 `prebuild.yml` 运行可以在 `prebuilds/` 并经由 `files` 阵列 `package.json`。在匹配中结束消费者 `node_abi` + 键 `platform` + 键 `arch` 因此,不需要安装一个符号。 承诺集的被钉住的节点ABI是 `.nvmrc` 发布时(目前) **24.14.0 (简体中文)**) (中文(简体) ).
-   **邮购**数字 : `postinstall` 运行 `pnpm build`,用于汇编 **仅类型脚本**。下载预建为 **没有** 自动; 运行 `prebuild:install` 安装后,或从源头编译出所有信息 `pnpm build:c:native` 在软件包目录中.

### CI 管道

| 工作流程 | 触发 | 目的 |
| --- | --- | --- |
| `prebuild.yml` | 推动标签 `v*` 手动 | Tag push:创建 GitHub 释放并上传预建(macos x64/arm64,linux glibc x64/arm64). 手动发送: 建立相同的矩阵并上传工作流程的文物( 下载与 `pnpm prebuild:download`(中文(简体) ) |
| `test.yml` | 调取请求 | 使用节点版本运行测试 `.nvmrc` |

### 软件包管理器

项目使用 **小时**,通过 `corepack` 通过 `packageManager` 输入 `package.json`。 。 。 .

## 安装

1.  安装软件包

```bash
pnpm add @beparallel/grouping
```

2.  (可选)导出一个 GitHub 托肯

包裹船在下方装了预制的柏油丸 `prebuilds/` 支助 `node_abi` + 键 `platform` + 键 `arch` 组合,所以一个符号是 **没有** 当您的运行时间符合此设定时需要。 只有在您需要从 GitHub Release 主机下载新构建时( 如在节点版本或未覆盖的拱上) 设置一个符号 :

```bash
export GITHUB_TOKEN=your_github_token
```

或设置在.env.dev文件中并运行 `dotenv -f .env.dev run XXX`。 。 。 .

3.  安装本地模块

```bash
cd node_modules/@beparallel/grouping && pnpm prebuild:install
```

`prebuild:install` 将尝试 `GITHUB_TOKEN` 如果设定了,则先取出承诺的本地焦油丸。 如果两个路径都没有产生二进制,则会打印指导 `pnpm prebuild:create` 或者说 `pnpm build:c:native`。 。 。 .

在AlphaCode的单列上,这个步骤被接入 `valuation` 作为 `grouping:build` 剧本.

## 所需资源

-   节点.js 24.0.0以上(回波针) **24.14.0 (简体中文)** 内 `.nvmrc`(中文(简体) )
-   兼容 macOS 和 Linux( Windows 不支持)
-   对于 **本地语言** 分组: 运行 `prebuild:install` 添加依赖性后( 编译了下载) `.node` 文件),或安装 C 工具链(`python3`, (中文(简体) ), `make`, (中文(简体) ), `g++`运行 `pnpm build:c:native` 包内

## \* 额外资源

### 释放过程

-   释放过程: [医生/包装/publish.md](https://npmcn.com/package/%40beparallel/grouping/doc/package/publish.md)
-   增加一个新的分组年(从ATIH + 非递归固定装置购买/卸载): [医生/包装/添加-新年](https://npmcn.com/package/%40beparallel/grouping/doc/package/adding-a-new-year.md)

### 东帝汶

-   RSS分组数据格式: [doc/atih/122 format.md (中文(简体) )](https://npmcn.com/package/%40beparallel/grouping/doc/atih/122_format.md)
-   分组算法 : [doc/atih/分组 方法.md](https://npmcn.com/package/%40beparallel/grouping/doc/atih/grouping_method.md)
-   UM 授权文件格式( FIUM 输入) : [doc/atih/um authorization file format.md (中文(简体) )](https://npmcn.com/package/%40beparallel/grouping/doc/atih/um_authorization_file_format.md)

> 非分组 **022/023 (中文(简体) )** RSS 序列化在以下代码中执行 [rum/formats/surc/ utils/rum/formats/ (中文(简体) )](https://npmcn.com/package/%40beparallel/grouping/src/utils/rum/formats/) 而不是一个独立的医生.

## 常见问题

### @beparallel/grouping 是什么？

法国医院医疗编码中使用的官方ATIH分组引擎\(PMSI GHM/GHS\)的Node\.js包装器\. 该套件提供了本地C组群模块,用于将住院病人分类为GHM和GHS代码,作为PMSI/T2A系统的一部分

### 如何安装 @beparallel/grouping？

在项目目录运行 npm install @beparallel/grouping，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 grouping-build，可以用 npx grouping-build 直接运行。

### @beparallel/grouping 支持 TypeScript 吗？

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

### @beparallel/grouping 支持 ESM 还是 CommonJS？

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

### @beparallel/grouping 需要什么版本的 Node\.js？

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

### @beparallel/grouping 可以商用吗？

@beparallel/grouping 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @beparallel/grouping 的下载量有多少？

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

### @beparallel/grouping 还在维护吗？

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

