Technical Requirements Document

Pharmacy Partnership Integration

GP on Call x National Pharmacy Partner — Pharmacy-First Digital Consultation Platform

Version 1.0•August 2026•Confidential

1. Executive Summary

GP on Call is transitioning from a GP-first to a pharmacy-first gatekeeper model. Patients presenting with mild to moderate symptoms will be routed to a partner pharmacy for initial assessment and treatment. The pharmacist acts as the first point of contact, with the ability to escalate to a GP through the platform when clinically necessary.

This document outlines the technical requirements for integrating GP on Call's digital consultation platform with the partner pharmacy group's national network, covering API specifications, data flows, and operational workflows.

2. Architecture Overview

Pharmacy Network

National partner branches act as primary care touchpoints for triaged patients.

GP Escalation

Pharmacists escalate complex cases to GPs via the platform with full clinical context.

Medication Fulfilment

OTC packs and prescription baskets dispensed at branch or delivered to patient.

The platform is built on a serverless architecture using the Base44 BaaS platform. All patient data is stored in encrypted, POPIA-compliant databases with role-based access control. The pharmacy integration layer communicates via REST APIs and webhooks.

3. Patient Journey

1

AI Triage with Roxanne

Patient chats with Roxanne, the AI triage assistant. Roxanne assesses symptoms and recommends a care pathway: pharmacy-first, GP, or emergency.

2

Pharmacy Routing

If pharmacy-treatable, patient is directed to the nearest partner pharmacy branch with a digital referral containing the triage summary.

3

Pharmacist Consultation

Pharmacist reviews the triage notes in the Pharmacy Portal, assesses the patient, and dispenses OTC medication or a prescription basket.

4

Escalation (if needed)

If the pharmacist determines the case requires a GP, they trigger an in-platform escalation. The GP receives the full triage + pharmacist notes.

5

GP Consultation

If a GP is available, the patient is connected immediately. If no GP is active, the patient schedules a consultation for a specific time slot.

6

Fulfilment

Prescriptions are sent to the partner pharmacy for dispensing. The patient collects at branch or receives delivery.

4. Integration Requirements

FeatureRequirementMethodDirection
National Store LocatorSync all active branch locations, trading hours, geo-coordinates, and contact details.REST API / Batch CSVPharmacy to GPoC
Real-time Stock CheckVerify SKU-level availability for OTC medication packs at a specific branch.REST API (SKU + Branch ID)GPoC to Pharmacy
Order InjectionProgrammatic push of OTC orders from the platform to the branch POS/dispensary system.Webhook / REST APIGPoC to Pharmacy
Prescription RoutingDigital prescriptions from GPs routed to the nearest partner branch for dispensing.Webhook / REST APIGPoC to Pharmacy
Order Status UpdatesReal-time status updates (received, preparing, ready, collected, delivered).WebhookPharmacy to GPoC
Delivery TrackingGPS tracking for delivered orders, integrated with courier partners.Webhook / REST APIPharmacy to GPoC
Pharmacist AuthenticationSSO or OAuth-based login for partner pharmacists to access the Pharmacy Portal.OAuth 2.0 / SAMLBidirectional

5. API Specifications

5.1 Store Locator API

Returns a list of partner pharmacy branches filtered by location and radius.

GET /api/v1/branches?lat={lat}&lng={lng}&radius_km={km}

Response:
{
  "branches": [
    {
      "branch_id": "PCL-001",
      "name": "Partner Pharmacy - Sandton",
      "address": "123 Main St, Sandton, Gauteng",
      "latitude": -26.1075,
      "longitude": 28.0566,
      "phone": "+27 11 555 0100",
      "trading_hours": "Mon-Fri 08:00-18:00, Sat 08:00-13:00",
      "offers_delivery": true,
      "delivery_radius_km": 10
    }
  ]
}

5.2 Stock Check API

Checks availability of OTC pack SKUs at a specific branch.

POST /api/v1/stock/check

Request:
{
  "branch_id": "PCL-001",
  "skus": ["OTC-COLD-001", "OTC-PAIN-002"]
}

Response:
{
  "branch_id": "PCL-001",
  "items": [
    { "sku": "OTC-COLD-001", "in_stock": true, "quantity": 15 },
    { "sku": "OTC-PAIN-002", "in_stock": false, "quantity": 0 }
  ]
}

5.3 Order Push Webhook

Platform pushes an OTC order to the pharmacy branch for fulfilment.

POST {pharmacy_webhook_url}

