RPM 應用程式
與 AI 代理一起構建
RPM 應用程式後端

遠程病人監測應用程式後端範本
提供來自家庭物聯網醫療設備的病人數據安全訪問,以進行有效監測

一個準備好投入生產的RPM 應用程式後端於 Back4app,以安全訪問來自物聯網設備的病人數據,包括監測日誌和用戶消息,並具有集中式的審計日誌。它包含 ER 圖、數據字典、JSON 架構、API 操作環境,以及一個AI 代理提示,方便快速啟動。

關鍵要點

提供一個遠程病人監控的後端,具備安全訪問控制、物聯網數據檢索和監控日誌,讓您的產品團隊可以專注於用戶體驗和合規性。

  1. 以物聯網為中心的數據模型保持病人身份、設備數據和監控日誌的明確建模,但為身份驗證和授權而連結。
  2. 安全消息傳遞病人和臨床醫生之間的串聯消息,附有清晰的已讀回執和保存控制。
  3. 版本化設備數據存儲帶有版本元數據的設備數據,確保更新的讀取和通知能有效追蹤。
  4. 監控日誌生命週期有效地管理監控日誌,記錄用戶互動和設備狀態的變化。
  5. 符合合規要求的審計日誌集中式 AuditLog 捕捉敏感事件以進行審查,並遵循健康法規。

什麼是 RPM 應用程序後端模板?

Back4app 是一個後端即服務 (BaaS) 的快速交付解決方案。RPM 應用程序後端模板提供了一個預先構建的架構,用於病人資料、物聯網設備數據、監控日誌、安全消息和審計日誌。連接您喜愛的前端 (React、Flutter、Next.js 等) 並加快交付速度。

最佳使用對象:

遠程病人監控應用程序物聯網設備數據訪問為臨床醫生提供安全消息傳遞病人監控團隊建立符合規範的醫療原型

概覽

RPM 應用程序需要強大的數據邊界、可審計的交易和可靠的敏感病人信息傳遞,這些信息是從物聯網設備收集的。

此模板定義了 PatientProfile、DeviceData、MonitoringLog、UserMessage 和 AuditLog 類,並採用了所有權和基於角色的規則,以便團隊可以快速且安全地實施 RPM 應用程序。

核心 RPM 應用功能

此中心中的每個技術卡片都利用相同的 RPM 應用程式後端架構,特點包括 PatientProfile、DeviceData、MonitoringLog、UserMessage 和 AuditLog。

病人檔案與身份驗證

PatientProfile 存儲身份、聯絡詳情和偏好,並鏈接至已驗證的用戶。

版本化設備數據

DeviceData 存儲設備類型、原始數據、記錄時間、版本和用戶來源。

監控日志管理

MonitoringLog 追踪按時間順序記錄的病人互動及狀態。

安全的醫生-病人消息傳遞

UserMessage 促進 Provider 與病人之間的交流,支持附件和傳送/閱讀狀態。

集中式審計日誌

AuditLog 捕捉用戶採取的行動的見解,確保清晰的責任歸屬。

為什麼使用 Back4app 建立您的 RPM 應用後端?

Back4app 管理著後端的基本要素——安全性、數據持久性、API 和即時更新——使您能夠優先考慮用戶體驗、隱私和臨床整合。

  • 安全轉移病人數據: 內建的身份驗證和訪問控制使您能夠限制每個設備讀取、監控日誌或消息對特定用戶的可見性。
  • 審計和來源追蹤: AuditLog 記錄誰訪問、發佈或修改敏感數據,確保合規性。
  • 消息傳遞和即時通知: 線程消息、附件和可選的即時更新促進了病人與醫療 Provider 之間的流暢溝通。

快速部署安全的 RPM 應用後端,專注於迭代臨床工作流程而不是後端的複雜性。

核心優勢

一個優先考慮數據隱私、來源和敏捷交付的 RPM 應用程式後端。

更快的病人體驗

通過利用經過預驗證的後端結構,快速發佈設備數據視圖、監控功能和安全消息。

強大的數據來源

保持設備數據和日誌的版本控制,以便臨床行動可供審計。

細粒度的權限控制

通過基於角色的訪問控制保護敏感紀錄,確保只有授權人員能查看特定數據。

集成消息

線上消息和即時更新改善了患者與醫療專業人員之間的溝通。

符合合規要求的日誌記錄

