# ラボコネクタ

> CSV、HL7 v2 ORU^R01、またはJSON形式でラボレポート全体を送信し、LOINCコードと参照範囲を持つ検査結果を取得します。

Source: https://developers.anpheros.com/ja/guides/lab-connector

ラボ（またはラボレポートを保持している組織）は、リクエスト全体でレポートを送信し、
プラットフォームは各結果を患者の検査結果`Observation`に変換します。

```
POST /v1/patients/{patient_id}/labs/import
Authorization: Bearer <project key>
Content-Type: text/csv | x-application/hl7-v2+er7 | application/json
X-Anpheros-Source-System: labx        (optional; recorded in Provenance)
Idempotency-Key: <report id>          (optional; a retry returns the same answer)
```

## フォーマット

**CSV** ヘッダー行付き。区切り文字は `,` `;` またはタブ。小数点コンマ、ISO形式の日付 `DD.MM.YYYY` または `DD/MM/YYYY` が使用可能です。認識されるカラム（ルーマニア語または英語）は以下の通りです：マーカー (`analiza`, `test`, `marker`, `name`) — または LOINC `code` カラムのみの場合、LOINC 名がマーカーになります — 値 (`rezultat`, `valoare`, `value`, `result`)、単位 (`um`, `unitate`, `unit`)、参照範囲 (`interval`, `referinta`: `70-100`, `<5`, `>3.5`) または `ref_low`/`ref_high`、日付 (`data`, `recoltare`)、オプションの LOINC (`loinc`, `code`)、注釈。

```
Analiza;Rezultat;UM;Interval de referinta;Data
Hemoglobina glicozilata (HbA1c);6,4;%;4,0-5,6;01.09.2026
TSH;2,1;mUI/L;0,4-4,0;01.09.2026
```

**HL7 v2 ORU^R01** (ER7 テキスト、セグメントは CR または LF で区切られます): `OBX-3` 識別子 (`code^text^LN` は LOINC; ローカルコード (`^L`, `^99zzz`) またはその他のコーディングシステムは、ラボ独自のコードとして `urn:anpheros:lab-code` に保持されます)、`OBX-5` 値 (`NM`, `SN`、またはテキスト)、`OBX-6` 単位、`OBX-7` 参照範囲、`OBX-8` 異常フラグ → `interpretation`、`OBX-11` ステータス、`OBX-14` または `OBR-7` 日付; `OBR-3`/`MSH-10` は Provenance のレポート ID になります。

**ラボ。** 各結果は、HL7 Europe Laboratory Report 2.1.0 が要求するように `performer` で生成元を名付けます：あなたが代表する組織 (`X-Anpheros-Acting-As`)、または HL7 の場合は `MSH-4` (送信施設)、あるいは JSON の `laboratory` (トップレベルまたは項目ごと)。CSV はラボを含みません。そのような結果は、パフォーマーが欠落していることで検証されますが、それが真実です。

**テキストレポート、ドキュメント、および日付の欠落。** テキストレポートが OBX ごとに 1 行で送信される場合 (`TX`/`FT`、同じ `OBX-3`)、結果は 1 つになり、行は結合されます。`OBX-5` (`ED`、またはエンコードされた任意の `Base64`) のドキュメント全体は、結果として保存されません。応答は警告を発し、ドキュメントは `/documents` に属します。`OBR-7` がない場合、結果は `OBR-14` (検体受付) によって日付が付けられ、警告が表示されます。

**時刻とタイムゾーン。** タイムゾーンのない v2 の時刻は、送信者のローカル時刻であり、UTC ではありません。`OBX-14`/`OBR-7` (`20260901081000+0300`) と共に送信されるオフセットは保持されます (`2026-09-01T08:10:00+03:00`)。オフセットがない場合、`MSH-7` のオフセットが使用され、その旨の警告が表示されます。オフセットがどこにもない場合、結果は日付のみを保持し、それにも警告が表示されます。CSV の時刻 (`01.09.2026 08:10`) はタイムゾーンを持たないため、日付のみとして保存されます。2026 年 10 月 17 日までは、そのような時刻は UTC としてラベル付けされていました。その時点でインポートされた結果は識別子を保持し、レポートが再度送信された場合でも認識されます。

まだ保留中 (OBX-11 `I`)、取得不可能 (`X`)、削除済み (`D`)、または誤り (`W`) の HL7 結果、および値のない OBX セグメントは、Observation にはなりません。それぞれが `warnings` で名前が付けられます。

