酸素配達
AIエージェントで構築
酸素タンク配送バックエンド

酸素タンク配送アプリバックエンドテンプレート
タンクの割り当てと配送調整

生産準備が整った 酸素タンク配送バックエンド を Back4app 上で: ユーザーアクセス、PatientSite 配送、TankAssignment PSI トラッキング、RefillLog 履歴、EmergencyContact 照会、及び DispatchEvent トラッキングを提供。ERダイアグラム、データ辞書、JSON スキーマ、API プレイグラウンド、及び迅速なブートストラップ用の AI エージェント プロンプトを含む。

重要なポイント

このテンプレートは、ユーザー役割、PatientSiteの配達ウィンドウ、TankAssignmentのPSI追跡、RefillLogの履歴、およびEmergencyContactの検索を備えた酸素配達用のバックエンドを提供します。これにより、コーディネーターはやり取りを減らして配達を管理できるようになります。

  1. タンクPSIの可視性TankAssignment.psiLevel、ステータス、およびlastCheckedAtを追跡し、配送チームがどの酸素タンクに注意が必要かを知ることができます。
  2. 問い合わせ可能な補充履歴tankAssignment、refillTime、psiBefore、psiAfter、refillReason、およびrefilledByを含むすべてのRefillLogエントリを記録します。
  3. 緊急連絡先ルーティングEmergencyContactレコードをPatientSiteにリンクし、スタッフがdeliveryWindowStart、deliveryWindowEnd、またはアクセスノートが重要な場合に迅速に対応できるようにします。
  4. 配送とドライバーの調整TankAssignment.assignedSite、assignedDriver、およびDispatchEvent.eventTypeを使用して、ルートと引き渡しを明確に保ちます。

酸素タンク配達アプリのバックエンドを理解する

スムーズな酸素配達チェックアウトは、適格性、競合、預金、履行への引き渡しなど、数十のチェックを隠します。Back4app上のコアエンティティをモデル化して、酸素配達チームに単一のヤードからマルチサイト運用に成長できるバックエンドを提供します。このスキーマは、認証と配達ワークフロー制御が組み込まれたUser、PatientSite、TankAssignment、RefillLog、EmergencyContact、およびDispatchEventをカバーしています。好みのフロントエンドを接続して、より迅速に出荷します。

最適:

酸素タンク配達アプリ医療機器におけるロジスティクス配送調整ツール再充填追跡プラットフォーム緊急連絡ワークフローBaaSを酸素供給製品のために選択するチーム

酸素供給: バックエンドスナップショット

モバイルクルーとバックオフィススタッフは、酸素供給の異なる現実の断片を見ています; 製品の仕事は、その断片を責任の追及なしに織り合わせることです。

ステークホルダーは、ここで配送とケアチームのユーザーロール、患者サイトの納品場所管理、各タンク割り当ての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エージェントプロンプト、クレジットカードは不要

配送テクノロジースタック

この酸素配送バックエンドテンプレートに含まれるすべて。

フロントエンド
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レビュー、再充填ログ作成、dispatchイベント更新、および緊急連絡先参照のための典型的なランタイムフロー。

図のソースを見る
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、およびノートを含むPatientSiteの詳細を作成または更新する必要があります。

タンクと再充填の整合性

タンク割り当ての更新および再充填ログの作成を、確認されたアクセスを持つ配送コーディネーターまたはドライバーに制限します。

スコープされた配送の可視性

配送イベントおよび緊急連絡先の読み取りを、割り当てられたケアチーム、配送者、またはそのルートを扱うドライバーに制限します。

JSONスキーマ

Back4appにコピーするための生のJSONスキーマ定義、または実装の参照として使用します。

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. DispatchEvent: タンク割当 (タンク割当へのポインタ、必須)、イベントタイプ、イベント時刻、記録者 (ユーザーへのポインタ、必須)、場所メモ; objectId、createdAt、updatedAt.

セキュリティ:
- ディスパッチャーはタンク割当、充填ログ、DispatchEvent および患者サイトレコードの作成と更新ができます。
- ドライバーは割り当てられたタンク割当の PSI チェックを更新し、充填ログエントリを作成し、彼らが処理するルートの DispatchEvent 更新を追加できます。
- ケアチームユーザーは自分の患者サイトレコードと緊急連絡先エントリを表示できますが、PSI履歴を編集することはできません。
- 緊急連絡先データは、サイトまたはディスパッチ操作に関与する認証済みのユーザーのみに表示される必要があります。

認証:
- サインアップ、ログイン、ログアウト。

動作:
- PSI レベルを追跡し、充填ログを保存し、緊急連絡先を添付し、配送ハンドオフを記録します。
- 各サイトの最新のタンク圧、充填履歴、配送ウィンドウ、および緊急連絡先を表示します。

配信:
- スキーマ、ACL、CLPを持つ Back4app アプリ; ディスパッチボード、ドライバー経路チェック、充填ログ、および緊急連絡先検索のためのフロントエンド。

以下のボタンを押して、このテンプレートプロンプトが事前に入力されたエージェントを開いてください。

これは技術の接尾辞なしの基本プロンプトです。生成されたフロントエンドスタックを後で調整できます。

数分でデプロイ月に50の無料プロンプトクレジットカードは不要

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クエリまでの予想所要時間を示します。

配達に関する質問

このテンプレートを使用して酸素タンクの配達バックエンドを構築する際のよくある質問。

酸素配達チームは、返却が遅れた場合や資産がメンテナンスに出ているときに、どのように在庫の正直さを保つのですか?
PatientSite、TankAssignment、およびRefillLogを実施および返却検査にどのようにリンクするのが正しい方法ですか?
予約ロジックを再記述することなく、新しい酸素配達料金体系やバンドルを追加するにはどうすればよいですか?
どうやって Flutter でタンクと配送サイトのクエリを実行しますか?
Next.js Server Actions との緊急連絡先統合をどのように管理しますか?
React Native はタンク PSI データをオフラインでキャッシュできますか?
無許可のリフィル編集を防ぐにはどうすればよいですか?
Android で配達ルートを表示する最良の方法は何ですか?
酸素供給はどのようにエンドツーエンドで機能しますか?
この酸素タンク配送テンプレートを支えるクラスは何ですか?

世界中の開発者に信頼されています

Back4appのテンプレートで酸素配送製品をより早く発送するチームに参加しよう

G2 Users Love Us Badge

酸素タンク配送アプリを構築する準備はできましたか?

数分で酸素配送プロジェクトを開始できます。クレジットカードは不要です。

テクノロジーを選択