MongoDB Atlasを使用して、 SNID ct 診断用語のモデル化、検索、移動、基礎を示す方法を学びます。
ユースケース: 相互運用性
業種: 医療
製品: MongoDB Atlas、 MongoDB Search、 MongoDB ベクトル検索、Vocky AI
ソリューション概要
ヘルス管理アプリケーションでは、医療テキストを保存するだけでなく、医療上の意味を理解する必要があります。になります。異なる単語が同じ医療概念を説明します。医療コーディングは、安定した識別子を使用してその意味を表現する標準的な方法をアプリケーションに提供します。
医療チームは、さまざまな目的で異なるコーディング システムを使用します。一部のコーディング システムでは、レポート作成、統計、支払い、または医療機関の活動分析のために、診断とエンカウントをグループ化します。 S加えられた ct は、 ヘルスレコード内の開発的な意味に焦点を当てています。これは、問題、結果、手順、ボディ構造、組織、ファイル、製品、およびその他の多くの医療概念を表すことができます。 SNI は、可能性を定義するアプリケーションをサポートしています。
S加えられた 国際 では、 S Not を、一意の意味、形式定義、階層組織 を持つ概念である診断用語として説明しています。
STOPED はグラフのような構造をしています。 500,000 を超える医療概念はそれぞれが、シノニムや翻訳など、人間が判読可能な説明をいくつか含むことができます。親概念、子概念、祖先、他の概念との形式的な関係を持つことができます。 STOPD は、次のように概念、説明、関係を通じて用語コンテンツを表します。
概念は医療概念を表します。
説明は、人間が判読できるタームをその概念にリンクします。
関係は、ある概念を別の概念に接続します。
この構造は強力ですが、実装の問題が発生します。アプリケーション チームは、高速ターム検索、多言語検索、階層ナビゲーション、子孫展開、関係検査を必要としています。また、クリティカル ノート レビュー、問題リストの作成、決定サポート、coort 検出、セマンティック検索などのワークフロー内で SDNED の用語を使用する必要があります。従来の 実装では、多くの場合、これらのニーズは複数のシステムに分裂。
用語ファイルのリレーショナルデータベース。
テキスト検索用の検索エンジン。
階層トラバーサル用のグラフデータベース。
セマンティック検索用のベクトルデータベース。
このソリューションは、MongoDB Atlasで S特定の ct を次のように運用する方法を示しています。
各 SNMP 概念をMongoDBドキュメントとして保存し、概念の ID、説明、関係、親、子、祖先パスをまとめます。
MongoDB Search およびMongoDB ベクトル検索用の 1 つのタームレベルの検索プロジェクションを構築します。
祖先配列とマルチキー インデックスを使用すると、別のグラフデータベースなしで共通の階層と後続クエリをサポートできます。
同じターム サービスを使用して、診断結果を Sされるようになりました
エビクション、コンテキスト、祖先パスを使用して確認済みのコーディングを保存します。
例、ユーザーは「ハートビート」を検索し、選択した医療概念を調べ、その親概念と子概念を確認し、その形式関係を確認して、その下に特定の概念を展開できます。 S関係 では、このタイプの降順展開を表現するために、多くの場合 ECL を使用します。 ECL は、SNMP TT の概念のセットを説明するための圧縮されたクエリ言語として機能します。例、式 は、階層内のハートビートとその下にあるすべての概念を参照します。<< Heart failure MongoDB のスキーマ設計では、このパターンは事前計算された祖先配列に対するクエリに自然にマッピングされます。 SNOMED の公式 ECL参照では、演算子<< を「の子孫または自己」として定義し、概念とそのサブタイプを検索します。
図の 1。親と子の階層を持つ医療概念
このソリューションは、医療ノートの基礎も示します。メモには、現在の結果、過去の履歴、ファミリー履歴、計画的なアクション、不正確なステートメント、否定的な結果が含まれる場合があります。このアプリケーションは、候補となるクリティカル タームを抽出し、 MongoDBを通じて SNID ct を検索し、候補となる概念を提案し、確認されたコーディングを確認した後にのみ保存します。保存されたコーディングには、元のエビクションの範囲、選択された SDNED の概念、アサーションのコンテキスト、レプリカのステータス、および祖先パスが保持されます。その後、下流のアプリケーションは正確な単語だけでなく、医療意味でクエリを実行できます。
次の必要がある場合は、このソリューションを使用してください。
医療用語、シノニム(同意語)、翻訳、および S所有の 識別子を検索します。
親、子、祖先、子孫、関係ビューを移動します。
1 つのMongoDBコレクションから語彙、セマンティック、およびハイブリッドでの検索をサポートします。
「ハートビートのすべての子孫」などの ECL スタイルの階層式で概念セットを展開します。
エビクションの範囲と人間のレビューを使用して、SNI の ct 候補に診断ノートを検証します。
インデックス作成された下流のクエリの祖先パスで確認済みの SDNMED をコーディングで保存します。
このパターンにより、用語データ、用語検索、セマンティック検索、階層クエリ、診断結果の取得、監査されたコーディング出力のための 1 つのアプリケーションプラットフォームが提供されます。これにより、ドキュメントストレージ、検索、セマンティック取得、グラフ形式のナビゲーション用に個別のシステムを実行する必要がなくなります。
S加えられた ct ライセンス ノート: このソリューションに関連付けられているパブリックリポジトリには、小さなサンプルデータセットのみが含まれています。 S加えられた ct には適切なライセンスが必要です。
参照アーキテクチャ
この参照アーキテクチャは、ナビゲーションとグラウンド クリティカル ノート ワークフローで構成されています。
ナビゲーションは、用語ユーザーの検索、検査、および STOPED の概念のスコープ設定に役立ちます。フィールド クリティカル ノートは、同じ 用語検索レイヤーを再利用し、デフォルトで 決定的な語彙検索 を使用して、医療テキストから SNOD TT 候補を提案し、確認されたコーディングのみを保存します。
このアーキテクチャでは、 MongoDBコレクションのセットを使用します。
snomed-irbdコレクションには、ソースが保存されている用語ビューが保存されています。snomed-term-searchは高品質のターム検索をサポートします。grounded_notesコレクションは、ソース用語データではなく、確認済みのアプリケーション出力を保存します。
SNID NT コンテンツはグラフ作成されています。このアーキテクチャでは、接続された構造をMongoDBドキュメント内でまとめて保持し、検索プロジェクションと祖先配列を使用してそれらを運用可能にします。
アーキテクチャの概要
この実装は、 JSONコンセプト モデルとしてすでに利用可能な MongoDB STOP のコンテンツパッケージから始まります。現在のデモでは、ソースモデルは、国の認証局が使用するスペインの SNID ct ディストリビューションから取得されています。パブリックリポジトリにはサンプルデータセットのみが含まれています。完全な S付与 ct 用語を再配布することは ありません 。
アーキテクチャはソース形式に独立しています。組織がSTOPD をJSONとして受信した場合は、そのモデルをMongoDBに直接ロードできます。
図の 2。コード管理者としてのMongoDBと、オプションの候補限定 LM ゲートウェイ 。
ターゲット モデルには、次の用語コレクションがあります。
snomed-irbd: 各診断概念を説明、関係、親、子、祖先、アクティブなステータス、リリースメタデータ、 メンバーシップメタデータとともに保存します。アプリケーションは、概念検索、階層ナビゲーション、関係検査、および子孫展開にこのコレクションを使用します。snomed-term-search: アクティブなターム、言語、リリースごとに 1 つの検索可能なドキュメントを保存します。アプリケーションは、語彙検索、セマンティック検索、ハイブリッド検索、言語フィルタリング、スコープ フィルタリングにこのプロジェクションを使用します。
Navigation API はsnomed-term-search を使用して一致する概念を見つけます。次に、snomed-irbdコレクションから選択した結果を増やします。ユーザーは、「ハートビート」などの診断フレーズを検索したり、選択した概念を検査したり、より広範で具体的な概念を表示したり、同じ操作のAPI例を開くことができます。
grounding API は、診断ノートのワークフロー内で用語検索レイヤーを再利用します。グラウンド検索 のデフォルトは決定的な辞書検索であり、ナビゲーション では 句読点、セマンティック、ハイブリッド モードが提供されます。任意の LVM 階層はテキストを解釈し、 MongoDB が提供する候補から選択するのに役立ちますが、新しい SDNED TT 識別子を作成してはなりません。
レビュー後、アプリケーションは確認されたコーディングを grounded_notes に保存します。各コーディングは、選択した SDNED ct 概念、検証テキスト、アサーション コンテキスト、サブジェクト コンテキスト、レプリカ ステータス、および祖先 ID を保持します。その後、下流のアプリケーションは、正確な単語だけでなく、意味のある意味で確認済みの診断結果をクエリできます。
ナビゲーション ワークフロー
あるユーザーが、「 ハートビート 」などの医療タームを検索します。アプリケーションは、検索プロジェクションタームをクエリし、SNOMED 概念でグループ化された概念レベルの結果を返します。
各結果には次の内容が表示されます。
ユーザー クエリに一致したターム
概念に希望する表示
形式:
SNID 識別子
アクティブなステータス
セマンティック カテゴリ
リリース
検索の出所
その後、ユーザーは概念フォーカス ビューを開くことができます。このビューには、概念の概要、説明、親概念、子概念、関係、子孫、未加工のドキュメント、 API例が表示されます。
Navigator は次の検索モードをサポートします。
語彙検索では、 MongoDB Search を使用して、完全一致のターム、シノニム(同意語)、形式名、識別子、接頭辞、ファジー テキストを検索します。
セマンティック検索ではMongoDB
embedText4ベクトル検索が使用されます。これにより、タームの フィールドがvage- 参照モデルに自動的に埋め込まれます。そのため、別のベクトルストアや埋め込みパイプラインを必要とせずに、同じコレクションで実行されることを意味するによる検索。ハイブリッド検索は、語彙検索とベクトル検索を組み合わせたものです。 MongoDB クロスエンコードのリランクカーが設定されている場合、アプリケーションは統合された候補プールを再ランク付けします。そうでない場合は、統合順序に戻ります。
検索画面はセマンティック スコープもサポートしています。結果は、診断結果、手順、ボディ構造、サブインスタンスなど、広範な医療領域に結果を制限できます。また、<< 404684003 などの降順式を使用して、結果を 1 つの概念とより具体的な概念に制限することもできます。
図の 3。 ECL スコープによる拡張セマンティック検索
フィールド クリティカル ノート ワークフロー
ユーザーがクリティカル ノートを貼り付けます。ワークフローは、現在の結果、否定、履歴、ファミリー 履歴、計画アクション、不正確性、一時式などの診断名やコンテキスト キューを抽出します。
次に、ワークフローはMongoDB .を通じて SDNED ct 候補を検索します。エビクションの範囲とコンテキストを持つ検討可能な候補が返されます。レビューアは、レビューの各候補を受け入れ、拒否、またはマークできます。
任意の LM 階層は、テキストの解釈と候補の選択に役立ちます。 MongoDBによって返された候補のみを選択する必要があります。新しい SNMP 識別子を作成したり、レビューなしで永続的なコーディングをしてはなりません。
レビュー後、アプリケーションは確認されたコーディングを grounded_notes に保存します。保存されたそれぞれのコーディングには、エビクションの範囲、選択された STOPED の概念、アサーション、サブジェクト、ステータス、祖先 ID が含まれます。このパターンにより、下流のアプリケーションは意味をクエリできます。例、アプリケーションは、選択された医療概念の許容された子孫を含む、確認済みのノートを見つけることができます。
図の 4。クリティカル ノートを修正 - LM プロセス
図の 5。 MongoDBでターム検索後にクリティカル ノートを検証します
APIスニペットの例
このソリューションは、ナビゲーション ワークフローと クリティカル ノート ワークフローの両方の API を公開します。これらのスニペットは、主要なリクエストパターンを示します。
検索 SNMP 用語と概念
このエンドポイントを使用して、タームレベルのプロジェクションを検索します。レスポンスは、一致するタームを SNot の概念にグループ化します。一致するタームの概念レベルの結果、優先表示、セマンティック カテゴリ、検索の出所が返されます。
POST /api/navigator-search { "query": "heart failure", "languageCode": "en", "mode": "lexical", "limit": 24 }
ユーザーが既知のターム、シノニム(同意語)、形式名、または S ODM 識別子で検索する場合は、辞書モードを使用します。 API は、デモがMongoDB ベクトル検索と再ランク付け用に構成されている場合、セマンティック モードとハイブリッド モードもサポートします。
概念とその子孫を拡張する
このエンドポイントを使用して概念セットを展開します。 SNID は ECL を使用して一連の概念を説明します。この例では 、式<< 84114007 は「 ハートビート とそれ以下のすべてのより具体的な概念」を意味します。
POST /api/ecl { "expr": "<< 84114007", "languageCode": "en", "limit": 200 }
実装は、 MongoDBの事前計算された祖先配列を使用してこの式を解決します。このパターンにより、デモ アーキテクチャ用の別のグラフデータベースが必要になることなく、一般的な後続クエリが高速化されます。
Sがあります
このエンドポイントを使用して、テキストから候補となる名を抽出し、 MongoDBから境界のある S同期 候補を検索します。レスポンスは、コードを永続化せずにレビュー可能な出力を自動的に生成します。
POST /api/nlp-map { "text": "Patient with chronic systolic heart failure and type 2 diabetes. No evidence of chest pain at present.", "languageCode": "en" }
グラウンド ワークフローは、否定、履歴、ファミリー 履歴、プラン、時間式などの医療的な言及とコンテキストを検出します。 MongoDB は、候補 S Not の概念を提供します。レプリカは最終コーディングを確認します。
レビューアに確認されたコーディングを保存する
レビュー後にこのエンドポイントを使用します。アプリケーションは確認されたコーディングのみを保存し、それを祖先 ID で強化して、下流のセマンティック クエリを可能にします。
POST /api/coding-confirm { "text": "Patient with heart failure.", "languageCode": "en", "codings": [ { "mention": "heart failure", "conceptId": "84114007", "displayTerm": "Heart failure", "semanticTag": "disorder", "accepted": true } ] }
保存されたドキュメントには、選択した SNOD の概念、検証テキスト、アサーションのコンテキスト、レビューのステータス、祖先 ID が保持されます。このスキーマ、下流クエリは一般的な概念または特定の子孫によってノートを検索できるようになります。
意味を使用して記述されたノートをクエリ
このエンドポイントを使用して、選択した SNot の概念またはその名を含む確認済みのノートを検索します。
POST /api/grounded-corpus { "conceptId": "84114007", "includeDescendants": true, "limit": 10 }
このエンドポイントは、コーディングが確認された祖先 ID を保存する下流の値を示します。アプリケーションは、正確な単語のみを検索するのではなく、医療上の意味をクエリできます。
データモデルアプローチ
SNID ct は接続されたデータを表します。医療概念には、人間が判読できるタームが多数含まれ、より広範な概念がいくつかあり、より具体的な概念が多く、他の概念との形式的な関係を含むことができます。
MongoDB はこのパターンに適しています。これは、ほとんどの運用アプリケーションでは概念形式のビューが必要なためです。ユーザーが概念を開くとき、アプリケーションは概念識別子、表示ターム、説明、親、子、祖先パス、関係、アクティブなステータス、メタデータのリリースを一緒に必要とします。
このアプローチでは、グラフ構造は削除されません。関係を保存し、一般的なナビゲーション パターンにクエリ対応の配列を追加します。例、各概念ドキュメントはその直接親とその祖先パスを保存できます。このパターンにより、アプリケーションは、インデックス付きのMongoDBクエリを持つより広範な概念と子概念、および子孫を検索できます。
Why This model Works
以下の設計上の選択は、高速検索、正確な検索、高速階層トラバーサル、監査可能なコーディングなどの特定の運用要件に対処しています。
概念データをまとめて保持: 用語アプリケーションでは、多くの場合、完全な概念カードをレンダリングする必要があります。説明、関係の概要、親 ID、子 ID、祖先 ID を埋め込むと、最も有用な操作ビューが 1 つのドキュメントに保持されます。
検索とソース タームを区別する: 検索はターム レベルであり、概念レベルではありません。 1 つの概念が、言語や地域全体で多くの説明を持つことができます。タームレベルのプロジェクションでは、 MongoDB Search とMongoDB ベクトル検索 は、標準の概念を返しながら、一致した正確なタームをランク付けできます。
階層パスを事前コンピューティングする: SNID ct には豊富な階層があります。多くのアプリケーションでは、この概念とその下にあるより具体的な概念をすべて検索するなど、高速 子孫クエリ が必要です。各概念と確認済みの各診断コーディングに祖先 ID を保存します。次に、一般的な階層クエリに マルチキー インデックス を使用します。
レビューされたコーディングで証明機関を保存する:アプリケーションがそのソースを説明できる場合、コーディングはより多くの値を提供します。選択した SNO可能な 概念を、クリティカル テキストの範囲、アサーション ステータス、サブジェクト コンテキスト、およびレプリカ ステータスとともに保存します。このパターンは、監査する、 レビュー 、および ダウンストリーム クエリをサポートします。
図の 6。 S加えられた ct メタモデルとMongoDBコレクションのマッピング
S加えられた ct メタモデルとMongoDBコレクションのマッピング
このソリューションでは、3 つの用語コレクションと、別の テレメトリコレクションを使用します。以下のセクションでは、ドキュメントの形状とそれぞれの主要フィールドについて説明します。
snoted-irbdコレクション
SNID ct の概念のソース ビューとして snomed-irbd を使用します。各ドキュメントは1 つのリリース内の 1 つの概念を表し、その TF2 の説明、関係、親概念、子概念、アクティブなステータス、リリースメタデータ、階層とサブサブスクリプションを強化する事前計算された祖先閉じるを定義します。
{ "conceptId": "44054006", "active": true, "effectiveTime": "20020131", "moduleId": "900000000000207008", "definitionStatusId": "900000000000074008", "descriptions": [ { "id": "73465010", "term": "Diabetes mellitus type II", "typeId": "900000000000013009", "languageCode": "en", "acceptabilityMap": { "900000000000509007": "..." } } ], "relationships": [ { "typeId": "116680003", "destinationId": "73211009", "relationshipGroup": "0", "active": "1" } ], "inferredParentIds": ["73211009"], "inferredAncestorIds": ["73211009", "64572001", "138875005"], "inferredChildIds": ["..."], "relationshipAttributeKeys": ["116680003|73211009"], "memberOfRefsetIds": ["..."], "releaseId": "20260601", "releaseDate": "2026-06-01T00:00:00.000Z", "releaseAppliedAt": "2026-07-06T00:00:00.000Z" }
snomed-irdb には、次の関連フィールドが含まれています。
conceptId: SCOMMED 識別子(SCID)を表します。安定版概念 ID 。descriptions[]: 概念の人間が判読可能な名前を表します。各名前はシノニム(同意語)または完全に指定された名前(形式メトリクス名)であり、 はその言語と、その言語で優先され、または受け入れられるかどうかを記録します。これらのエントリは、SNOMED ct リリース ファイルの説明行にマップされますrelationships[]: 概念の他の概念との関係を表します。 「 は です」関係 は、階層を定義します。属性関係は、サイトまたは 因果エージェントの検索などの診断プロパティを定義します。relationshipAttributeKeys[]: 各関係関係を単一のインデックス値として表します。これにより、アプリケーションは特定の属性で概念を検索し、フルスキャンではなくインデックスを使用して結果を返すことができます。inferredParentIds、ChildIds、AncestorIds:グラフトラバーサルのないサブスクリプション用の境界のある事前計算包含を表します。子孫はすべての親概念に保存されるのではなく、{ inferredAncestorIds: conceptId }句を使用してクエリされます。
SNMP ターム検索コレクションテスト
検索プロジェクションとして snomed-term-search を使用します。各ドキュメントは、1 つの言語と 1 つのリリースの 1 つのアクティブな説明タームを表し、 MongoDB Search では非正規化され、スコープ指定されたフィルタリング、自動埋め込みMongoDB ベクトル検索 を実行します。この構造により、ユーザーは シノニム(同意語) 、省略記号、 ローカライズされたターム、形式医療名、または自然言語フレーズを入力できます。
検索ドキュメントは、各検索結果を自己完結にするために概念コンテキストを繰り返します。すべての候補者の完全な概念ドキュメントを取得することなく、一致したターム、優先表示、セマンティック カテゴリ、アクティブなステータス、リリース、および階層スコープを表示できます。
{ "conceptId": "44054006", "descriptionId": "116680003", "term": "Type 2 diabetes mellitus", "preferredTerm": "Type 2 diabetes mellitus", "fsn": "Type 2 diabetes mellitus (disorder)", "semanticTag": "disorder", "semanticTagKey":"disorder", "termType": "synonym", "preferred": true, "languageCode": "en", "definitionStatusId": "900000000000074008", "moduleId": "900000000000207008", "effectiveTime": "20020131", "parentIds": ["73211009"], "ancestorIds": ["404684003", "73211009"], "topRoots": ["404684003"], "areaTags": ["disorder"], "releaseId": "20260601", "releaseDate": "2026-06-01T00:00:00.000Z", "embedText": "Type 2 diabetes mellitus | disorder | ..." }
snomed-term-searchコレクションには、次の関連フィールドが含まれています。
conceptId、descriptionId: 概念と具体的な説明に戻る。term、preferredTerm、fsn: 一致するタームと概念のコンテキストが提供されるため、検索結果は自己完結型になります。semanticTag、semanticTagKey、termType、preferred: フィルタリングとランキング シグナルを提供します。parentIds、ancestorIds、topRoots、areaTags:snomed-irbdに結合されないスコープ フィルター。releaseId、releaseDate、effectiveTime: リリース スコープの検索とリリース メンテナンスの可視性を提供します。embedText: MongoDB がベクトル検索に使用するフィールドを含みます。
このスニペットは、最も重要な設計上の選択について説明しています。検索プロジェクションはタームレベルです。これは、「高有用
自動埋め込みを使用すると、人間が判読できる embedTextフィールドのみが保存されます。MongoDB MongoDB ベクトル検索 はそのフィールドの埋め込みを自動的に生成および維持します。セマンティックレイヤーは同じコレクションに存在するため、別の埋め込みパイプラインまたはベクトルストアは必要ありません。
grounded_notesコレクション
レビュー後にアプリケーション出力を保存するには、grounded_notes を使用します。これらのドキュメントは用語データソースではありません。各ドキュメントには、次のデータが保存されています。
ソーステキスト
選択した SNOMED ct の概念
証明範囲
存在または存在しないなどのアサーション コンテキスト
対象者やドキュメントなどのサブジェクトコンテキスト
レビュー ステータス
祖先 ID
以下の例は、この形状を示しています。
{ "tenantId": "demo-hospital", "languageCode": "en", "text": "Patient with type 2 diabetes mellitus.", "codings": [ { "conceptId": "44054006", "system": "http://snomed.info/sct", "display": "Type 2 diabetes mellitus", "semanticTag": "disorder", "role": "principal", "target": "Condition.code", "assertion": "present", "subject": "patient", "status": "accepted", "evidence": { "text": "diabetes mellitus tipo 2" }, "ancestorIds": ["44054006","75934005"] } ], "recordedAt": "2026-07-07T16:22:47.210Z", "createdAt": { "$date": "2026-07-07T16:22:47.210Z" } }
この設計は、医療テキストをクエリ可能な医療意味に変換します。アプリケーションは、SDNMED ct 階層において、概念またはより具体的な概念を含む確認済みのノートを後で検索できます。各コーディングはその証明性を保持するため、レプリカユーザーはすべてのコードを生成した正確なテキストとコンテキストを追跡でき、監査すると確実なダウンストリームの使用をサポートします。
テレメトリコレクション
検索イベント、階層リクエスト、ログ記録アクティビティ、フィードバック、診断には別の telemetryコレクションを使用します。概念データモデル の外部でテレメトリ データを保持します。
ソリューションのビルド
パブリックリポジトリには、アプリケーションコード、スクリプト、サンプルデータセットが含まれています。ライセンスされたユーザーは、サンプルデータセット を独自の SNMP TT リリース ファイルに置き換えることができます。
前提条件
MongoDB Search が有効になっているMongoDB Atlasクラスター。
ライセンスされた SNID ct リリースまたはデモ目的の小規模なサンプルデータセットにアクセスします。
デモアプリケーション用のNode.jsとnpm 。
オプション: セマンティック検索用のMongoDB ベクトル検索 の自動埋め込み構成。
任意: ハイブリッドモード用の再ランク付けキーまたはその他の構成済みリランク付けを使用します。
任意: 境界のある抽出と候補者の曖昧さ回避のための LM ゲートウェイ。
手順
標準の概念ドキュメントを準備します
標準コレクションには、各概念が 概念中心ドキュメントとして保存され、その説明、関係、親、祖先、階層情報が含まれます。このスキーマには、アクティブおよび非アクティブのステータス、リリースを認識する検索、説明検査、関係ナビゲーションをサポートするためのソースメタデータが含まれています。
コレクションを読み込むと、一貫性のある検索のためにフィールドを正規化し、各ドキュメントのリリース バージョンをレコード。これにより、リリース間で結果が再現されます。
NORMALIZE_APPLY=true npm run model:harden # normalize SCTIDs / strings RELEASE_ID_TARGET=20260601 RELEASE_ID_OVERWRITE=true npm run releaseid:stamp
サイドカータームを構築
標準概念コレクションから snomed-term-search を生成します。サイドカーには、リリース、言語、説明、概念ごとに 1 つのアクティブなタームドキュメントが保存されます。キー概念のコンテキストが繰り返されるため、結果カードごとに検索結果を概念コレクションに結合する必要がありません。
# Curated demo branches TERM_PROJECTION_SCOPE=demo npm run terms:rebuild # Full licensed local release TERM_PROJECTION_SCOPE=full npm run terms:rebuild # Replace documents while preserving index definitions when possible npm run terms:rebuild:replace
MongoDBインデックスの作成
概念検索と階層展開のために b木 インデックスを作成します。句読点検索用のMongoDB Searchインデックスを作成します。セマンティック モードまたはハイブリッドモードを使用する場合は、セマンティック検索用にMongoDB ベクトル検索インデックスを作成します。
npm run indexes:build
次の推奨ソースコレクションインデックスを使用します。
db.getCollection("snomed-irbd").createIndex({ releaseId: 1, conceptId: 1 }) db.getCollection("snomed-irbd").createIndex({ releaseId: 1, active: 1, conceptId: 1 }) db.getCollection("snomed-irbd").createIndex({ releaseId: 1, inferredAncestorIds: 1, active: 1 })
セマンティック検索では、デフォルトのモデルとして vage-4 のMongoDB ベクトル検索自動埋め込みを使用します。ハイブリッドモードでは、Vorage rerank-2.5 リランク が追加されます。自動埋め込みのないクラスターには手動の Vyage 埋め込みフォールバックが存在します。
セマンティック検索と の構成再ランキング
セマンティック検索とハイブリッド検索では、 MongoDB ベクトル検索 の自動埋め込みが使用されます。クラスターに構成された埋め込みモデルを使用して、embedTextフィールドにベクトル検索インデックスを作成します。
ハイブリッドモードでは、任意の 投票リランク が追加されます。 VYAGE_API_KEY を有効にするには、キーがない場合でも、ハイブリッド検索は引き続き機能し、統合順序に戻ります。再ランク付けは、構成されたベースURL、次に https://www.mongodb.com/v }1 に対応するMongoDB がホストする Vyage ゲートウェイ 、次に MongoDB のネイティブ プラットフォーム エンドポイントを試行します。
デモアプリケーションの実行
npm install npm run dev
クリーンな .env.localファイルを使用します。運用上のデフォルトは、環境変数の長いリストとしてではなく、コードまたは構成ファイルに保持します。
MONGODB_URI= MONGODB_DB=terminology VOYAGE_API_KEY= ENABLE_LLM_GROUNDING=false LLM_BASE_URL= LLM_API_KEY= LLM_AUTH_HEADER=api-key LLM_GROUNDING_MODEL=gpt-5.5 # Semantic / hybrid search MONGODB_VECTOR_MODE=autoEmbed MONGODB_VECTOR_INDEX=snomed_voyage_idx MONGODB_VECTOR_AUTO_EMBED_MODEL=voyage-4 VOYAGE_API_KEY= VOYAGE_RERANK_MODEL=rerank-2.5
キーポイント
MongoDB Atlasでの SNMP ct の運用 : 検索、階層、関係、アプリケーションワークフローをサポートするドキュメント集約型運用モデルを通じて、グラフ作成の医療用語を提供します。
ターム ナビゲーションとセマンティック検索を統合: MongoDB Search とMongoDB ベクトル検索を使用して、ユーザーが同じ Atlas ベースのサービスから SNID ct の概念を検索、検査、スコープ設定できるようにします。
確認済みのエビクションを使用して医療テキストをフィールド化します。用語サービスを使用して、クリティカル ノートから SNID ct 候補を提案し、エビクション、コンテキスト、および祖先パスとともに確認済みのコーディングを保存します。
作成者
Francesc Mateu Amengual, MongoDB
Giovanni Rodríguez, MongoDB
Diego Canales, MongoDB
詳細
MongoDB Search の概要: MongoDB が全文検索、オートコンプリート、フィルタリング、スコアリング、検索駆動型アプリケーションエクスペリエンスをサポートする方法を学びます。
MongoDB ベクトル検索 の概要: MongoDB がAtlas 内でセマンティック検索とベクトル検索をどのようにサポートしているかを学びます。
SNOMED CMK の取得: 組織が STOPOED CMK にアクセスし、国または地域のライセンス パスを理解する方法を確認します。