**JSON**: `{"date": "2026-09-01", "origin": "report-77", "laboratory": "Synevo", "items": [{"marker": "TSH", "value": 2.1, "unit": "mUI/L", "ref_low": 0.4, "ref_high": 4.0, "date": "2026-09-01", "code": "3016-3"}]}`。

## 返却されるもの

```json
{"created": 3, "skipped": 0, "unmapped": ["Marker foarte rar"], "warnings": [],
 "observations": [{"id": "…", "marker": "TSH", "code": "3016-3", "system": "http://loinc.org", "value": 2.1, "unit": "mUI/L", "date": "2026-09-01"}]}
```

- マーカーは、レポートにLOINCコードが記載されている場合、または名前がプラットフォームの用語（ルーマニア語および英語の名前と一般的なエイリアス）と一致する場合に**LOINC**にマッピングされます。それ以外の場合は、ラボのコードが`urn:anpheros:lab-code`の下にレポートの正確なテキストとともに保持され、`unmapped`にリストされるため、側でマッピングを改善できます。ラボ独自のコードは、そのラボと一緒の場合にのみ一意です。ソースシステムは、各ObservationのProvenance（`X-Anpheros-Source-System`）に記録されます。
- 名前はLOINCの名前および同義語（例: *Hemoglobin A1c*、*Glycated hemoglobin*、*HDL cholesterol*、*LDL-C*）と照合されます。複数の概念に一致する名前、または概念が持たない修飾子（*urine*、*non-HDL*、*free*、*ratio*…）を持つ名前は推測されません。ラボのコードが保持され、`unmapped`にリストされます。システムにLOINCコードがある場合は、常に送信してください。
- Ureaとurea nitrogen (BUN)は異なる測定値です。*Uree* / *Urea*はurea（LOINC `3091-6`、またはmmol/Lの場合は`22664-7`）にマッピングされ、*BUN* / *Urea nitrogen* / *Azot ureic*はurea nitrogen（`3094-0`、またはmmol/Lの場合は`14937-7`）にマッピングされます。値は変換されません。
- LDL cholesterol: メソッドのない名前は`2089-1`にマッピングされます。*calculated* / *calculat* / *Friedewald*は計算LDL（`13457-7`）にマッピングされます。*direct*は直接アッセイ（`18262-6`）にマッピングされます。メソッドは、*Bilirubina directa*の*direct*のような修飾子であり、総ビリルビンではなく、ラボのコードが保持されます。
- Glucose: ラボレポートの単なる「Glicemie」/「Glucose」は血清または血漿（LOINC `2345-7`）にマッピングされます。毛細血管、指先穿刺、または全血（「capilar」、「sânge integral」）を示す名前は全血（`2339-0`）にマッピングされます。レポートのLOINCコードは常に優先されます。
- 各行には、レポートの内容（レポートID、レポートの名前とコード、日付、値、単位）から構築された安定した識別子（`urn:anpheros:lab-import:v2`）が付けられます。プラットフォームが選択したLOINCコードからは付けられないため、**同じレポートを再送信しても、既にインポートされた行はスキップされます**（`skipped`）。マッピングが改善された後でも同様です。これらのいずれかが異なる行（別のレポート、別の採取時間、別の値）は、別々に保持されます。2026年10月14日より前にインポートされた結果は、元の識別子を保持し、名前、日付、値、単位、レポートIDによって認識されます。レポートIDがない場合（CSV）、そのような一致は`warnings`で報告されます。レポートID（HL7 `OBR-3`/`MSH-10`、JSON `origin`）を送信して、レポートを個別に管理してください。
- 各Observationには、`author_type = import`、ソースシステム、およびレポートIDを含むProvenanceが付随します。WebhookはObservationごとに`resource.created`でトリガーされます。患者はアプリで結果を確認でき、同意したどのアプリでも結果を読むことができます。
- リクエストあたり最大500行。

両方のSDK: `labs.importCsv`、`labs.importHl7`、`labs.importItems`。

CSVおよびHL7 v2レポートからFHIR Observationへのマッピング例、マッピングされていないマーカー、および再送信されたレポート: [How to import laboratory results into a FHIR record](https://developers.anpheros.com/ja/guides/import-lab-results-fhir)。

ラボデータがラボ、クリニック、アプリ、AI間でどのように移動するか、およびラボ結果APIで確認すべきこと: [Laboratory results API](https://developers.anpheros.com/ja/guides/lab-results-api)。