集中式審計日誌保留了醫療合規性和商業智慧的詳細記錄。

AI輔助的初始配置

通過精心策劃的AI代理提示啟動開發,以搭建架構、權限和基本集成代碼。

準備好構建安全的RPM應用程序了嗎?

允許Back4app AI代理為您的RPM應用後端搭建架構,從一個提示生成患者資料、設備數據、監控日誌和審計日誌。

免費開始 — 每月 50 條 AI 代理提示,無需信用卡

技術堆疊

此 RPM 應用程序後端模板中包含所有內容。

前端
13+ 種技術
後端
Back4app
資料庫
MongoDB
認證
內建認證 + 會話
API
REST 和 GraphQL
實時
Live Queries

ER 圖

RPM應用後端架構的實體關係模型。

查看圖表來源
Mermaid
erDiagram
    PatientProfile ||--o{ LabResult : "has"
    PatientProfile ||--o{ TreatmentPlan : "receives"
    PatientProfile ||--o{ Message : "context for"
    PatientProfile ||--o{ Appointment : "scheduled in"
    _User ||--o{ Message : "sends/receives"
    _User ||--o{ TreatmentPlan : "authors"
    _User ||--o{ Appointment : "provides"

    PatientProfile {
        String objectId PK
        Pointer user FK
        String medicalRecordNumber
        String displayName
        Date dateOfBirth
        String primaryClinic
        Boolean isActive
        Date createdAt
        Date updatedAt
    }

    LabResult {
        String objectId PK
        Pointer patient FK
        Pointer orderedBy FK
        String testCode
        String testName
        String resultValue
        String units
        String referenceRange
        String status
        Date publishedAt
        Array attachments
        Date createdAt
        Date updatedAt
    }

    TreatmentPlan {
        String objectId PK
        Pointer patient FK
        Pointer createdBy FK
        String summary
        String details
        String status
        Date startDate
        Date endDate
        Date createdAt
        Date updatedAt
    }

    Message {
        String objectId PK
        String conversationId
        Pointer from FK
        Pointer to FK
        Pointer patient FK
        String body
        Array attachments
        Boolean isRead
        Date sentAt
        Date createdAt
        Date updatedAt
    }

    Appointment {
        String objectId PK
        Pointer patient FK
        Pointer provider FK
        Date startAt
        Date endAt
        String location
        String status
        String reason
        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 as Patient
  participant App as RPM Dashboard App
  participant Clinician
  participant Back4app as Back4app Cloud

  User->>App: Sign in with email or SSO
  App->>Back4app: POST /login (credentials/SSO token)
  Back4app-->>App: Return Session Token + Patient context

  User->>App: Open Dashboard (profile & recent labs)
  App->>Back4app: GET /classes/PatientProfile?where={"user":Pointer("_User", "u123")}
  Back4app-->>App: PatientProfile object
  App->>Back4app: GET /classes/LabResult?where={"patient":Pointer("PatientProfile","p123")}&order=-publishedAt
  Back4app-->>App: List of LabResult (latest first)

  User->>App: View active Treatment Plan
  App->>Back4app: GET /classes/TreatmentPlan?where={"patient":Pointer("PatientProfile","p123"),"status":"active"}
  Back4app-->>App: TreatmentPlan object

  User->>App: Send secure message to clinician
  App->>Back4app: POST /classes/Message (conversationId, body, to: Pointer(_User, clinicianId))
  Back4app-->>App: Message objectId

  Back4app-->>App: LiveQuery -> new Message or LabResult update
  App-->>User: Real-time notification (new message / result available)

  Clinician->>Back4app: Update LabResult (finalize)
  Back4app-->>App: LiveQuery event -> App fetches updated LabResult
  App-->>User: Alert: "New lab result available"

數據字典

RPM 應用程式架構中每個類別的完整欄位級參考。

欄位類型描述必填
objectIdStringAuto-generated unique identifier自動
userPointer<_User>Linked Back4app user account
medicalRecordNumberStringUnique MRN for the patient
displayNameStringPatient full name shown in UI
dateOfBirthDatePatient date of birth
primaryClinicStringPrimary clinic or provider group
isActiveBooleanActive portal access flag
createdAtDateAuto-generated creation timestamp自動
updatedAtDateAuto-generated last-update timestamp自動

9 欄位在 PatientProfile

安全性和權限

如何使用 ACL、CLP 和加密策略來保護病人數據、物聯網數據、消息和審計日誌。

基於角色的訪問和擁有權

應用 ACL,以便患者可以查看自己的設備數據和監控日誌,而臨床醫生可以查看與其指派患者相關的數據;CLP防止對類別的未經授權操作。

加密的有效負載和附件

安全地存儲敏感數據,使用加密並利用簽名的 URL 來安全訪問大型文件。

僅附加的審計記錄

記錄服務器端函數的 AuditLog 事件,以保護歷史合規數據免受篡改。

架構(JSON)

原始 JSON 架構定義,準備複製到 Back4app 或用作實施參考。

JSON
{
  "classes": [
    {
      "className": "PatientProfile",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "user": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "medicalRecordNumber": {
          "type": "String",
          "required": true
        },
        "displayName": {
          "type": "String",
          "required": true
        },
        "dateOfBirth": {
          "type": "Date",
          "required": false
        },
        "primaryClinic": {
          "type": "String",
          "required": false
        },
        "isActive": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "LabResult",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "orderedBy": {
          "type": "Pointer",
          "required": false,
          "targetClass": "_User"
        },
        "testCode": {
          "type": "String",
          "required": false
        },
        "testName": {
          "type": "String",
          "required": true
        },
        "resultValue": {
          "type": "String",
          "required": false
        },
        "units": {
          "type": "String",
          "required": false
        },
        "referenceRange": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "publishedAt": {
          "type": "Date",
          "required": false
        },
        "attachments": {
          "type": "Array",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "TreatmentPlan",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "createdBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "summary": {
          "type": "String",
          "required": true
        },
        "details": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "startDate": {
          "type": "Date",
          "required": false
        },
        "endDate": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Message",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "conversationId": {
          "type": "String",
          "required": true
        },
        "from": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "to": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "body": {
          "type": "String",
          "required": true
        },
        "attachments": {
          "type": "Array",
          "required": false
        },
        "isRead": {
          "type": "Boolean",
          "required": true
        },
        "sentAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Appointment",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "provider": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "startAt": {
          "type": "Date",
          "required": true
        },
        "endAt": {
          "type": "Date",
          "required": true
        },
        "location": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "reason": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AuditLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "actor": {
          "type": "Pointer",
          "required": true,
          "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 代理從此模板生成一個 RPM 應用,包括後端架構、訪問控制和入門前端集成。

Back4app AI 代理人
準備好開始建設
在 Back4app 上根據此架構和行為創建一個 RPM 應用後端。

架構:
1. PatientProfile: user (指向 User 的指針,必填), fullName (字符串,必填), dob (日期,選填), contact (對象), medicalRecordNumber (字符串,必填,唯一); objectId, createdAt, updatedAt.
2. DeviceData: patient (指向 PatientProfile 的指針,必填), deviceType (字符串), dataPayload (對象), recordedAt (日期,必填), version (數字,默認 1); objectId, createdAt, updatedAt.
3. MonitoringLog: patient (指向 PatientProfile 的指針,必填), data (指向 DeviceData 的指針,必填), timestamp (日期,必填), status (字符串,必填); objectId, createdAt, updatedAt.
4. UserMessage: sender (指向 User 的指針,必填), recipient (指向 User 的指針,必填), threadId (字符串,必填), body (字符串), attachments (文件數組), status (字符串: 已發送,已交付,已讀), sentAt (日期); objectId, createdAt, updatedAt.
5. AuditLog: actor (指向 User 的指針,必填), action (字符串,必填), entityType (字符串,必填), entityId (字符串,必填), payload (對象,選填), createdAt (日期); objectId, createdAt, updatedAt.

安全性:
- 強制應用 ACL,使患者僅能閱讀他們的 DeviceData 和 MonitoringLog 記錄。臨床醫生查看指定的患者。使用雲端代碼進行敏感過渡,並在服務器端寫入 AuditLog 項目。使用加密保護您的數據。

身份驗證:
- 支持患者和臨床醫生的註冊;角色分配;安全登錄和會話管理。

行為:
- 患者登錄,獲取最新的 DeviceData 和 MonitoringLogs,向臨床醫生的線程發送消息,並接收通知。臨床醫生發布設備數據和監控日誌;系統為發布操作寫入 AuditLog 項目。

交付:
- Back4app 應用程序具備架構、CLPs、ACLs、用於發布和審計記錄的雲端代碼鈎子,以及患者和臨床醫生視圖的起始前端整合。

按下面的按鈕使用此模板提示打開代理人,並自動填充。

這是沒有技術後綴的基本提示。您可以在之後調整生成的前端堆棧。

幾分鐘內部署每月 50 條免費提示無需信用卡

API 演示區

對 RPM 應用程序架構嘗試 REST 和 GraphQL 端點。響應使用模擬數據,並不需要 Back4app 帳戶。

common.loadingPlayground

使用與此範本相同的架構。

選擇您的技術

展開每個卡片以獲取整合步驟、狀態模式、資料模型範例和離線註解。

Flutter RPM 應用後端

React RPM 應用後端

React 原生 RPM 應用後端

Next.js RPM 應用後端

JavaScript RPM 應用後端

Android RPM 應用後端

iOS RPM 應用後端

Vue RPM 應用後端

Angular RPM 應用後端

GraphQL RPM 應用後端

REST API RPM 應用後端

PHP RPM 應用後端

.NET RPM 應用後端

使用每種技術您能獲得的內容

每個技術堆疊都使用相同的 RPM 應用後端架構和 API 規則。

預構建的病人資料架構

輕鬆管理和訪問具有統一 rpm 儀表板 結構的病人數據。

IoT 設備數據集成

無縫連接和監控 IoT 設備以實時獲取 rpm 儀表板 見解。

為 rpm 儀表板 提供安全消息傳遞

通過加密消息安全地與病人和 Provider 溝通。

全面的監控日誌

用於 rpm 儀表板 的詳細日誌跟踪病人的活動和健康指標。

REST/GraphQL API 支持

靈活的 API 選項以有效地與您的 rpm 儀表板 後端互動。

合規性審計日誌

對所有 rpm 儀表板 活動保持合規的詳細審計記錄。

Rpm 儀表板框架比較

評估所有支持的技術堆棧的設置速度、SDK 樣式和 AI 支持。

框架設置時間Rpm 儀表板的好處SDK類型AI支持
~3–7 分鐘用於移動和網絡的 rpm 儀表板單一代碼庫。Typed SDK完整
快速 (5 分鐘) 設置快速網絡儀表板用於 rpm 儀表板。Typed SDK完整
~5 分鐘跨平台移動應用程式用於 rpm 儀表板。Typed SDK完整
約 5 分鐘伺服器呈現的網絡應用程式用於 rpm 儀表板。Typed SDK完整
~3 分鐘輕量級網絡集成用於 rpm 儀表板。Typed SDK完整
~3–7 分鐘原生 Android 應用程式用於 rpm 儀表板。Typed SDK完整
快速 (5 分鐘) 設置原生 iOS 應用程式用於 rpm 儀表板。Typed SDK完整
~5 分鐘React 的網絡 UI 用於 rpm 儀表板。Typed SDK完整
約 5 分鐘企業網絡應用程式用於 rpm 儀表板。Typed SDK完整
快速 (2 分鐘) 設置靈活的 GraphQL API 用於 rpm 儀表板。GraphQL API完整
~2 分鐘REST API 集成用於 rpm 儀表板。REST API完整
少於 5 分鐘伺服器端 PHP 後端用於 rpm 儀表板。REST API完整
~5 分鐘.NET 後端用於 rpm 儀表板。Typed SDK完整

設置時間表示從項目初始化到使用此模板架構的第一個病人登錄和設備數據查詢的預期持續時間。

常見問題

有關使用此模板構建 RPM 應用後端的常見查詢。

什麼是 RPM 應用後端?
RPM 應用模板包含什麼?
為什麼選擇 Back4app 作為 RPM 應用?
我該如何在一次調用中檢索到最新的設備數據及其狀態?
我該如何將消息標記為已讀?
React Native 可以將監控日誌緩存以供離線使用嗎?
我該如何防止未授權訪問敏感設備數據?
將監控日誌與消息連接的最佳策略是什麼?
審計日誌機制從開始到完成是如何運作的?
我該如何處理監控日誌中的病人確認?

全球開發者可靠的選擇

加入使用 Back4app 模板部署安全 RPM 應用的團隊,快速上手。

G2 Users Love Us Badge

準備好構建您的 RPM 應用了嗎?

在幾分鐘內啟動您的 RPM 應用項目。無需信用卡。

選擇技術