Request:
{
  "order_id": "GPoC-ORD-2026-001",
  "branch_id": "PCL-001",
  "patient_ref": "anonymised_token",
  "items": [
    { "sku": "OTC-COLD-001", "quantity": 1 }
  ],
  "fulfilment_type": "collection | delivery",
  "delivery_address": "optional, if delivery",
  "subscription_plan": "pharmacy_essential | pharmacy_plus",
  "entitlement_type": "otc_pack | prescription_basket",
  "triage_summary": "Mild cold symptoms, pharmacist assessment recommended",
  "callback_url": "https://api.gponcall.co.za/webhooks/pharmacy-status"
}

5.4 Order Status Webhook (Pharmacy to GPoC)

Pharmacy sends order status updates back to the platform.

POST https://api.gponcall.co.za/webhooks/pharmacy-status

Request:
{
  "order_id": "GPoC-ORD-2026-001",
  "status": "received | preparing | ready | collected | delivered",
  "branch_id": "PCL-001",
  "timestamp": "2026-08-11T10:30:00Z",
  "tracking_url": "optional, for deliveries"
}

6. Shared Data Model

The following data entities are shared between the platform and the pharmacy partner:

Pharmacy Branch

branch_id
name
address
geo-coordinates
trading_hours
delivery_capability

OTC Order

order_id
branch_id
patient_ref
items[]
fulfilment_type
subscription_plan
entitlement_type

Prescription Basket

basket_id
prescription_id
branch_id
medications[]
status
patient_ref

Order Status

order_id
status
timestamp
tracking_url
branch_id

7. Security & Compliance

POPIA Compliance

All patient data is processed in compliance with the Protection of Personal Information Act. Patient references sent to the pharmacy are anonymised tokens - no raw PII is transmitted unless explicitly consented.

Data Encryption

All API communications use TLS 1.2+. Data at rest is encrypted using AES-256.

Authentication

API calls are authenticated using OAuth 2.0 bearer tokens with scoped permissions. Webhooks are signed with HMAC-SHA256.

Audit Trail

All order transactions, status changes, and data accesses are logged in an immutable audit trail.

SAPC Compliance

Pharmacy partner must hold a valid South African Pharmacy Council (SAPC) license. Verified at onboarding and periodically.

8. Operational Workflows

8.1 Pharmacy-to-GP Escalation

When a pharmacist determines a patient requires GP care, they trigger an escalation in the Pharmacy Portal. The platform creates a referral record that includes:

  • Original AI triage summary from Roxanne
  • Pharmacist's clinical notes and assessment
  • Any OTC medication already dispensed
  • Patient's chronic conditions and allergies (with consent)

If a GP is available, the patient is connected immediately. If no GP is active, the patient is offered the option to schedule a consultation for a specific time slot.

8.2 Entitlement Tracking

Each subscription plan includes annual OTC pack and prescription basket allowances. The platform tracks usage in a 12-month rolling window. When a patient visits a partner pharmacy:

  • The platform validates the patient's active subscription and remaining entitlements
  • If entitled, the OTC pack or prescription basket is marked as used
  • The pharmacy dispenses at no additional cost to the patient (covered by subscription)
  • If entitlements are exhausted, the patient pays the standard pharmacy price

9. Partnership Terms

Platform Value

GP on Call drives qualified, pre-triaged patient traffic to partner branches, increasing footfall and prescription volume.

Subscription Revenue

The subscription fee covers OTC packs and prescription baskets. Revenue share terms to be agreed between parties.

Pharmacy Consultation Fee

The platform pays the partner pharmacy a consultation fee per pharmacy-first visit (default: R99 per consultation).

GP Escalation Revenue

When a pharmacist escalates to a GP, the GP consultation fee is processed through the platform. Standard payout terms apply.

10. Implementation Roadmap

Phase 1

Core Integration (Weeks 1-3)

  • Store locator API sync
  • Pharmacy Portal deployment for partner pharmacists
  • OTC order push webhook
  • Order status callback webhook
Phase 2

Entitlement & Billing (Weeks 3-5)

  • Subscription entitlement tracking
  • OTC pack validation at branch
  • Prescription basket dispensing flow
  • Reconciliation reporting
Phase 3

Escalation & Delivery (Weeks 5-7)

  • Pharmacy-to-GP escalation workflow
  • Deferred GP scheduling for no-GP-available cases
  • Delivery tracking integration
  • Courier partner routing
Phase 4

Go-Live & Optimisation (Weeks 7-8)

  • End-to-end testing with pilot branches
  • Pharmacist training and onboarding
  • Production deployment
  • Monitoring and SLA enforcement

11. Contact

For technical questions regarding this integration, please contact the GP on Call technical team. This document is confidential and intended solely for the evaluation of the partnership between GP on Call and the recipient pharmacy group.

(c) 2026 GP on Call - South Africa - POPIA Compliant - Confidential