症状检查器
与人工智能代理一起构建
症状检查后台

症状检查应用后台模板
指导性入院调查、分诊结果及决策树评估

一个生产就绪的症状检查后台在Back4app,包括入院调查、临床逻辑树、分诊结果、用户资料和审计轨迹。包括ER图、数据字典、JSON schema、API游乐场,以及用于快速引导的AI代理提示。

关键要点

此模板提供一个症状检查后端,具有调查、决策树、结果、用户和审计模型,以便您的团队可以专注于临床内容和用户体验。

  1. 有意见的接收模型跟踪调查定义、问题变体和用户响应,以可靠地重建接收会话。
  2. 临床逻辑节点将决策树表示为链接的 DecisionNode 记录,以便将评估逻辑与客户端代码解耦。
  3. 分流结果存储确定性的分流结果(建议、紧急程度、推荐的后续步骤)以用于下游分析和路由。
  4. 审计与可解释性捕捉决策路径和用户输入,以便结果可供临床医生和合规审查审计与解释。
  5. 跨平台 APIREST 和 GraphQL 端点为移动端和 Web 客户端提供一致的输入和分类契约。

症状检查应用后端模板是什么?

Back4app 是一种后端即服务 (BaaS),用于快速产品交付。症状检查应用后端模板是用于调查、决策节点、调查响应、分类结果、用户档案和审计条目的预构建架构。连接您首选的前端 (React、Flutter、Next.js 等) 并更快发布。

最佳适用:

面向患者的症状分类临床决策支持原型远程医疗入院工作流程诊所的内部分类工具数字分类产品的MVP使用BaaS进行合规内容的团队

概述

一个可靠的症状检查器需要结构化的入院数据、明确的决策逻辑和可审计的结果来支持分类和分析。

该模板定义了Survey、DecisionNode、UserProfile、SurveyResponse、TriageOutcome和AuditEntry,并建立合理的所有权和验证规则以支持临床入院工作流程。

核心症状检查器功能

该中心的每个技术卡片都使用相同的症状检查后端架构,包括调查、决策节点、用户配置文件、调查响应、分诊结果和审计条目。

调查定义和版本控制

调查类存储标题、版本、起始节点和元数据,以便创作引导式采集流程。

决策节点树

决策节点建模问题、分支逻辑、条件表达式和指向后续节点的指针。

调查反馈跟踪

调查反馈存储用户答案、时间戳以及通过决策树评估的路径。

分流结果记录

分流结果捕获评估的级别(自我护理、紧急、急救)、建议文本和推荐的下一步。

用户配置文件管理

用户配置文件将Back4app用户账户链接到在分流过程中使用的人口统计和临床元数据。

可解释的审计条目

AuditEntry 记录每个关键评估和结果的参与者、操作、上下文和有效负载。

为什么要使用 Back4app 构建您的症状检查器后端?

Back4app 提供对 Blocks 的托管构建,用于 intake、决策逻辑和分诊,以便您的团队可以专注于临床内容、用户体验和集成。

  • 调查和内容管理: 撰写调查并对其版本进行管理,以便 intake 流程可以在保留早期会话以便复审的情况下不断发展。
  • 确定性临床逻辑: 将决策节点存储为数据,以便规则可审计、可测试且可编辑,而无需向客户端应用程序发布新版本。
  • 灵活的 API + 审计: 使用 REST 和 GraphQL 进行客户端访问,并记录详细的审计条目,以捕获输入和决策路径以便解释。

快速撰写、测试和部署症状分诊流程,配备支持多个前端的托管后端合同。

核心优势

一个症状分诊后端,帮助您快速迭代,同时保持决策逻辑可审计和内容驱动。

快速内容迭代

撰写和版本调查及决策节点,无需为每次内容变更发布客户端版本。

可解释的结果

保存决策路径和输入,以便临床医生和审计员可以重建特定分诊建议的原因。

一致的分诊结果

使用确定性规则评估,确保相同输入在不同平台上产生可重复的结果。

