FHIRの視覚化-医学のIT標準







こんにちは。 私の名前はアンドレイです。医療の分野でITソリューションを作成する会社で働いています。 メインの開発言語として、Clojureと(プロジェクト/モジュールに応じて)Python、Javascript、Go、C、C#、Rust、Objective-Cなどを使用します。



私たちの技術スタックの重要な場所は、 FHIR (Fast Healthcare Interoperability Resources)国際標準によって占められています。これは、電子形式での医療情報の保存/交換/提供の形式を定義し、クライアントとサーバーの相互作用のRESTful API仕様を含みます。



少し前に、任意のFHIRサーバーのリソースの内容を視覚化し、基本的なCRUD操作を実行できるアプリケーションのペットプロジェクトを開始しました。 KDPVは、Patientタイプのリソース要素の編集ページのスクリーンショットを表示します。



猫の下には、簡単な説明とオンラインデモへのリンクがあります。実際のライブFHIRサーバーにタッチし、ボタンを押して、さまざまなリソースを表示/作成/編集し、まったく同じhabraエフェクトを呼び出すこともできます。 )



FHIRについて一言



ここでは規格の説明を書き直しません。希望する人は上記のリンクからすべての詳細を学び、さまざまなリソースに関する他の資料を読み、質問をしてFHIRチャットのディスカッションに参加できます 。 私は一般的なアイデアのみを提供します:中心的な概念はリソースであり、リソースはタイプとグループで分けられ、各タイプには独自のフィールド構造があり、その値はプリミティブまたは複合タイプであり、他のリソースへのリンクです。 フィールドは必須またはオプションで、1つの値または値のコレクションを含むことができます。 たとえば、 Patientリソースには、プリミティブ型のフィールドがあります:生年月日/性別/ ...、複合タイプ:名前/住所/ ....、組織へのリンクおよび主治医のリストなど。



各リソースの変更履歴は、状態のリストとして、関連する日付とオブジェクトのバージョン番号とともに保存されます。 RESTful APIを使用すると、このFHIRサーバーでサポートされるリソースの構成と構造に関するメタデータ、個々のパラメーターの値に応じた幅広いフィルタリング機能を持つ任意のタイプのリソース要素のリスト、依存リソースの包含、結果の出力をこれらのフィールドの値に制限、クエリ結果を複雑な基準で並べ替えることができ、など リソース要素のレベルでCRUDをサポートするためのメソッドもあります-構造検証と必須フィールドの存在による作成/更新、要素の削除。 要素レベルとリソースタイプレベルの両方で変更履歴を表示するためのAPIメソッドがあります。



典型的なアプリケーションでは、この汎用APIの使用は、特定のクライアントのビジネスロジックの厚いレイヤーによって抽象化されます。 たとえば、患者の医師への訪問を任命する場合、医療保険の数と有効期間、以前の訪問の履歴、患者と診療所との間の和解のバランスに関する情報など、選択した医師のスケジュールと入院時間の可用性に関するデータなどが求められます。 .p。 そして、これらはすべて、録音を行っている従業員の職場の画面に便利に表示されます。 または、自動タスクスケジューラは、指定されたスケジュールに従って定期的にプロセスを開始し、今後の訪問のリストを要求し、事前定義されたテンプレートに従ってテキストリマインダーまたは通知で患者にSMSを自動的に送信します。



しかし、私はFHIRサーバーのリソースのコンテンツを普遍的に視覚化するというアイデアを思い付きました。



フィアフェイス



このアプリケーションを使用すると、任意のFHIRサーバーに接続して、リソースの内容と基本的なCRUDを表示できます。 この普遍的なアプローチの難しさの1つは、サーバーごとに異なるバージョンのFHIR規格があり、完全に実装されていないこと、リソースとAPIのリスト、構成、構造に偏差があり、仕様に含まれていない追加機能があることです。 ただし、このサーバーで、サポートされているリソースの構成と構造に関するメタデータを要求できる場合は、このプロジェクトにサポートを追加できます。



プロジェクトのインターフェースは直感的です。 サーバーのアドレスはアドレスバーパラメーターで選択されますが 、現在のデモバージョンではデフォルトでhapi.fhir.orgが選択されています 。 スタートページから、リソースの構成と構造が読み込まれ、特定のタイプのリソースを選択してそのコンテンツを表示することが提案されています。 リソースタイプを選択すると、限られた数の要素に対してリクエストが行われます。これらの要素は、識別子、条件付きユーザー表現(可能な場合)、および文字列シリアル化の文字サイズで表に表示されます。 リソースのコンテンツの全文検索が機能します。 テーブルの行または新しい要素を作成するためのボタンをクリックすると、リソース要素のコンテンツのページへのリダイレクトが発生します。



要素ページの上部には、階層コンテンツの完全な畳み込み/展開のためのボタンと、詳細の表示スタイルを変更するためのボタンがあります。 アイテムのコンテンツは、詳細リストで表されます。 各属性には名前、タイプ、短い説明、意味があります。 属性の左側に黒で塗りつぶされた円は、この属性がリソースに存在することを意味します(値が選択されていない場合でも-この場合、属性にはこの属性がありますが空の値があります)、空の円は要素にこの属性がないことを示しますが、リストこのタイプのリソースの構造の詳細。 名前の左側にある丸いアイコンをクリックすると、小道具をアイテムに追加したり、アイテムから削除したりできます。 リソースタイプの構造にリストされていないが、要素で利用可能な詳細は、紫色で強調表示されています。



プリミティブ型の値は、対応する型指定されたウィジェット(日付、時刻、数値、文字列など)によって表されます。 文字列の詳細の右側にあるアイコンは、テキスト入力/編集モードを切り替えます-改行ありまたはなし。 編集時、ウィジェットはそのコンテンツに応じて自動的にサイズ変更されます。 フォームへの入力を開始すると、50文字を超えるすべてのテキストフィールドは、改行付きのtextAreaウィジェットで表されます。 リンクウィジェットは、リンクリソースの種類と値で表されます。値を選択すると、リンクリソースのコンテンツの全文検索が機能します。



複合型の詳細を折りたたんで、可能な下位の詳細の数を強調表示したり、展開したりすることができます-内容のデモンストレーションがあります。 必要な名前/タイプ/説明をクリックすると、コンテンツの完全な深い畳み込み/展開がトリガーされます;ハイライトをクリックすると、フィールドの数が次のレベルの詳細の展開になります。 コレクションの詳細(任意の数の値)には、属性の説明の右側に+アイコンがあり、コレクションに新しい値を追加します。 コレクション要素の畳み込み/展開(それが複合型の値である場合)は、コレクション要素を囲むフレームの右端をクリックすることで実行されます。 フレームの右上隅にある十字形をクリックすると、コレクション要素が削除されます。



このインターフェイスを使用すると、リソースの内容を編集できます。 ページの下部には、編集済みの状態でリソースを保存するためのボタンがあります。 リソースが書き込まれると、FHIRサーバーはそのコンテンツを検証し、エラーがある場合、リソースを記録せず、検証エラーのリストを返します。 この場合、これらのエラーのテキストは、保存ボタンの下に赤で表示されます。 検証エラーのオブジェクトの構造はサーバーの実装によって決定されるため、そのユニバーサルテキスト表現のバリアントが選択されました。 エラーがない場合、リソース要素は記録され、要素リストページにリダイレクトされます。



そして最後に、約束されたリンク:



プロジェクトのオンラインデモ



プロジェクトのGithub-猫は展示用のぬいぐるみではなく、生きている労働者なので、建設や設置作業に必要なコメントされたエリア、足場、その他の要素があり、ヘルメットを着用します)



All Articles