氧气配送
与 AI Agent 一起构建
氧气罐配送后端

氧气罐配送应用后端模板
罐分配与调度协调

一个在 Back4app 上的生产就绪 氧气罐配送后端,具有用户访问、PatientSite 配送、TankAssignment PSI 追踪、RefillLog 历史、紧急联系人查询和 DispatchEvent 追踪。包括 ER 图、数据字典、JSON 模式、API 游乐场和一个快速引导的 AI 代理 提示。

关键要点

此模板为您提供了一个包含用户角色、患者地点交付窗口、坦克分配PSI跟踪、补充日志历史和紧急联系人查找的氧气交付后端,以便协调员可以更少地进行来回沟通来管理交付。

  1. 罐PSI可见性跟踪TankAssignment.psiLevel、状态和lastCheckedAt,以便调度团队知道哪些氧气罐需要关注。
  2. 您可以查询的补充历史记录记录每个补充日志条目,包括tankAssignment、refillTime、psiBefore、psiAfter、refillReason和refilledBy。
  3. 紧急联系人路由将紧急联系人记录链接到患者地点,以便工作人员在deliveryWindowStart、deliveryWindowEnd或访问信息重要时能迅速采取行动。
  4. 调度和司机协调使用 TankAssignment.assignedSite、assignedDriver 和 DispatchEvent.eventType 来保持路线和交接的清晰。

理解氧气罐交付应用程序后端

顺畅的氧气交付结账隐藏了数十个检查:资格、冲突、押金和交付的交接。在 Back4app 上建模核心实体,以为氧气交付团队提供一个可以从单个院子扩展到多站点操作的后端。该模式涵盖用户、PatientSite、TankAssignment、RefillLog、紧急联系人和 DispatchEvent,并内置了身份验证与交付工作流控制。连接您首选的前端,快速发货。

最佳适用:

氧气罐交付应用程序医疗设备物流调度协调工具补充跟踪平台紧急联系人工作流程团队选择 BaaS 作为氧气配送产品

氧气配送:后端快照

移动小组和后勤人员在氧气配送中看到不同的现实片段;产品的任务是无责备地拼接这些片段。

利益相关者可以在这里对调度和护理团队的用户角色、患者站点配送位置管理、每个气瓶分配的 psi 跟踪进行合理性检查:名称、关系以及他们所启用的工作流程。

交付模块功能

该中心中的每张技术卡都使用相同的氧气交付后端架构,包括用户、患者站点、罐分配、补充日志、紧急联系人和派发事件。

调度和护理团队的用户角色

用户存储用户名、电子邮件、角色、电话号码和状态。

患者站点交付位置管理

患者站点包含网站名称、地址1、城市、地区、邮政编码和交付时间窗口的开始/结束。

每个罐分配的PSI跟踪

罐分配包含罐序列号、气压水平、状态、分配站点和分配司机。

补充历史在补充日志中

补充日志跟踪罐分配、补充时间、补充前的psi、补充后的psi、补充原因和补充人员。

为路线交接派发事件

派发事件存储罐分配、事件类型、事件时间、记录者和地点备注。

为什么使用 Back4app 构建您的氧气罐配送后端?

Back4app 为您提供用户、患者站点、气瓶分配、补充日志、紧急联系人和调度事件原语,以便您的团队可以专注于安全调度和清晰记录,而不是基础设施工作。

  • 油箱和补充追踪: TankAssignment.psiLevel、状态和RefillLog.psiBefore/psiAfter将交付和补充工作绑定到同一真实来源。
  • 交付点协调: PatientSite.deliveryWindowStart、deliveryWindowEnd和备注支持路线规划和交接更新。
  • 紧急联系集成: EmergencyContact链接到PatientSite,以便调度可以在psiLevel低于阈值时联系到正确的人。

通过一个后端合同快速构建和调整氧气交付工作流程,适用于所有平台。

核心交付优势

一个帮助您更快移动的交付后端,不会忽视 PSI、补充或联系人处理。

更快速的路线和站点设置

从 PatientSite 和 TankAssignment 类开始,而不是自行发明物流表。

更安全的 PSI 检查

使用 TankAssignment.psiLevel、status 和 nextServiceDueAt 在发货前显示低气罐。

清晰的补充责任

