酸素タンク配送アプリバックエンドテンプレート
タンクの割り当てと配送調整
生産準備が整った 酸素タンク配送バックエンド を Back4app 上で: ユーザーアクセス、PatientSite 配送、TankAssignment PSI トラッキング、RefillLog 履歴、EmergencyContact 照会、及び DispatchEvent トラッキングを提供。ERダイアグラム、データ辞書、JSON スキーマ、API プレイグラウンド、及び迅速なブートストラップ用の AI エージェント プロンプトを含む。
重要なポイント
このテンプレートは、ユーザー役割、PatientSiteの配達ウィンドウ、TankAssignmentのPSI追跡、RefillLogの履歴、およびEmergencyContactの検索を備えた酸素配達用のバックエンドを提供します。これにより、コーディネーターはやり取りを減らして配達を管理できるようになります。
- タンクPSIの可視性 — TankAssignment.psiLevel、ステータス、およびlastCheckedAtを追跡し、配送チームがどの酸素タンクに注意が必要かを知ることができます。
- 問い合わせ可能な補充履歴 — tankAssignment、refillTime、psiBefore、psiAfter、refillReason、およびrefilledByを含むすべてのRefillLogエントリを記録します。
- 緊急連絡先ルーティング — EmergencyContactレコードをPatientSiteにリンクし、スタッフがdeliveryWindowStart、deliveryWindowEnd、またはアクセスノートが重要な場合に迅速に対応できるようにします。
- 配送とドライバーの調整 — TankAssignment.assignedSite、assignedDriver、およびDispatchEvent.eventTypeを使用して、ルートと引き渡しを明確に保ちます。
酸素タンク配達アプリのバックエンドを理解する
スムーズな酸素配達チェックアウトは、適格性、競合、預金、履行への引き渡しなど、数十のチェックを隠します。Back4app上のコアエンティティをモデル化して、酸素配達チームに単一のヤードからマルチサイト運用に成長できるバックエンドを提供します。このスキーマは、認証と配達ワークフロー制御が組み込まれたUser、PatientSite、TankAssignment、RefillLog、EmergencyContact、およびDispatchEventをカバーしています。好みのフロントエンドを接続して、より迅速に出荷します。
最適:
酸素供給: バックエンドスナップショット
モバイルクルーとバックオフィススタッフは、酸素供給の異なる現実の断片を見ています; 製品の仕事は、その断片を責任の追及なしに織り合わせることです。
ステークホルダーは、ここで配送とケアチームのユーザーロール、患者サイトの納品場所管理、各タンク割り当てのpsi追跡の整合性を確認できます: 名前、関係、および彼らが可能にするワークフロー。
配達モジュール機能
このハブのすべてのテクノロジーカードは、User、PatientSite、TankAssignment、RefillLog、EmergencyContact、および DispatchEvent を使用した同じ酸素供給バックエンドスキーマを使用しています。
配送とケアチームのユーザーロール
ユーザーはユーザー名、メール、ロール、電話番号、アクティブ状態を保存します。
患者サイトの配達場所管理
患者サイトはsiteName、addressLine1、city、region、postalCode、及びdeliveryWindowStart/endを保持します。
各TankAssignmentのPSI追跡
TankAssignmentはtankSerialNumber、psiLevel、status、assignedSite、及びassignedDriverを保持します。
リフィルログの履歴
リフィルログは tankAssignment、refillTime、psiBefore、psiAfter、refillReason、および refilledBy を追跡します。
ルートハンドオフのためのイベントを送信します。
DispatchEvent は tankAssignment、eventType、eventTime、recordedBy、および locationNote を保存します。
Back4appで酸素タンク配達のバックエンドを構築する理由は?
Back4appは、ユーザー、患者サイト、タンク割り当て、再充填ログ、緊急連絡先、および配送イベントのプリミティブを提供するので、あなたのチームはインフラ作業ではなく、安全な配送と明確な記録に集中できます。
- •タンクと補充の追跡: TankAssignment.psiLevel、ステータス、及び RefillLog.psiBefore/psiAfter は配達と補充作業を同じ信頼できる情報源に結びつけます。
- •配達地点の調整: PatientSite.deliveryWindowStart、deliveryWindowEnd、及びメモはルート計画と引き渡しの更新をサポートします。
- •緊急連絡先の統合: EmergencyContact は PatientSite にリンクされており、psiLevel が閾値を下回ったときに配達が正しい人に連絡できるようにします。
すべてのプラットフォームで1つのバックエンド契約を通じて、酸素配達ワークフローを迅速に構築・調整します。
コアデリバリーベネフィット
PSI、再充填、または連絡処理を見失うことなく、より迅速に移動できるデリバリーバックエンド。
より迅速なルートおよびサイト設定
物流テーブルを考案するのではなく、PatientSiteおよびTankAssignmentクラスから始める。
より安全なPSIチェック
TankAssignment.psiLevel、status、およびnextServiceDueAtを使用して、出荷前に低シリンダーを浮上させる。
明確な再充填の責任
ドライバーまたは技術者がタンク再充填を完了する際に、すべてのRefillLog.psiBeforeおよびpsiAfter値を再確認する。
信頼できる緊急エスカレーション
EmergencyContactをデリバリーフローに接続して、調整者がPatientSiteが遅延した場合に誰に連絡すべきかを知ることができる。
イベントトレイルを送信
DispatchEvent.eventType、eventTime、およびrecordedByを使用して、各引き継ぎ中に何が起こったかを表示します。
AIブートストラップワークフロー
1つの構造化されたプロンプトで、バックエンドの足場と統合ガイダンスを迅速に生成します。
酸素配送アプリの準備はできましたか?
Back4app AIエージェントに酸素配送バックエンドのスキャフォールドを作成させ、TankAssignment PSIトラッキング、RefillLog履歴、およびEmergencyContactルックアップを1つのプロンプトから生成します。
無料で開始 — 月あたり50 AIエージェントプロンプト、クレジットカードは不要
配送テクノロジースタック
この酸素配送バックエンドテンプレートに含まれるすべて。
関係図
酸素供給バックエンドスキーマのエンティティ関係モデル。
ユーザー、配達サイト、タンク割り当て、再充填ログ、緊急連絡先、dispatchイベントを網羅したスキーマ。
図のソースを見る
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レビュー、再充填ログ作成、dispatchイベント更新、および緊急連絡先参照のための典型的なランタイムフロー。
図のソースを見る
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、およびノートを含むPatientSiteの詳細を作成または更新する必要があります。
タンクと再充填の整合性
タンク割り当ての更新および再充填ログの作成を、確認されたアクセスを持つ配送コーディネーターまたはドライバーに制限します。
スコープされた配送の可視性
配送イベントおよび緊急連絡先の読み取りを、割り当てられたケアチーム、配送者、またはそのルートを扱うドライバーに制限します。
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 でこの正確なスキーマと動作に基づく酸素タンク配送アプリバックエンドを作成する。 スキーマ: 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. DispatchEvent: タンク割当 (タンク割当へのポインタ、必須)、イベントタイプ、イベント時刻、記録者 (ユーザーへのポインタ、必須)、場所メモ; objectId、createdAt、updatedAt. セキュリティ: - ディスパッチャーはタンク割当、充填ログ、DispatchEvent および患者サイトレコードの作成と更新ができます。 - ドライバーは割り当てられたタンク割当の PSI チェックを更新し、充填ログエントリを作成し、彼らが処理するルートの DispatchEvent 更新を追加できます。 - ケアチームユーザーは自分の患者サイトレコードと緊急連絡先エントリを表示できますが、PSI履歴を編集することはできません。 - 緊急連絡先データは、サイトまたはディスパッチ操作に関与する認証済みのユーザーのみに表示される必要があります。 認証: - サインアップ、ログイン、ログアウト。 動作: - PSI レベルを追跡し、充填ログを保存し、緊急連絡先を添付し、配送ハンドオフを記録します。 - 各サイトの最新のタンク圧、充填履歴、配送ウィンドウ、および緊急連絡先を表示します。 配信: - スキーマ、ACL、CLPを持つ Back4app アプリ; ディスパッチボード、ドライバー経路チェック、充填ログ、および緊急連絡先検索のためのフロントエンド。
以下のボタンを押して、このテンプレートプロンプトが事前に入力されたエージェントを開いてください。
これは技術の接尾辞なしの基本プロンプトです。生成されたフロントエンドスタックを後で調整できます。
APIテスター
酸素供給スキーマに対して、RESTおよびGraphQLエンドポイントを試してみてください。レスポンスはモックデータを使用し、Back4appアカウントは必要ありません。
このテンプレートと同じスキーマを使用しています。
技術を選択してください
各カードを展開して、選択したスタックと PatientSite、TankAssignment、RefillLog を統合する方法を確認してください。
Flutter 酸素供給バックエンド
React 酸素供給バックエンド
React ネイティブ 酸素供給バックエンド
Next.js 酸素供給バックエンド
JavaScript 酸素供給バックエンド
Android 酸素供給バックエンド
iOS 酸素供給バックエンド
Vue 酸素供給バックエンド
Angular 酸素供給バックエンド
GraphQL 酸素供給バックエンド
REST API 酸素供給バックエンド
PHP 酸素供給バックエンド
.NET 酸素供給バックエンド
各テクノロジーで得られるもの
すべてのスタックは同じ酸素供給バックエンドスキーマと API 契約を使用します。
統合された酸素物流データ構造
1つのスキーマでユーザー、PatientSite、TankAssignment、RefillLog、EmergencyContact、および DispatchEvent レコードを管理します。
配達ルートのための PSI トラッキング
タンク圧力を表示して、派遣が低いシリンダーを優先できるようにします。
技術者のための補充ログ履歴
各サービス停止のためにpsiBefore、psiAfter、およびrefillTimeを記録します。
緊急連絡先のルーティング
連絡先をPatientSiteの記録に関連付けて、ルートが変更されたときにエスカレーションが利用できるようにします。
酸素供給のためのREST/GraphQL API
モバイル、ウェブ、運用ダッシュボードを同じバックエンド契約で統合します。
酸素物流のための拡張可能なアーキテクチャ
コアの配信スキーマを再作成することなく、後でルート、在庫、またはサービスノートを追加できます。
酸素配信スタック比較
すべてのサポートされている技術におけるセットアップ速度、SDKスタイル、AIサポートを比較します。
| フレームワーク | セットアップ時間 | 酸素配信の利点 | SDKタイプ | AIサポート |
|---|---|---|---|---|
| 約5分 | モバイルとウェブの酸素供給のためのシングルコードベース。 | 型付きSDK | フル | |
| 5分未満 | 配送とPSIレビューのための迅速なウェブダッシュボード。 | 型付きSDK | フル | |
| 約3〜7分 | ドライバーと技術者のためのクロスプラットフォームモバイルアプリ。 | 型付きSDK | フル | |
| 迅速な(5分)セットアップ | 配達調整のためのサーバーレンダリングされたウェブアプリ。 | 型付けされたSDK | フル | |
| 約3〜5分 | 酸素物流のための軽量ウェブ統合。 | 型付けされたSDK | フル | |
| 約5分 | ルートおよびPSIチェックのためのネイティブ Android アプリ。 | 型付けされたSDK | フル | |
| 5分未満 | 配達と補充タスクのためのネイティブ iOS アプリ。 | 型付けされたSDK | フル | |
| 約3~7分 | 酸素配達業務のための React 的なウェブUI。 | タイプされたSDK | フル | |
| 迅速な(5分)セットアップ | 配送と補充ログのためのエンタープライズウェブアプリ。 | タイプされたSDK | フル | |
| 2分未満 | 酸素配達データのための柔軟な GraphQL API。 | GraphQL API | フル | |
| クイック(2分)セットアップ | 酸素供給システム用のREST API統合。 | REST API | フル | |
| 約3分 | 配信調整のためのサーバーサイドPHPバックエンド。 | REST API | フル | |
| 約3〜7分 | 酸素供給業務のための.NETバックエンド。 | 型付けSDK | フル |
セットアップ時間は、プロジェクトのブートストラップからこのテンプレートスキーマを使用した最初のTankAssignmentまたはPatientSiteクエリまでの予想所要時間を示します。
配達に関する質問
このテンプレートを使用して酸素タンクの配達バックエンドを構築する際のよくある質問。