症状チェッカー
AIエージェントを使用して構築
症状チェッカー バックエンド

症状チェッカー アプリ バックエンド テンプレート
ガイド付きインテーク調査、トリアージ結果、および意思決定ツリー評価

Back4app における本番稼働準備完了の症状チェッカー バックエンド: インテーク調査、臨床論理ツリー、トリアージ結果、ユーザープロファイル、および監査履歴を含む。ERダイアグラム、データ辞書、JSONスキーマ、APIプレイグラウンド、及び迅速なブートストラップ用のAIエージェントプロンプトを含む。

主要なポイント

このテンプレートは、調査、決定ツリー、結果、ユーザー、監査モデルを持つ症状チェッカーのバックエンドを提供するため、チームは臨床コンテンツとUXに集中できます。

  1. 意見に基づくインテークモデル調査定義、質問のバリエーション、およびユーザーの回答を追跡してインテークセッションを信頼性高く再構築します。
  2. 臨床ロジックノード決定ノードレコードとしてリンクされた決定ツリーを表現し、評価ロジックをクライアントコードから切り離します。
  3. トリアージ結果決定論的なトリアージ結果(アドバイス、緊急度、推奨される次のステップ)を保存し、下流の分析とルーティングに利用します。
  4. 監査と説明性意思決定の経路とユーザー入力をキャプチャし、臨床医やコンプライアンスレビューのために結果が監査可能で説明可能になるようにします。
  5. クロスプラットフォームAPIRESTとGraphQLエンドポイントは、受け入れとトリアージに関する一貫した契約を持つモバイルおよびWebクライアントにサービスを提供します。

症状チェッカーアプリバックエンドテンプレートとは?

Back4appは迅速な製品提供のためのバックエンド-as-a-service (BaaS)です。症状チェッカーアプリバックエンドテンプレートは、調査、決定ノード、調査回答、トリアージ結果、ユーザープロファイル、および監査エントリのための事前構築されたスキーマです。お好みのフロントエンド(React、Flutter、Next.jsなど)を接続し、より早く出荷します。

最適:

患者向け症状トリアージ臨床決定支援プロトタイプ遠隔医療の intake ワークフロークリニック用内部トリアージツールデジタルトリアージ製品の MVPBaaS を使用している規制されたコンテンツのチーム

概要

信頼できる症状チェッカーには、トリアージと解析をサポートするために、構造化された intake データ、明示的な決定ロジック、および監査可能な結果が必要です。

このテンプレートでは、Survey、DecisionNode、UserProfile、SurveyResponse、TriageOutcome、および AuditEntry を、臨床 intake ワークフローをサポートするための適切な所有権と検証ルールで定義します。

コア症状チェッカー機能

このハブ内のすべてのテクノロジーカードは、Survey、DecisionNode、UserProfile、SurveyResponse、TriageOutcome、およびAuditEntryを持つ同じSymptom Checkerバックエンドスキーマを使用しています。

調査の定義とバージョン管理

調査クラスは、ガイド付きインテークフローを作成するためのタイトル、バージョン、startNode、およびメタデータを保存します。

DecisionNodeツリー

DecisionNodeは、質問、分岐ロジック、条件式、および次のノードへのポインタをモデル化します。

サーベイレスポンス追跡

サーベイレスポンスはユーザーの回答、タイムスタンプ、および意思決定ツリーを通じた評価されたパスを保存します。

トリアージ結果記録

トリアージ結果は、評価されたレベル(セルフケア、緊急、緊急時)、アドバイステキスト、および推奨される次のステップをキャプチャします。

ユーザープロファイル管理

ユーザープロファイルは、Back4app ユーザーアカウントをトリアージ中に使用される人口統計および臨床メタデータにリンクします。

説明可能な監査エントリ

AuditEntryは、各重要な評価および結果のために、アクター、アクション、コンテキスト、ペイロードを記録します。

なぜBack4appで症状チェッカーのバックエンドを構築するのか?

