AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Anpheros症状エンジン:方法論

あらゆる言語の自由記述症状がWHO ICD-10およびICD-11コンセプトに変換される仕組み:AI正規化、存在・経験者検出、WHOチェック済み語彙、評価結果、類似症例マッチング、および制限について説明します。

Anpheros 症状エンジンは、人が自身の言葉と言語でどのように感じているかを記述した内容を、国際的な臨床概念に変換します。具体的には、安定した Anpheros ID、WHO ICD-10 コード、WHO ICD-11 コード、および身体システムを生成し、さらに症状が存在するか、解決済みか、仮説的か、あるいは他者に関するものかを特定します。これは Anpheros Daily の背後で本番稼働しており、その結果を Anpheros Platform 上で HL7 FHIR R4 Observations として公開し、REST および FHIR API を通じてあらゆるアプリケーションに同じ用語を提供します。 このページでは、その仕組み、検証方法、測定内容、および限界について説明します。

概要

コンセプト 274件(197件の症状、77件の所見)、識別子 SYM-0001…、再利用不可
分類体系 WHO ICD-10(バージョン2019)およびWHO ICD-11 MMS(2025-01)、各マッピングの同等性あり
身体系 13個、ICD-11の第21章ブロック(神経系、消化器系、呼吸器系、皮膚など)から採用
言語 20言語での名称、個人の言語での自由記述
警告サイン 32件、14のコンセプトに対して、CDCおよびNIDDKからの逐語引用
正規化器評価 5言語(ルーマニア語、英語、スペイン語、ドイツ語、フランス語):プライマリコード 97.5–100 %、存在と対象 92.5–98 %、否定された症状は全言語で0 %として報告
臨床レビュー まだなし:全レスポンスに対して clinical_review: false
標準規格 HL7 FHIR R4(CodeSystem、ValueSet、ConceptMap、Observation)、ICD-10、ICD-11、検査結果用のLOINC

1. パイプライン

症状は4つのステップを経ます。本人のテキストは変更されず、各ステップでその横にデータが追加されます。

  1. キャプチャ (Capture)。 生の入力は、記録された瞬間、電話のタイムゾーン、言語、そしてオプションで強度(1~10)、発症時期、終了時期とともに、そのまま保存されます。下流のどの処理もこれを書き換えることはありません。
  2. 正規化 (Normalization) (AI)。 大規模言語モデル(Vertex AI 上の Google Gemini)がテキストを読み取り、言及されている各症状について、プライマリ ICD-10 コード、オプションのセカンダリ コード、短いラベル、そして assertion(present, absent, resolved, hypothetical, uncertain)と subject(本人、または他の誰か)の2つの属性を返します。モデルは Anpheros ボキャブラリからのみコードを選択できます。それ以外の回答、エントリの省略、または無効なプライマリ コードは、失敗した試みとしてカウントされ、「不明な症状」としてはカウントされません。
  3. コンセプトマッピング (Concept mapping) (決定論的)。 ICD-10 コードは Anpheros コンセプトにマッピングされ、そこから ICD-11 および身体システムにマッピングされます。このステップでは AI ではなく固定テーブルを使用するため、同じコードは常に同じコンセプトを与えます。
  4. 公開 (Publication)。 present であり、かつ 本人に関する 症状のみが、正規化に成功した後、本人のレコード内の FHIR Observation となります。後続の編集や再正規化によってこれが変更された場合、Observation は取り下げられます。バージョン履歴は保持されます。

2. 存在、時間、および経験者

臨床テキストでは、患者が持っていない症状がしばしば言及されます。臨床自然言語処理では、これを否定、時間性、および経験者の検出(NegExおよびConTextファミリーの方法)と呼びます。エンジンは、モデルのアサーションおよびサブジェクト属性を使用して、同じ3つの質問を処理します。

記述 アサーション / サブジェクト 患者の症状として公開されますか?
"I've had a headache since Tuesday" present / self yes
"my head doesn't hurt any more" resolved / self no
"I might get a fever tomorrow" hypothetical / self no
"my mother has a cough" present / other no

親族の訴えが自動的に家族歴に変換されることはありません。

3. 語彙とその検証方法

この語彙は、ICD-10 第18章(R00–R94、およびリリース 2026.10.3 以降の R06.0 呼吸困難などの非残余サブカテゴリ)と、WHO が症状を別の章に分類している場合はその WHO コード(便秘 K59.0、耳鳴り H93.1、複視 H53.2、かすみ目 H53.8、かゆみ L29.9、関節痛 M25.5、腰痛 M54、睡眠障害 G47)をカバーしています。

4. 評価

正規化器は、ルーマニア語(現在のユーザーのほとんどが使用する言語)で記述された100の合成ケースの固定セットで評価されます。各ケースには、期待されるプライマリコード、アサーション、およびサブジェクトが含まれています。32のケースは意図的に存在しないものとしてマークされています(否定、解決済み、仮説、不確実、または他者に関するもの)。現在のプロンプト(バージョン3、2026年10月15日)での結果は以下の通りです。

メトリック 結果 目標
プライマリコードの正しさ 100 % ≥ 85 %
アサーションとサブジェクトの両方が正しい 98 % —
否定された症状が存在として報告された 0 % ≤ 3 %

2つのエラーは管理上のエントリ(「火曜日の心臓専門医の予約」、「5kg痩せたい」)であり、存在するものとしてではなく仮説として分類されました。どちらも症状ではありません。テストセットは臨床医によってレビューされていないため、スコアは参考値です。

その他の言語(2026年10月16日)。 40のケース(すべてのカテゴリを網羅)が英語、スペイン語、ドイツ語、フランス語に翻訳され、期待される回答は同じです。非公式なケースは、各言語の独自の非公式スタイルで書き直されました。モデルへの指示は同じままです。

言語 ケース数 プライマリコード 存在とサブジェクト 否定されたものが存在として報告された
ルーマニア語 100 100 % 98 % 0 %
英語 40 100 % 97.5 % 0 %
スペイン語 40 97.5 % 92.5 % 0 %
ドイツ語 40 100 % 97.5 % 0 %
フランス語 40 100 % 95 % 0 %

残りのエラーのほとんどは、同じ管理上のエントリ(「火曜日の心臓専門医の予約」、「健康診断、すべて問題なし」)または、存在しない2つの状態間の選択(「今日は熱がない」を不在ではなく解決済みとして)です。これらのいずれも症状を公開していません。唯一のコーディングの違いは、スペイン語の「escalofríos y malestar」(悪寒と倦怠感)が、悪寒(R68)を二次コードとして、倦怠感(R53)としてコーディングされたことです。

人々に表示される名前は言語に従います。アプリは、ユーザーの言語(まず一般名)で概念名を表示し、アプリの20言語で存在に関する注記(「解決済み」、「他人」)を表示します。

本番環境(2026年10月16日)、WHOに対して語彙がチェックされた後、保存されているすべての症状が再正規化されました。実際のユーザーの記録では、すべての症状が正規化され、「不明」として残された症状は0件、その人のものではない症状がその人のものとして公開されたものは0件でした(公開されたObservationsの独立監査)。

5. 類似症例(開発中)

次のコンポーネントは、症状と異常な検査結果に基づいて人々を比較し、明示的な同意がある場合にのみ、非常に類似した報告をしている人々を提案します。

これは診断や疾患を提案するものではありません。

6. アプリケーションでの利用方法

7. 制限事項

関連情報

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy