This repository has been archived on 2026-08-11. You can view files and clone it, but cannot push or open issues or pull requests.
Gishen-B2B/docs/backend/entities/prescription.md
kirukib 3778801ef5 Ship Gishen B2B institutional portal with polished layout and mock-backed flows.
Deliver role-aware shell (sidebar, breadcrumbs, quick search, tables, detail/create layouts), locale-ready pages, shared backend/feature docs, and Vercel project config so HR, finance, and members can demo against typed mocks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 21:18:23 +03:00

3.9 KiB

Entity: Prescription

Member-submitted prescription for pharmacist review and covered medicine fulfillment.

Workspace: /Users/kirukib/Desktop/Yaltopia Project/Gishen-B2B

Fields

Field Type Required Notes
id string ✓ rx_*
member_id string ✓
org_id string ✓
customer_id string ✓ Shared identity
status PrescriptionStatus ✓
pages PrescriptionPage[] ✓ Images/files — clinical withhold
medicine_lines MedicineLine[] Pharmacist-entered after review
prescriber_notes string Clinical — withheld from HR/Finance
diagnosis_codes string[] Withheld
days_supply integer For refill reminders
refill_due_at date Computed
submitted_at Timestamp
reviewed_at Timestamp Admin pharmacist
reviewer_id string Admin user
query_message string If status=queried
rejection_reason string If status=rejected
created_at Timestamp ✓
updated_at Timestamp ✓

PrescriptionStatus

draft | submitted | under_review | approved | queried | rejected

PrescriptionPage

Field Type Notes
id string
page_number integer
url string Signed URL
mime_type string
uploaded_at Timestamp

MedicineLine

Field Type Notes
name string Clinical
dosage string
quantity integer
sku string
instructions string

Status flow

draft → submitted → under_review → approved
                              ↘ queried → (member resubmits) → under_review
                              ↘ rejected

Review/dispensing queue lives in Gishen-Admin. B2B emits prescription.submitted and consumes review status updates.

Validation rules

Rule Error code
Member must be active MEMBER_INACTIVE
At least one page on submit VALIDATION_FAILED
Max 10 pages VALIDATION_FAILED
Only MEMBER (own) or SUPER_USER may upload FORBIDDEN

Clinical withhold

Role pages medicine_lines prescriber_notes diagnosis_codes Status/metadata
MEMBER (own) ✓ ✓ when approved ✓ ✓ ✓
SUPER_USER ✓ ✓ ✓ ✓ ✓
HR_ADMIN ✗ ✗ ✗ ✗ ✓ status + dates only
FINANCE ✗ ✗ ✗ ✗ ✗ (use spend aggregates)

HR/Finance listing endpoint returns 403 or redacted stub if clinical fields requested.

Sample payload (member view)

{
  "id": "rx_01H001",
  "member_id": "mbr_01HMEM001",
  "org_id": "org_01HQXYZ",
  "customer_id": "cus_01HSHARED",
  "status": "under_review",
  "pages": [
    {
      "id": "rxp_01",
      "page_number": 1,
      "url": "https://storage.gishen.../rx_01H001_p1.jpg",
      "mime_type": "image/jpeg",
      "uploaded_at": "2026-03-10T08:00:00Z"
    }
  ],
  "medicine_lines": [],
  "days_supply": null,
  "refill_due_at": null,
  "submitted_at": "2026-03-10T08:00:00Z",
  "reviewed_at": null,
  "created_at": "2026-03-10T07:55:00Z",
  "updated_at": "2026-03-10T08:00:00Z"
}

Sample payload (HR redacted)

{
  "id": "rx_01H001",
  "member_id": "mbr_01HMEM001",
  "status": "under_review",
  "submitted_at": "2026-03-10T08:00:00Z",
  "clinical_withheld": true
}

Events

Event When
prescription.submitted Member submits
prescription.review_updated Admin review (consumed)

Platform notes

  • Multi-page photo/file upload on web; edge-detection camera is Mobile-only.
  • No handwritten OCR.