ユースケース: 接続されたヘルス、モダナイゼーション、シングルビュー
製品: MongoDB Atlas、 MongoDB Atlas Charts、 MongoDB時系列、 MongoDB Queryable Encryption
ソリューション概要
ヘルスチェックプロバイダーは、厳格な品質要件の下で稼働します。 CMS やメジャー ヘルス プランを含む、認証局と保証者は、顧客に提供するサービスの品質を測定、追跡、報告することをプロバイダーに要求します。これらの規則に従うと、これらの基準を満たす組織の場合、返される金額が高くなるや、値を満たさない場合はペナルティが確保されるなど、金銭上の影響が生じます。
HEDIS は品質要件を定義します。この測定セットは、プロバイダーが各ユーザーに対して完了する必要がある診断アクティビティを指定します。例、 、HbA1 c、になります のドキュメントの評価、発音区別符号の検査などです。ユーザが測定期間内に必要なアクティビティを受け取らない場合、バイナリ ギャップが開きます。
キャパシティーの違いは、コンプライアンスの問題だけではありません。検出されないままでは、人の結果は低下し、医療機関の読み取り率が高くなり、障害が進行し、防止可能な複合化が発生します。また、CMS スター評価が低くなり、提供されたサービスの量ではなく、ユーザーの結果に基づいてプロバイダーが支払いされる契約では、回収漏れ費用がありません。
ほとんどの組織は、ケア ギャップが存在することを認識しています。ただし、運用上の課題があり ます。 FHIR データストアにより、医療ソフトウェアと EHP システムが安全に通信してデータを共有できるようになりますが、リアルタイムで運用される診断クエリには最適化されていません。ライブ ワークロードでは、 クエリレイテンシが高い 、ネストされたリソース集計のパフォーマンスが低下、ネイティブの時系列サポートがない場合、クエリ量が増加することでコストが上昇するなど、予測可能なボトルネックが発生します。その結果、コーディネーターはこれらのシステムから十分な速度でデータを取得できず、 ヘッドディスクコンプライアンス を追跡し、ユーザー差を閉じて、時間の間隔を長くすることができません。
これらのパフォーマンスのボトルネックを解決するために、このソリューションでは FHIR データデータベース上に構築され、 運用レイヤーとしてMongoDB Atlasによって強化された CDS システムを提示します。このアーキテクチャでは、FHIR が相互運用性とデータ交換を処理するのに対し、 MongoDB Atlas はリアルタイムバイナリ モニタリング、HEDS キャパシティー ギャップ計算、診断ワークフローを強化します。このフレームワークを使用すると、ケア コーディネーターは低レイテンシのデータアクセスとリアルタイムの決定サポートを点で取得します。
図の 1。 MongoDBによるリアルタイム診断サポートの利点
参照アーキテクチャ
このソリューションは、化可能なデバイスとヘルスチェック システムから医療データを取り込み、データ ストアと 運用レイヤーを通じてそれをルーティングして、以下のアーキテクチャ図に示すように、コーディネーターを対象とするリアルタイム決定のサポートを提供します。
図2。高レベルのアーキテクチャ
FHIR データストアレイヤーには、次のような未加工の FHIR R4 リソースが保持されます。
PatientConditionMedicationRequestObservationEncounterAllergyIntolerance
このレイヤーはコンプライアンス検証とR4 正規化を処理し、HIPAA および HITRUSコンプライアンス要件の下での相互運用性のための標準的なソースとして機能します。
MongoDB Atlas は運用レイヤーを提供します。医療決定のサポートに必要なクエリ、集計、リアルタイムワークフロー用に最適化された非正規化されたドキュメントと時系列データを保存します。
この保存された医療データをリアルタイムアクションに変換するために、プラットフォームは次のコンポーネントをオーケストレーションします。
MongoDB Atlas は、すべての医療データを柔軟な多形スキーマに保存する運用基盤として機能します。
データ生成パイプラインは FHIR データストアから読み取り、 MongoDB Atlasに医療レコード、バイナル、CDS ルールを入力します。
このシステムには、医療上の決定をサポートするために
AlertEngineとQualityEnginePythonモジュールが組み込まれています。AlertEngineはライブ バイナリを監視して即座のクリティカル リスクを発生させます。また、QualityEngineは HEDISコンプライアンスギャップの診断履歴を評価します。どちらのエンジンもMongoDB Atlasのpatient_360ドキュメントに結果を書き込みます。最後に、キャパシティー ワークフローは、エンジンの結果をキャパシティー コーディネーターに直接渡します。例、
AlertEngineが 重大なアラートを起動すると、キャパシティー ワークフローはオープンなギャップを優先するため、コーディネーターは緊急のケースが最初に見つかるようになります。
次のセクションでは、このフローの各部分について説明します。
MongoDB Atlas: キー機能
複雑な医療ワークロード用に設計されているMongoDB Atlas は、高度に最適化されたネイティブ データのエコシステムを持つレガシーシステムを置き換えます。以下は、プラットフォームがリアルタイム決定サポートを提供できるようにする主要機能の概要です。
図の 3。 Atlas キーの機能
柔軟なドキュメントモデル: patient_360 collectionは、人口統計、条件、変数、ラボ、バイパスの概要、クエリのギャップ、アラート、パーソナライズされたしきい値、データプロバイダーなど、完全なレコードを1 つのドキュメントに保存します。 FHIR ストアに対する複数リソースの結合を必要とする質問に、単一のドキュメントが答えます。
時系列コレクション: synthetic_vitalsコレクションは、 MongoDB のネイティブ時系列コレクションを使用してデバイスのデータを保存します。これらのコレクションは、自動データバケット、効率的な範囲クエリ、高頻度の時間順データ用の専用ストレージを提供します。
変更ストリーム: プラットフォームは 変更ストリーム を使用して、新しいバイマリにリアルタイムで対応します。読み取りが達すると、システムは CDS ルールを評価し、ポーリングせずに診断アラートを生成します。
クエリ可能な暗号化: MongoDB Queryable Encryption は、保管中の機密性の高いユーザー フィールドを保護します。このアプリケーションは、プレーンテキストを公開せずに暗号化された PHI フィールドをクエリするため、HIPAA 要件を満たし、別の暗号化レイヤーが不要になります。
集計パイプライン: このフレームワークは、ダッシュボード集計、キャパシティーの計算、重要な傾向分析、および HEDIS スコアリングを処理し、複雑な医療クエリをミリ秒単位で解決します。
AIと分析の構造: patient_360ドキュメントは、正規化された診断結果、構造化された証明機関、メタデータの出所を、追加の変換なしで下流のAIと分析パイプラインに提供します。
データ生成パイプライン
初期化時に、このソリューションは マルチステップパイプラインを使用して CDS システムをシードおよびアクティブ化します。次に示すように、
図の 4。データ生成パイプライン
データ生成パイプラインは、合成およびマテリアライズドの医療データを作成し、パーソナライズされたしきい値とバイナリを計算し、リアルタイムのモニタリングを開始する初期化シーケンスをドライバーします。パイプラインは、次のように動作します。
FHIR ユーザ バンドルを生成します。条件、医療、検査結果、エンタープライズ、エラーを含む FHIR R トランザクション4 バンドルを作成します。これらのバンドルは FHIR データ ストアに保存され、 相互運用性レイヤーとして機能します。
バイパス履歴を生成します: 24クライアントごとに 時間の時系列バイザーサインを生成し、正常、低下、または急激な上昇する自然パターンを表します。データは
synthetic_vitals時系列コレクションに保存されます。customer_360 ドキュメントをマテリアライズドします:
patient_360MongoDB Atlasの各 FHIR バンドルを非正規化された ドキュメントに変換します。変換には、ソースdata_provenanceFHIRレコードにリンクする ブロックが含まれています。CDS ルールを参照してください: 診断サポートのルール定義を
cds_rulesコレクションに挿入します。パーソナライズされたしきい値を計算します: 有効な有効期限を計算します。これらの結果は
patient_360ドキュメントに保存されます。CDS
AlertEnginealertsルールを評価します。現在のバイナルに対して を実行し、生成されたアラートを コレクションに書込みます 。HEDIS キャパシティー
QualityEnginepatient_360ギャップを計算します。各クライアントの診断履歴に対して を実行し、構造化されたケア ギャップの結果を ドキュメントに書込みます。プロバイダー属性をシード:
attributionsコレクションでプロバイダーと対象の属性関係を生成し、ギャップ結果とアラートを受け取るプロバイダーを決定します。リアルタイムモニタリングを開始: バイナル シミュレーション ワーカーを有効にし、サーバーが送信したイベントを介してライブ バイナル サイン データを医療プラットフォームにストリーミング開始します。
CDS エンジン
CDS エンジンは対象データを分析し、医療チームに実行可能なインサイトを提供します。このソリューションは、医療モニタリングを品質測定計算から 2 つの独立したエンジンに分離します。このアーキテクチャ パターンは、リアルタイム運用性を実現するための HL7 FHIR アクティベーション プログラムであるDa MongoDB Atlas に準拠しています。
AlertEngine: リアルタイムしきい値監視
AlertEngine は CDS ルールに対して受信バイナルを評価し、診断アラートを生成します。次の CDS ルールを検証します。
ベータ ブロック対応のタックスクラウド: パーソナライズされたしきい値を超えるとハートビートを評価します。
多要素低クラスター: 2ハートビート、ドキュメント数:65 ドキュメント、ドキュメント、の順に集計された条件をチェックします。
フェデレーティッドドキュメント: 22組織ドキュメントが30 1 分間維持されている状態で、 を超える排他的レートをモニターします。
分裂警告: デプロイされた SIRS 条件の 3 つ以上の存在を制御し、HTTP をリスク ステージとして使用します。
比較コンテキスト: タイプのドキュメントと条件プロファイルを評価し、さまざまな重大度警告を生成します。
AlertEngine は、単一の読み取りではなく、ブシャードごとに持続的なチェックを行います。スパイクの検出には 2 時間のベースラインウィンドウを使用し、低下の検出には 4 時間の傾向ウィンドウを使用します。エンジンはすべてのアラートにコンテキストを適用します。つまり、同じハートレート読み取りによって、ベータ ブロッキングユーザーには重要なアラートが生成され、正常なユーザーには低重大度フラグが生成されます。
qualityEngine: HEDIS キャパシティー ギャップ計算
QualityEngineは、各ユーザーが ヘッドディスク の測定期間内に必要な医療を受けられたかどうかを判断します。このエンジンは、 タイプの2 認証局 および CKD を持つユーザーを対象とし、指定された 10 進数に対してその診断履歴を評価します。
次の表は、これらの HEDIS の測定値を示しています。
メジャー | コード | 必要なエビクション |
|---|---|---|
包括的な発音区別テスト - HbA1c テスト | CDC-HBA | HbA1c ラボの結果 |
ダイアログ ポイントの 1 つ | KED | eGFR および uACR ラボ の結果 |
高負荷の降格の制御 | CBP | エンタープライズ |
正常値 | SPD | 総コレクションの結果 |
ダイアログ ポイントの検索 | EED | エンタープライズ |
ケア コーディネーターは、QualityEngine の結果を使用して、どのユーザーが介入を必要とするかを識別し、ギャップが品質スコアとリ金額に影響を与える前にアウトバウンドを優先します。各結果には、ギャップ ステータス、見つかった検証、欠落している検証、 推奨アクション、優先順位スコア、再計算日付が含まれます。さらに、このエンジンは支払いシステムとの相互運用性を確保するために MeasureReport バンドルを返す FHIR 準拠のエンドポイントを公開します。
ケア ギャップ ワークフロー
ケア ワークフローは、医療組織がユーザーの実際の医療と確立された医療ガイドラインとの間の相違を識別、追跡、解決するために使用するシステム的なプロセスとして機能します。インスタンス検出のギャップは、次のアクションで構成される識別から閉じまでの構造化されたパスに従います。
評価:
QualityEngineは、HEDS 測定基準に対して各ユーザーの診断履歴を評価します。書込み: システムは、オープン ギャップを
patient_360ドキュメントに、関連するエビクション、 推奨アクション、優先順位とともに書き込みます。レビュー: ケア コーディネーターは、優先順位と超過期間でソートされて、クリティカル プラットフォーム内のオープンなギャップをレビューします。
間隔: KED や CDC-HBA などのアクション可能なギャップの場合、プラットフォームは構造化された介入ワークスペースを開き、コーディネーターはラボを順序付け、完了を記録、または追跡スケジュールをスケジュールします。
閉じる: 介入が完了すると、 ドキュメント内のギャップ
patient_360ステータスが更新され、QualityEngineは次のサイクルで再評価されます。エスカレーション: が
AlertEngine診断アラートを検出すると、関連するオープン ギャップの優先順位を引き上げ、 ケアチームに通知します。関連するギャップのないアラートは(セカンダリ警告など)、独立した診断通知として医療チームに直接ルーティングされます。
データモデルアプローチ
単一のユーザーの FHIR R4トランザクション バンドルには、20 を超える個別のリソースが含まれています。インスラインを使用している 2 型のインスタンスが 65 を超え、低クラスターのリスクがあるかどうかを判断するには、システムは次の条件を満たす必要があります。
FHIR ストアでクエリを実行して、
Patientリソースを取得します。そのリソースを複数の
ConditionとMedicationRequestリソースと相関させます。結合された結果全体にルール ロジックを適用します。
ライブ本番のワークロードでは、このトラバーサルはレイテンシを追加し、予測できないクエリ時間を生成します。例、このソリューションのクライアントは、最大 5 つのアクティブな条件、6 つの医療リソース、8 つの検査結果リソース、エンタープライズ、および診断ノートを持つことができ、これらはすべて CDS ルールで評価する必要があります。
このオーバーヘッドをバイパスするために、patient_360ドキュメントはこの断片化されたデータを 1 つのドキュメントに統合し、トラバーサルを完全に排除します。 1 人のユーザーのすべての医療データは、次のように構造化された 1 つのドキュメントに存在します。
patient_id: ソース FHIRレコードにリンクされた一意の対象識別子。demographics: エイリアス、性、暗号化された PHI フィールド(名前、MRN、誕生日)。conditions: SNMP 日付とオンセットの日付を持つアクティブな診断。medications: 用量、ルート、頻度を持つ有効な手順。labs: 値、単位、および参照範囲を持つ結果。flags: 条件と認可に基づき計算されたブール値。personalized_thresholds: 有効な内訳の有効期限。vitals_summary: 最新の読み取り値、4 時間の平均、24 時間の傾向。active_alerts:AlertEngineによって生成された CDS アラート。care_gaps:QualityEngineによって計算された HEDIS 測定の結果。data_provenance: ソース FHIRコレクション、ユーザーID、マテリアライズドメタデータ。
ドキュメント配列としての医療データ
patient_360ドキュメントでは、各条件は conditions 配列のエントリを表し、各内訳のドキュメントは medications 配列のエントリを表します。以下に示すように、このドキュメントにはクリティカル エンティティが別々のテーブルに分裂するのではなく、使用される形状で保存されています。
{ "conditions": [ { "code": "44054006", "display": "Type 2 diabetes mellitus", "clinical_status": "active", "onset_date": "2017-10-21T21:29:59.716351+00:00" }, { "code": "433144002", "display": "Chronic kidney disease stage 3", "clinical_status": "active", "onset_date": "2023-09-12T21:29:59.716372+00:00" } ], "medications": [ { "display": "Insulin glargine 100 units/mL injection", "dose": "20.0 units", "route": "subcutaneous", "frequency": "once daily at bedtime", "status": "active" }, { "display": "Atenolol 50 mg oral tablet", "dose": "50.0 mg", "route": "oral", "frequency": "once daily", "status": "active" } ] }
計算された操作フィールド
FHIR バンドルには標準的な相互運用性データが含まれていますが、patient_360ドキュメントには、クリティカル フラグ、キャパシティー結果、パーソナライズされたしきい値、アクティブなアラートなど、FHIR が定義していない運用フィールドが組み込まれています。
インスタンス、マテリアライズドパイプライン は、より広範なデータ生成パイプラインに埋め込まれ、FHIR バンドルから診断フラグを計算し、それを patient_360ドキュメントに直接書込みます。 AlertEngine はこれらのフラグを読み取り、次のようなクライアントに適用される CDS ルールを判断します。
flags.has_beta_blocker: ベータ ブロックのハートレート ルールを有効にします。flags.has_insulin: 多要素低クラスター ルールを有効にします。flags.has_ckd: CKD メタデータリこの条件と置換ルールを有効にします。flags.condition_codes: すべてのアクティブな条件の STOPOED コード。
結果のギャップは同じアプローチを使用します。マテリアライズドパイプラインはクエリ ギャップの結果を計算し、それを直接 patient_360ドキュメントに追加します。計算された各 HEDIS 測定値は、関連付けられた status、priority、evidence、recommended_action とともに care_gaps 配列内に保存されます。標準の FHIR とは異なり、ドキュメントモデルはこの情報をユーザーの 診断レコードと一緒に保存します。この構造の例を以下に示します。
{ "care_gaps": [ { "hedis_measure": "CDC-HBA", "measure_name": "Comprehensive Diabetes Care — HbA1c Testing", "status": "open", "days_overdue": 34, "priority": "high", "evidence": { "found": ["HbA1c 5.13% (2025-10-07)"], "missing": [] }, "recommended_action": "Schedule or order an HbA1c follow-up" } ] }
このアプローチは柔軟性を高めます。医療要件が変更された場合は、ドキュメントを拡張できます。新しい CDS ルールは、既存のフィールドに影響を与えずに新しいフィールドを同じドキュメントに書込みます。
ソース レコードへのトレーサビリティ
patient_360ドキュメントは派生操作ビュー を構成し、 FHIRレコードの置き換えではありません。マテリアライズドパイプラインは、FHIR リソースからこのビューを生成します。医療的な決定やクエリのギャップの結果を監査するために、すべてのドキュメントには data_provenance ブロックが含まれています。
{ "data_provenance": { "layer": "cds_operational", "source_fhir_collection": "synthetic_patients", "source_patient_id": "1b3bbaec-def8-4b55-8e87-9d04b55d6890", "materialization_version": "1.0", "last_materialized_at": "2026-05-09T21:30:04.873754+00:00", "fhir_resource_count": 22 } }
FHIR データストアは、相互運用性のための真実の標準ソースであり続けますが、 MongoDB Atlas は運用ビューを保持し、ソースデータへの直接リンクを維持します。
ドキュメントモデル内の暗号化されたフィールド
医療機関規則では、アプリケーションは PHI を暗号化する必要があります。一般的なアプローチでは、暗号化された PHI を別のシステムに保存し、必要な場合にのみ取得します。ただし、このフレームワークでは 2 番目のデータ ストア、別の キー管理レイヤー、すべてのケースで取得されるレコードのレイテンシが増加します。
MongoDB Queryable Encryption、同じドキュメント内で PHI を維持するこのオーバーヘッドが排除されます。ユーザ名、MRN、誕生日などの機密性の高いフィールドを保護し、暗号化のキーで認可されたクライアントアプリケーションのみが読み取れるようにします。ドキュメントの残りの部分は、運用上の使用のために引き続きクエリ可能です。
{ "demographics": { "name": { "$binary": { "base64": "EAXZmoXjO0re...", "subType": "06" } }, "given": { "$binary": { "base64": "EF1RChFVFEJC...", "subType": "06" } }, "family": { "$binary": { "base64": "EK18iT8qVki8...", "subType": "06" } }, "birth_date": { "$binary": { "base64": "EJOsqgLJPEjI...", "subType": "06" } }, "gender": "female", "age": 77 } }
例、AlertEngine や QualityEngine の読み取りフラグ、しきい値、クエリ ギャップ フィールドなどのマイクロサービスは、暗号化されたモニターフィールドを読み取りません。
ソリューションのビルド
GitHubリポジトリを参照してください。リポジトリには、 MongoDB Atlas接続文字列、コンテナ化された配置用のDocker構成、およびローカル配置用の手順が含まれています。
前提条件と設定を構成する
Docker Desktop をインストールして、プラットフォームをコンテナとして実行します。
MongoDB Atlas M10 クラスターを作成し、ネットワークアクセスを構成します。
Atlas クラスターに接続し、接続文字列をコピーします。
[任意] FHIR バンドルを外部 FHIR データストアに永続化する場合は、
HealthLakeサービスへのアクセス権を持つAWSアカウントを作成します。
プラットフォームとデータシードを起動する
ブラウザで http://localhost: を開きます。ログイン時に、デモンストレーション シナリオに一致するメンバーを選択します。8080
Friday(シミュレーションモード): シード処理の前にシミュレーション設定を構成するには、 Fridayプラットフォームは、すべてのデータを自動的に生成してロードするマルチステップパイプラインを実行します。このモードは、リアルタイム重要なストリーミングを使用したライブ デモに使用します。
Digo(既存のデータモード): シミュレーションが実行中いない、過去にシードされたデータセットに接続するには、Diego を選択します。安定したデータに対してプラットフォームをデモする場合、またはシードパイプラインがすでに実行されている場合は、このオプションを使用してください。
クライアント ダッシュボードを探索し、オープン キー ギャップを確認し、バイナル をリアルタイムで監視 します。
キーポイント
MongoDB Atlas をFHIR ワークフローの運用レイヤーとして使用する: MongoDB Atlasの非正規化された運用レイヤーでアプリケーションの FHIR データデータベースを拡張し、リアルタイムスケール クエリ、ギャップ計算、バイナリティのモニタリングを強化します。
ユーザ データを 単一ドキュメントとしてモデル化します。条件、有効期限、有効期限、有効化および無効化されたデータを 1 つのドキュメントにまとめて保存し、アプリケーションが複数のリソースに結合することなく、1 回の読み取りで必要なものをすべて取得できるようにします。
データ取り込み時に診断フラグとしきい値を事前計算: FHIR バンドルから主要な診断結果を抽出し、取り込み時にMongoDB Atlasの計算フィールドとして保存することで、CDS エンジンがソース レコードを再読み込みせずにルールを評価できるようにします。
バイナリ
care_gapsactive_alertsアラートとアラートをドキュメントに直接書き込みます。 や などの配列フィールドを使用して、HEDS の測定結果と診断アラートを 診断レコードと一緒に保存し、1 回のクエリで完全でアクション可能な情報を含む医療コーディネーターを提供します。MongoDB Queryable Encryptionで PHI を保護 : 機密ユーザーのフィールドにクエリ可能な暗号化を適用して、プレーンテキストの露出を回避しつつ PHI を保護し、別の暗号化レイヤーなしで HIPAA 要件を満たします。
作成者
Giovanni Rodríguez Fragoso, MongoDB
Francesc Mateu Amengual, MongoDB
Diego Canales, MongoDB