Back4appは、あなたのチームが臨床コンテンツ、UX、統合に集中できるように、 intake、意思決定ロジック、トリアージのための管理されたBlocksを提供します。

  • 調査およびコンテンツ管理: 調査を作成し、バージョン管理を行い、 intake フローが進化できるようにし、以前のセッションはレビューのために保存されます。
  • 決定論的な臨床ロジック: 意思決定ノードをデータとして保存することで、ルールを監査可能、テスト可能、編集可能にし、クライアントアプリに新たなリリースを行う必要がありません。
  • 柔軟なAPI + 監査: RESTとGraphQLを使用してクライアントのアクセスを行い、説明可能性のために入力と意思決定の経路をキャプチャする詳細な監査エントリを記録します。

複数のフロントエンドをサポートする管理されたバックエンド契約を利用して、症状トリアージフローを迅速に構築、テスト、展開します。

コアメリット

意思決定ロジックを監査可能でコンテンツ駆動に保ちながら迅速に反復するのを助ける症状トリアージバックエンド。

迅速なコンテンツ反復

すべてのコンテンツ変更のためにクライアントリリースを出荷することなく、著者およびバージョンの調査と意思決定ノードを作成します。

説明可能な結果

臨床医や監査人が特定のトリアージ推奨が発行された理由を再構築できるように、意思決定の経路と入力を保持する。

一貫したトリアージ結果

決定論的なルール評価を使用して、同一の入力がプラットフォーム間で再現可能な結果を生み出すことを保証する。

権限付きコンテンツ編集

役割ベースのACLおよびCloud Codeチェックを使用して、誰が調査内容を作成または公開できるかを制御する。

分析に準備されたデータ

構造化された応答と結果をキャッチして、製品および臨床チームが使用状況や安全シグナルを分析できるようにする。

AI支援のブートストラップワークフロー

事前に作成されたAIエージェントのプロンプトを使用して、素早く調査、ノード、および例のトリアージ結果を種まきする。

症状トリアージプラットフォームを立ち上げる準備はできましたか?

Back4app AIエージェントに症状確認のバックエンドを構築させ、調査、意思決定ノード、応答、成果、および監査ログを一つのプロンプトから生成させましょう。

開始は無料 — 月に50のAIエージェントプロンプト、クレジットカード不要

技術スタック

この症状確認バックエンドテンプレートに含まれているすべて。

フロントエンド
13+ のテクノロジー
バックエンド
Back4app
データベース
MongoDB
認証
組み込み認証 + セッション
API
REST と GraphQL
リアルタイム
Live Queries

ER 図

症状チェッカーのバックエンドスキーマのエンティティリレーションシップモデル。