权限内容编辑

通过基于角色的ACL和云代码检查控制谁可以撰写或发布调查内容。

分析准备好的数据

捕获结构化的回答和结果,以便产品和临床团队可以分析使用情况和安全信号。

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

数据字典

症状检查器架构中每个类的完整字段级参考。

字段类型描述必需
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)

原始 JSON 架构定义准备好可以复制到 Back4app 或用作实施参考。

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. 决策节点:问题 (字符串,必填),输入类型 (字符串:单选、多选、数字、文本),条件 (条件对象数组),nextNode (指向决策节点的指针,选填),结果 (指向分诊结果的指针,选填),规则类型 (字符串:确定性、可脚本化)。
3. 用户个人资料:用户 (指向用户的指针,必填),年龄范围 (字符串,选填),慢性标志 (数组,选填),已给出同意 (布尔值,必填)。
4. 调查响应:调查 (指向调查的指针,必填),用户 (指向用户的指针,选填),答案 (对象:按 nodeId 键入),路径 (决策节点指针数组),startedAt (日期),completedAt (日期,选填)。
5. 分诊结果:响应 (指向调查响应的指针,必填),级别 (字符串:自我护理、初级护理、紧急、急救),建议文本 (字符串),推荐行动 (字符串),createdAt (系统)。
6. 审计条目:参与者 (指向用户的指针,必填),行动 (字符串,必填),上下文 (对象),有效载荷 (对象,选填)。

安全:
- 使用 ACL/CLP 限制调查创作并保护调查响应数据。对于非管理员,AuditEntry 写入应为附加-only。

认证:
- 为终端用户和临床医生提供注册、登录、注销;为作者和审阅者提供基于角色的权限。

行为:
- 获取已发布的调查和决策节点树,逐步评估节点,持久化调查响应及决策路径,计算或记录分诊结果,并为每个完成的评估创建审计条目记录。

交付:
- Back4app 应用,带有架构、ACL、CLP;入门调查和决策节点;针对 {tech} 的前端集成指南;API 游乐场示例。

按下面的按钮以打开带有此模板提示预填充的代理。

这是没有技术后缀的基础提示。您可以在后续调整生成的前端堆栈。

几分钟内部署每月 50 个免费提示无需信用卡

API 游乐场

尝试在症状检查器架构中使用 REST 和 GraphQL 端点。响应使用模拟数据,不需要 Back4app 账户。

common.loadingPlayground

使用与此模板相同的架构。

选择您的技术

展开每个卡片以获取集成步骤、状态模式、数据模型示例和离线说明。

Flutter 症状检查器后台

React 症状检查器后台

React 原生 症状检查器后台

Next.js 症状检查器后台

JavaScript 症状检查器后台

Android 症状检查器后台

iOS 症状检查器后台

Vue 症状检查器后台

Angular 症状检查器后台

GraphQL 症状检查器后台

REST API 症状检查器后台

PHP 症状检查器后台

.NET 症状检查器后台

您可以从每种技术获得什么

每个技术栈使用相同的症状检查器后端架构和 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完整

设置时间反映从项目启动到首次调查和决策评估所需的预期持续时间,使用此模板架构。

常见问题

有关使用此模板构建症状检查器后端的常见问题。

什么是症状检查器后端?
这个模板包括什么?
为什么在症状分诊应用程序中使用Back4app?
我如何收集和重放调查会话?
我如何在评估后创建TriageOutcome?
我可以在移动设备上缓存DecisionNode树以供离线使用吗?
我如何审查某项建议为何被提出?
更新临床内容的推荐方法是什么?
我应该如何处理监管合规性?
我如何防止恶意规则注入?

受到全球开发者的信任

构建分诊和接收体验的团队依赖于 Back4app 模板来快速建立合规的后端

G2 Users Love Us Badge

准备好构建您的症状检查应用吗?

在几分钟内开始您的症状分诊项目。不需要信用卡。

选择技术