GP on Call x National Pharmacy Partner — Pharmacy-First Digital Consultation Platform
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.
National partner branches act as primary care touchpoints for triaged patients.
Pharmacists escalate complex cases to GPs via the platform with full clinical context.
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.
Patient chats with Roxanne, the AI triage assistant. Roxanne assesses symptoms and recommends a care pathway: pharmacy-first, GP, or emergency.
If pharmacy-treatable, patient is directed to the nearest partner pharmacy branch with a digital referral containing the triage summary.
Pharmacist reviews the triage notes in the Pharmacy Portal, assesses the patient, and dispenses OTC medication or a prescription basket.
If the pharmacist determines the case requires a GP, they trigger an in-platform escalation. The GP receives the full triage + pharmacist notes.
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.
Prescriptions are sent to the partner pharmacy for dispensing. The patient collects at branch or receives delivery.
| Feature | Requirement | Method | Direction |
|---|---|---|---|
| National Store Locator | Sync all active branch locations, trading hours, geo-coordinates, and contact details. | REST API / Batch CSV | Pharmacy to GPoC |
| Real-time Stock Check | Verify SKU-level availability for OTC medication packs at a specific branch. | REST API (SKU + Branch ID) | GPoC to Pharmacy |
| Order Injection | Programmatic push of OTC orders from the platform to the branch POS/dispensary system. | Webhook / REST API | GPoC to Pharmacy |
| Prescription Routing | Digital prescriptions from GPs routed to the nearest partner branch for dispensing. | Webhook / REST API | GPoC to Pharmacy |
| Order Status Updates | Real-time status updates (received, preparing, ready, collected, delivered). | Webhook | Pharmacy to GPoC |
| Delivery Tracking | GPS tracking for delivered orders, integrated with courier partners. | Webhook / REST API | Pharmacy to GPoC |
| Pharmacist Authentication | SSO or OAuth-based login for partner pharmacists to access the Pharmacy Portal. | OAuth 2.0 / SAML | Bidirectional |
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
}
]
}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 }
]
}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"
}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"
}The following data entities are shared between the platform and the pharmacy partner:
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.
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:
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.
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:
GP on Call drives qualified, pre-triaged patient traffic to partner branches, increasing footfall and prescription volume.
The subscription fee covers OTC packs and prescription baskets. Revenue share terms to be agreed between parties.
The platform pays the partner pharmacy a consultation fee per pharmacy-first visit (default: R99 per consultation).
When a pharmacist escalates to a GP, the GP consultation fee is processed through the platform. Standard payout terms apply.
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.