図のソースを表示
Mermaid
erDiagram
    SymptomSurvey ||--o{ DecisionNode : "contains"
    DecisionNode ||--o{ DecisionNode : "branches to"
    DecisionNode }|..|{ Advice : "recommends"
    PatientProfile ||--o{ Encounter : "starts"
    SymptomSurvey ||--o{ Encounter : "used in"
    Advice ||--o{ Encounter : "applies to"

    SymptomSurvey {
        String objectId PK
        String title
        String description
        String version
        Boolean isActive
        Array nodes FK
        Date createdAt
        Date updatedAt
    }

    DecisionNode {
        String objectId PK
        String questionText
        Array options FK
        Object nextMap
        Boolean isTerminal
        Pointer advice FK
        Date createdAt
        Date updatedAt
    }

    Advice {
        String objectId PK
        String title
        String description
        String urgency
        String followUp
        Date createdAt
        Date updatedAt
    }

    PatientProfile {
        String objectId PK
        Pointer user FK
        String fullName
        Date birthDate
        String sex
        String contact
        Array medicalHistory FK
        Date createdAt
        Date updatedAt
    }

    Encounter {
        String objectId PK
        Pointer patient FK
        Pointer survey FK
        Object responses
        Array decisionPath FK
        Pointer recommendedAdvice FK
        Number riskScore
        String status
        Date createdAt
        Date updatedAt
    }

    AuditLog {
        String objectId PK
        Pointer actor FK
        String entityType
        String entityId
        String action
        String summary
        Object metadata
        Date createdAt
        Date updatedAt
    }

統合フロー

認証、ガイドされたインテーク、意思決定評価、およびトリアージの永続化の典型的なランタイムフロー。

図のソースを表示
Mermaid
sequenceDiagram
  participant User
  participant App as Symptom Checker App
  participant Back4app as Back4app Cloud

  User->>App: Open app and Login
  App->>Back4app: POST /login
  Back4app-->>App: Session token and patient context

  User->>App: Request active triage surveys
  App->>Back4app: GET /classes/SymptomSurvey?where={"isActive":true}
  Back4app-->>App: List of SymptomSurvey

  User->>App: Start survey "Respiratory Triage"
  App->>Back4app: POST /classes/Encounter (patient, survey, status: in_progress)
  Back4app-->>App: Encounter objectId

  User->>App: Answer node Q1 -> "Yes"
  App->>Back4app: PUT /classes/Encounter/{id} (append responses, decisionPath)
  Back4app-->>App: Updated Encounter

  User->>App: Complete survey
  App->>Back4app: PUT /classes/Encounter/{id} (status: completed) + POST /classes/AuditLog
  Back4app-->>App: Encounter with recommendedAdvice (pointer) and riskScore

  Back4app-->>App: LiveQuery event if urgency == high (real-time escalation)
  App-->>User: Show advice and escalation instructions

データ辞書

Symptom Checkerスキーマ内のすべてのクラスの完全なフィールドレベルの参照。

フィールドタイプ説明必須
objectIdStringAuto-generated unique identifier自動
titleStringSurvey display title (e.g. Respiratory Triage)
descriptionStringShort description or purpose of the survey
versionStringSemantic version for survey logic
isActiveBooleanWhether this survey is available to users
nodesArray<Pointer<DecisionNode>>Ordered decision nodes that make the clinical tree
createdAtDateAuto-generated creation timestamp自動
updatedAtDateAuto-generated last-update timestamp自動

8 フィールドが SymptomSurvey に

セキュリティと権限

ACL と CLP 戦略が調査コンテンツ、意思決定ロジック、敏感な回答データをどのように保護するか。

役割ベースのコンテンツ制御

臨床著者と管理者のみが調査および DecisionNode アーティファクトを作成または公開できるようにする; 視聴者は公開されたバージョンを表示します。

保護されたユーザーデータ

SurveyResponse および UserProfile レコードは許可されており、ユーザーと臨床医は承認されたレコードのみアクセス; 必要に応じて敏感なデータには暗号化フィールドを使用します。

追加のみの監査

AuditEntry の書き込みは、追跡可能性を保ち、過去の意思決定ログの改ざんを防ぐために、信頼できるバックエンドフローに制限されています。

スキーマ (JSON)

Back4app にコピーするか、実装の参照として使用するための生の JSON スキーマ定義が準備完了です。

JSON
{
  "classes": [
    {
      "className": "SymptomSurvey",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "title": {
          "type": "String",
          "required": true
        },
        "description": {
          "type": "String",
          "required": false
        },
        "version": {
          "type": "String",
          "required": true
        },
        "isActive": {
          "type": "Boolean",
          "required": true
        },
        "nodes": {
          "type": "Array<Pointer>",
          "required": false,
          "targetClass": "DecisionNode"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "DecisionNode",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "questionText": {
          "type": "String",
          "required": true
        },
        "options": {
          "type": "Array",
          "required": true
        },
        "nextMap": {
          "type": "Object",
          "required": false
        },
        "isTerminal": {
          "type": "Boolean",
          "required": true
        },
        "recommendedAdvice": {
          "type": "Pointer",
          "required": false,
          "targetClass": "Advice"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Advice",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "title": {
          "type": "String",
          "required": true
        },
        "description": {
          "type": "String",
          "required": true
        },
        "urgency": {
          "type": "String",
          "required": true
        },
        "followUp": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "PatientProfile",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "user": {
          "type": "Pointer",
          "required": false,
          "targetClass": "_User"
        },
        "fullName": {
          "type": "String",
          "required": false
        },
        "birthDate": {
          "type": "Date",
          "required": false
        },
        "sex": {
          "type": "String",
          "required": false
        },
        "contact": {
          "type": "String",
          "required": false
        },
        "medicalHistory": {
          "type": "Array",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Encounter",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "survey": {
          "type": "Pointer",
          "required": true,
          "targetClass": "SymptomSurvey"
        },
        "responses": {
          "type": "Object",
          "required": true
        },
        "decisionPath": {
          "type": "Array<Pointer>",
          "required": false,
          "targetClass": "DecisionNode"
        },
        "recommendedAdvice": {
          "type": "Pointer",
          "required": false,
          "targetClass": "Advice"
        },
        "riskScore": {
          "type": "Number",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AuditLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "actor": {
          "type": "Pointer",
          "required": false,
          "targetClass": "_User"
        },
        "entityType": {
          "type": "String",
          "required": true
        },
        "entityId": {
          "type": "String",
          "required": true
        },
        "action": {
          "type": "String",
          "required": true
        },
        "summary": {
          "type": "String",
          "required": true
        },
        "metadata": {
          "type": "Object",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

AI エージェントで構築

Back4app AI エージェントを使用して、このテンプレートから症状チェッカーアプリを生成します。調査の足場、意思決定ツリー、トリアージの結果、および {tech} とのフロントエンド統合が含まれます。

Back4app AI エージェント
構築の準備ができました
Back4app でこの正確なスキーマと動作を持つ症状チェッカーのバックエンドを作成します。

スキーマ:
1. 調査: タイトル (文字列, 必須), バージョン (文字列, 必須), startNode (意思決定ノードへのポインタ, 必須), メタデータ (オブジェクト, オプション).
2. 意思決定ノード: 質問 (文字列, 必須), 入力タイプ (文字列: singleChoice, multiChoice, numeric, text), 条件 (条件オブジェクトの配列), nextNode (意思決定ノードへのポインタ, オプション), outcome (トリアージ成果へのポインタ, オプション), ruleType (文字列: deterministic, scriptable).
3. ユーザープロフィール: ユーザー (ユーザーへのポインタ, 必須), 年齢範囲 (文字列, オプション), 慢性フラグ (配列, オプション), 同意を得た (ブール値, 必須).
4. 調査回答: 調査 (調査へのポインタ, 必須), ユーザー (ユーザーへのポインタ, オプション), 回答 (オブジェクト: nodeId でキー付け), path (意思決定ノードポインタの配列), startedAt (日付), completedAt (日付, オプション).
5. トリアージ成果: 回答 (調査回答へのポインタ, 必須), レベル (文字列: self-care, primary-care, urgent, emergency), adviceText (文字列), 推奨アクション (文字列), createdAt (システム).
6. 監査エントリー: アクター (ユーザーへのポインタ, 必須), アクション (文字列, 必須), コンテキスト (オブジェクト), payload (オブジェクト, オプション).

セキュリティ:
- 調査作成を制限し、SurveyResponse データを保護するために ACL/CLP を使用してください。監査エントリの書き込みは非管理者向けに追加オンリーであるべきです。

認証:
- エンドユーザーおよび臨床医向けのサインアップ、ログイン、ログアウト; 著者およびレビュアー向けのロールベースの権限。

動作:
- 公開された調査および意思決定ノードツリーを取得し、ノードを順次評価し、意思決定パスで SurveyResponse を永続化し、トリアージ成果を計算または記録し、各完了した評価に対して AuditEntry レコードを作成します。

提供:
- スキーマ、ACL、CLP を備えた Back4app アプリ; スターター調査と意思決定ノード; {tech} 用のフロントエンド統合ガイド; API プレイグラウンドの例。

下のボタンを押して、事前に入力されたこのテンプレートプロンプトでエージェントを開きます。

これは技術的サフィックスのない基本プロンプトです。その後、生成されたフロントエンドスタックを適応させることができます。

数分でデプロイ月に50の無料プロンプトクレジットカードは不要

APIプレイグラウンド

症状チェッカースキーマに対してRESTとGraphQLエンドポイントを試してください。レスポンスはモックデータを使用し、Back4appアカウントは必要ありません。

common.loadingPlayground

このテンプレートと同じスキーマを使用しています。

テクノロジーを選択

各カードを展開して、統合ステップ、状態パターン、データモデルの例、およびオフラインノートを確認してください。

Flutter 症状チェッカーバックエンド

React 症状チェッカーバックエンド

React ネイティブ 症状チェッカーバックエンド

Next.js 症状チェッカーバックエンド

JavaScript 症状チェッカーバックエンド

Android 症状チェッカーバックエンド

iOS 症状チェッカーバックエンド

Vue 症状チェッカーバックエンド

Angular 症状チェッカーバックエンド

GraphQL 症状チェッカーバックエンド

REST API 症状チェッカーバックエンド

PHP 症状チェッカーバックエンド

.NET 症状チェッカーバックエンド

得られるもの / 技術

すべてのスタックは同じSymptom CheckerバックエンドスキーマとAPI契約を使用しています。

統合症状チェッカーデータ構造

症状チェッカー用に調整された調査とユーザープロファイルのための一貫したスキーマ。

リアルタイムのトリアージ結果

症状チェッカーの動的な意思決定ノードによるユーザー症状への即時フィードバック。

安全なユーザーデータ管理

症状チェッカーユーザー情報の機密性を確保する堅牢なアクセス制御。

REST/GraphQL APIアクセス

症状チェッカー用の柔軟なAPIを介してフロントエンドフレームワークと簡単に統合。

カスタマイズ可能な調査体験

症状チェッカーユーザーの特定のニーズに合わせて調査を調整し、エンゲージメントを向上。

分析と報告ツール

症状チェッカーアプリでのユーザーインタラクションと結果から洞察を得る。

症状チェッカーフレームワークの比較

すべてのサポートされている技術における設定速度、SDKスタイル、AIサポートを比較します。

フレームワークセットアップ時間症状チェッカーの利点SDKタイプAIサポート
5分未満モバイルおよびウェブ用の症状チェッカーの単一コードベース。Typed SDKフル
~3–7分症状チェッカー用の高速ウェブダッシュボード。Typed SDKフル
迅速な(5分)設定症状チェッカー用のクロスプラットフォームモバイルアプリ。Typed SDKフル
~5分症状チェッカー用のサーバーレンダリングされたウェブアプリ。Typed SDKフル
~3–5分症状チェッカー用の軽量ウェブ統合。Typed SDKフル
5分未満症状チェッカーのネイティブAndroidアプリ。Typed SDKフル
~3–7分症状チェッカーのネイティブiOSアプリ。Typed SDKフル
迅速な(5分)設定React的ウェブUIで症状チェッカー。Typed SDKフル
~5分症状チェッカー用のエンタープライズウェブアプリ。Typed SDKフル
2分未満症状チェッカー用の柔軟なGraphQL API。GraphQL APIフル
クイック(2分)設定REST API 統合で症状チェッカー。REST APIフル
~3分症状チェッカー用のサーバーサイドPHPバックエンド。REST APIフル
迅速な(5分)設定症状チェッカー用の.NETバックエンド。Typed SDKフル

セットアップ時間は、このテンプレートスキーマを使用したプロジェクトのブートストラップから最初の調査および意思決定評価までの予想時間を反映しています。

よくある質問

このテンプレートを使用してSymptom Checkerバックエンドを構築する際の一般的な質問。

症状チェッカーのバックエンドとは何ですか?
このテンプレートには何が含まれていますか?
症状トリアージアプリにBack4appを使用する理由は何ですか?
調査セッションをどのように収集して再生しますか?
評価後にTriageOutcomeをどのように作成しますか?
モバイルでDecisionNodeツリーをオフライン使用のためにキャッシュできますか?
特定のアドバイスがなぜ与えられたのかを監査するにはどうすればよいですか?
臨床コンテンツを更新する推奨方法は何ですか?
規制遵守をどのように扱うべきですか?
悪意のあるルールインジェクションを防ぐにはどうすればよいですか?

世界中の開発者から信頼されています

トリアージおよび受付体験を構築しているチームは、迅速かつ準拠したバックエンドのためにBack4appテンプレートに依存しています

G2 Users Love Us Badge

症状チェッカーアプリを作る準備はできましたか?

症状トリアージプロジェクトを数分で開始できます。クレジットカードは不要です。

技術を選択