当司机或技术人员完成气罐补充时,重新审视每个 RefillLog.psiBefore 和 psiAfter 值。

可靠的紧急升级

将 EmergencyContact 连接到交付流程,以便协调员在 PatientSite 延迟时知道联系谁。

调度事件轨迹

使用 DispatchEvent.eventType、eventTime 和 recordedBy 显示每次交接期间发生的事情。

AI 启动工作流程

通过一个结构化提示快速生成后端脚手架和集成指导。

准备好启动您的氧气配送应用了吗?

让 Back4app AI 助手为您的氧气配送后端搭建脚手架,并从一个提示中生成 TankAssignment PSI 跟踪、RefillLog 历史和 EmergencyContact 查询。

免费开始 — 每月 50 个 AI 助手提示,无需信用卡

交付技术栈

此氧气配送后端模板包含的一切。

前端
13+ 技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST 和 GraphQL
实时
Live Queries

关系图

氧气输送后端架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ PatientSite : "primaryContact"
    User ||--o{ TankAssignment : "assignedDriver"
    User ||--o{ RefillLog : "refilledBy"
    User ||--o{ DispatchEvent : "recordedBy"
    PatientSite ||--o{ TankAssignment : "assignedSite"
    PatientSite ||--o{ EmergencyContact : "site"
    TankAssignment ||--o{ RefillLog : "tankAssignment"
    TankAssignment ||--o{ DispatchEvent : "tankAssignment"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        String phoneNumber
        Boolean active
        Date createdAt
        Date updatedAt
    }

    PatientSite {
        String objectId PK
        String siteName
        String addressLine1
        String city
        String region
        String postalCode
        Date deliveryWindowStart
        Date deliveryWindowEnd
        String primaryContactId FK
        String notes
        Date createdAt
        Date updatedAt
    }

    TankAssignment {
        String objectId PK
        String tankSerialNumber
        Number psiLevel
        String status
        String assignedSiteId FK
        String assignedDriverId FK
        Date lastCheckedAt
        Date nextServiceDueAt
        Date createdAt
        Date updatedAt
    }

    RefillLog {
        String objectId PK
        String tankAssignmentId FK
        Date refillTime
        Number psiBefore
        Number psiAfter
        String refilledById FK
        String refillReason
        String remarks
        Date createdAt
        Date updatedAt
    }

    EmergencyContact {
        String objectId PK
        String siteId FK
        String contactName
        String relationship
        String phoneNumber
        String preferredLanguage
        Boolean isPrimary
        Date createdAt
        Date updatedAt
    }

    DispatchEvent {
        String objectId PK
        String tankAssignmentId FK
        String eventType
        Date eventTime
        String recordedById FK
        String locationNote
        Date createdAt
        Date updatedAt
    }

调度集成流程

进行身份验证、油罐分配PSI审查、补充日志创建、调度事件更新和紧急联系人查找的典型运行流程。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as Oxygen Tank Delivery App
  participant Back4app as Back4app Cloud

  User->>App: Login with dispatcher or driver account
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Load tank assignments and PSI levels
  App->>Back4app: GET /classes/TankAssignment?include=assignedSite,assignedDriver
  Back4app-->>App: TankAssignment list

  User->>App: Open a site and check refill history
  App->>Back4app: GET /classes/RefillLog?where={"tankAssignment":...}
  Back4app-->>App: RefillLog entries

  User->>App: Save a new refill log or dispatch event
  App->>Back4app: POST /classes/RefillLog
  App->>Back4app: POST /classes/DispatchEvent
  Back4app-->>App: Saved objectIds

  App->>Back4app: Live query updates for PSI changes and emergency contact changes
  Back4app-->>App: Updated TankAssignment and EmergencyContact records

现场指南

氧气交付架构中每个类的完整字段级参考。

字段类型描述必需
objectIdStringAuto-generated unique identifier自动
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringRole in the app (e.g. dispatcher, driver, careTeam, patient)
phoneNumberStringPrimary contact phone number
activeBooleanWhether the account can access the app
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

9 字段在 User

访问和权限

ACL 和 CLP 策略如何保护用户、站点、坦克、补充日志和紧急联系人。

患者站点边界

只有授权的工作人员可以创建或更新患者站点详情,包括 deliveryWindowStart、deliveryWindowEnd 和备注。

罐和补充完整性

限制 TankAssignment 更新和 RefillLog 创建仅限于具有验证访问权限的调度协调员或司机。

范围调度可见性

将 DispatchEvent 和 EmergencyContact 的读取限制为处理该路线的指定护理团队、调度员或司机。

JSON 模式

原始 JSON 模式定义,准备复制到 Back4app 或用作实施参考。

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "phoneNumber": {
          "type": "String",
          "required": false
        },
        "active": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "PatientSite",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "siteName": {
          "type": "String",
          "required": true
        },
        "addressLine1": {
          "type": "String",
          "required": true
        },
        "city": {
          "type": "String",
          "required": true
        },
        "region": {
          "type": "String",
          "required": true
        },
        "postalCode": {
          "type": "String",
          "required": true
        },
        "deliveryWindowStart": {
          "type": "Date",
          "required": false
        },
        "deliveryWindowEnd": {
          "type": "Date",
          "required": false
        },
        "primaryContact": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "TankAssignment",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "tankSerialNumber": {
          "type": "String",
          "required": true
        },
        "psiLevel": {
          "type": "Number",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "assignedSite": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientSite"
        },
        "assignedDriver": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "lastCheckedAt": {
          "type": "Date",
          "required": false
        },
        "nextServiceDueAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "RefillLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "tankAssignment": {
          "type": "Pointer",
          "required": true,
          "targetClass": "TankAssignment"
        },
        "refillTime": {
          "type": "Date",
          "required": true
        },
        "psiBefore": {
          "type": "Number",
          "required": true
        },
        "psiAfter": {
          "type": "Number",
          "required": true
        },
        "refilledBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "refillReason": {
          "type": "String",
          "required": true
        },
        "remarks": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "EmergencyContact",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "site": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientSite"
        },
        "contactName": {
          "type": "String",
          "required": true
        },
        "relationship": {
          "type": "String",
          "required": true
        },
        "phoneNumber": {
          "type": "String",
          "required": true
        },
        "preferredLanguage": {
          "type": "String",
          "required": false
        },
        "isPrimary": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "DispatchEvent",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "tankAssignment": {
          "type": "Pointer",
          "required": true,
          "targetClass": "TankAssignment"
        },
        "eventType": {
          "type": "String",
          "required": true
        },
        "eventTime": {
          "type": "Date",
          "required": true
        },
        "recordedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "locationNote": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

使用 AI 代理构建

使用 Back4app AI 代理从此模板生成一个真实的氧气罐交付应用,包括前端、后端、身份验证以及罐、补充和紧急联系人流程。

Back4app AI 代理
准备好构建
在 Back4app 上创建一个氧气罐配送应用后端,使用此确切的模式和行为。

模式:
1. 用户(使用 Back4app 内置):用户名,电子邮件,密码,角色,电话号码,活动;objectId, createdAt, updatedAt(系统)。
2. 患者网站:站点名称,地址行1,城市,区域,邮政编码,配送时间窗口开始,配送时间窗口结束,主要联系人(指向用户,必需),备注;objectId, createdAt, updatedAt。
3. 饱和气罐分配:罐体序列号,psi水平,状态,分配站点(指向患者网站,必需),分配司机(指向用户,必需),最后检查时间,下次服务到期时间;objectId, createdAt, updatedAt。
4. 充值日志:罐体分配(指向饱和气罐分配,必需),充值时间,充值前psi,充值后psi,充值人员(指向用户,必需),充值原因,备注;objectId, createdAt, updatedAt。
5. 紧急联系人:站点(指向患者网站,必需),联系人姓名,关系,电话号码,首选语言,是主要联系人;objectId, createdAt, updatedAt。
6. 派遣事件:罐体分配(指向饱和气罐分配,必需),事件类型,事件时间,由(指向用户,必需)记录,位置备注;objectId, createdAt, updatedAt。

安全性:
- 调度员可以创建和更新饱和气罐分配、充值日志、派遣事件和患者网站记录。
- 司机可以更新分配的饱和气罐 psi 检查,创建充值日志条目,并为他们处理的路线添加派遣事件更新。
- 护理团队用户可以查看他们的患者网站记录和紧急联系人条目,但无法编辑 psi 历史。
- 紧急联系人数据仅对参与站点或派遣操作的经过身份验证的用户可见。

认证:
- 注册,登录,登出。

行为:
- 跟踪psi水平,存储充值日志,附加紧急联系人,并记录派遣交接。
- 显示每个站点的最新罐压,充值历史,配送时间窗口和紧急联系人。

交付:
- Back4app 应用,包含模式、ACLs、CLPs;用于调度板、司机路线检查、充值日志和紧急联系人查找的前端。

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

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

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

API测试器

尝试针对氧气传递模式的 REST 和 GraphQL 端点。响应使用模拟数据,无需 Back4app 账户。

正在加载玩具殿堂…

使用与此模板相同的模式。

选择您的技术

展开每个卡片以查看如何将 PatientSite、TankAssignment 和 RefillLog 与您选择的技术栈进行集成。

Flutter 氧气配送后端

React 氧气配送后端

React 原生 氧气配送后端

Next.js 氧气配送后端

JavaScript 氧气配送后端

Android 氧气配送后端

iOS 氧气配送后端

Vue 氧气配送后端

Angular 氧气配送后端

GraphQL 氧气配送后端

REST API 氧气配送后端

PHP 氧气配送后端

.NET 氧气配送后端

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

每个技术栈使用相同的氧气传递后端架构和 API 合同。

统一的氧气物流数据结构

使用一个架构管理用户、PatientSite、TankAssignment、RefillLog、EmergencyContact 和 DispatchEvent 记录。

PSI 跟踪交付路线

保持气缸压力可见,以便调度可以优先处理低气缸。

为技术人员 refill 日志历史记录

记录每个服务停靠点的 psiBefore、psiAfter 和 refillTime。

紧急联系人路由

将联系人与 PatientSite 记录关联,以便在路线更改时可以进行升级。

REST/GraphQL 氧气配送 APIs

将移动端、网页和运营仪表板与相同的后端契约集成。

可扩展的氧气物流架构

稍后添加路线、库存或服务备注,而无需重新设计核心配送架构。

氧气交付堆栈比较

比较所有支持技术的设置速度、SDK 风格和 AI 支持。

框架设置时间氧气交付的好处SDK 类型AI 支持
关于5分钟移动和Web的氧气输送单一代码库。类型化SDK完整
少于5分钟用于派送和PSI审核的快速Web仪表板。类型化SDK完整
大约3–7分钟用于司机和技术人员的跨平台移动应用。类型化SDK完整
快速(5分钟)设置用于交付协调的服务器渲染网页应用。输入的SDK完整
大约3–5分钟用于氧气物流的轻量级网页集成。输入的SDK完整
大约5分钟原生Android应用程序用于路线和PSI检查。输入的SDK完整
少于5分钟原生 iOS 应用程序用于交付和补充任务。输入的SDK完整
约3–7分钟React 供氧交付操作的网页用户界面。输入式SDK完整
快速(5分钟)设置企业网页应用程序用于调度和补充日志。输入式SDK完整
少于2分钟灵活的 GraphQL API 用于供氧交付数据。GraphQL API完整
快速(2分钟)设置REST API 集成用于氧气输送系统。REST API完整
~3分钟服务器端 PHP 后端用于交付协调。REST API完整
~3–7分钟.NET 后端用于氧气输送操作。输入型 SDK完整

设置时间反映了从项目启动到使用该模板架构的第一个 TankAssignment 或 PatientSite 查询的预期持续时间。

交付问题

关于使用此模板构建氧气罐交付后端的常见问题。

氧气配送团队在退货延迟或资产进行维护时如何保持可用性诚 实?
将PatientSite、TankAssignment和RefillLog链接到履行和退货检查的正确方法是什么?
我们如何在不重写预订逻辑的情况下添加新的氧气配送费用结构或捆绑包?
我如何使用 Flutter 运行坦克和交付站点的查询?
我如何管理与 Next.js Server Actions 的紧急联系集成?
React Native 能够离线缓存坦克 PSI 数据吗?
我如何防止未经授权的补充编辑?
在 Android 上显示交付路线的最佳方式是什么?
氧气输送流程是如何工作的?
这个氧气罐交付模板由哪些类支持?

受到全球开发者的信任

加入使用 Back4app 模板更快交付氧气配送产品的团队

G2 Users Love Us Badge

准备好构建您的氧气罐配送应用程序了吗?

几分钟内开始您的氧气配送项目。无需信用卡。

选择技术