氧气罐配送应用后端模板
罐分配与调度协调
一个在 Back4app 上的生产就绪 氧气罐配送后端,具有用户访问、PatientSite 配送、TankAssignment PSI 追踪、RefillLog 历史、紧急联系人查询和 DispatchEvent 追踪。包括 ER 图、数据字典、JSON 模式、API 游乐场和一个快速引导的 AI 代理 提示。
关键要点
此模板为您提供了一个包含用户角色、患者地点交付窗口、坦克分配PSI跟踪、补充日志历史和紧急联系人查找的氧气交付后端,以便协调员可以更少地进行来回沟通来管理交付。
- 罐PSI可见性 — 跟踪TankAssignment.psiLevel、状态和lastCheckedAt,以便调度团队知道哪些氧气罐需要关注。
- 您可以查询的补充历史记录 — 记录每个补充日志条目,包括tankAssignment、refillTime、psiBefore、psiAfter、refillReason和refilledBy。
- 紧急联系人路由 — 将紧急联系人记录链接到患者地点,以便工作人员在deliveryWindowStart、deliveryWindowEnd或访问信息重要时能迅速采取行动。
- 调度和司机协调 — 使用 TankAssignment.assignedSite、assignedDriver 和 DispatchEvent.eventType 来保持路线和交接的清晰。
理解氧气罐交付应用程序后端
顺畅的氧气交付结账隐藏了数十个检查:资格、冲突、押金和交付的交接。在 Back4app 上建模核心实体,以为氧气交付团队提供一个可以从单个院子扩展到多站点操作的后端。该模式涵盖用户、PatientSite、TankAssignment、RefillLog、紧急联系人和 DispatchEvent,并内置了身份验证与交付工作流控制。连接您首选的前端,快速发货。
最佳适用:
氧气配送:后端快照
移动小组和后勤人员在氧气配送中看到不同的现实片段;产品的任务是无责备地拼接这些片段。
利益相关者可以在这里对调度和护理团队的用户角色、患者站点配送位置管理、每个气瓶分配的 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 助手提示,无需信用卡
交付技术栈
此氧气配送后端模板包含的一切。
关系图
氧气输送后端架构的实体关系模型。
涵盖用户、交付地点、油罐分配、补充日志、紧急联系人和调度事件的架构。
查看图表源
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审查、补充日志创建、调度事件更新和紧急联系人查找的典型运行流程。
查看图表源
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现场指南
氧气交付架构中每个类的完整字段级参考。
| 字段 | 类型 | 描述 | 必需 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自动 |
| username | String | User login name | |
| String | User email address | ||
| password | String | Hashed password (write-only) | |
| role | String | Role in the app (e.g. dispatcher, driver, careTeam, patient) | |
| phoneNumber | String | Primary contact phone number | — |
| active | Boolean | Whether the account can access the app | |
| createdAt | Date | Auto-generated creation timestamp | 自动 |
| updatedAt | Date | Auto-generated last-update timestamp | 自动 |
9 字段在 User
访问和权限
ACL 和 CLP 策略如何保护用户、站点、坦克、补充日志和紧急联系人。
患者站点边界
只有授权的工作人员可以创建或更新患者站点详情,包括 deliveryWindowStart、deliveryWindowEnd 和备注。
罐和补充完整性
限制 TankAssignment 更新和 RefillLog 创建仅限于具有验证访问权限的调度协调员或司机。
范围调度可见性
将 DispatchEvent 和 EmergencyContact 的读取限制为处理该路线的指定护理团队、调度员或司机。
JSON 模式
原始 JSON 模式定义,准备复制到 Back4app 或用作实施参考。
{
"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 上创建一个氧气罐配送应用后端,使用此确切的模式和行为。 模式: 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;用于调度板、司机路线检查、充值日志和紧急联系人查找的前端。
按下面的按钮以打开带有此模板提示的代理。
这是没有技术后缀的基础提示。你可以在之后调整生成的前端堆栈。
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 查询的预期持续时间。
交付问题
关于使用此模板构建氧气罐交付后端的常见问题。