Visualizacion de arch-integration-architecture. Status: Exploratory — decisiones pendientes marcadas.
Created: 2026-04-14 | Last Updated: 2026-04-14
| Platform | Model | # Integrations | Pattern |
|---|---|---|---|
| Shopify | Open App Store | 10,000+ | Kafka event bus, REST + webhooks |
| Square | Curated Marketplace | 300+ | Direct REST + webhooks |
| Toast | Curated Partners | 200+ | Kafka Data Connector (push) |
| Clover | App Market | 500+ | Direct REST + device APKs |
| QIIUB | Curated Partners | Phase 1: 5-10 | Service Bus Topics + REST + Webhooks |
| Category | Examples | Direction | Frequency | Priority |
|---|---|---|---|---|
| Accounting | QuickBooks Online, QB Desktop (IIF), Xero | Push (primary) | Hourly/daily batch | High |
| Pharmacy | Rx30, Liberty, PioneerRx | Bidirectional | Real-time (local) | POS-level — first integration |
| Ecommerce | Shopify, WooCommerce | Bidirectional | Near-real-time | High |
| ERP | Acumatica, SAP B1, Dynamics 365 BC | Bidirectional | Batch | Medium |
| Government/Tax | SURI (PR IVU filing) | Push | Monthly/quarterly | Medium |
| CRM | Salesforce, HubSpot | Push | Daily | Low |
| Delivery | DoorDash Drive, Uber Direct | Push + webhook | Event-driven | Low |
| Analytics | Power BI, Data Factory | Push | Nightly | Platform-level |
| Device | Examples | Protocol | Notes |
|---|---|---|---|
| Payment Terminal | PAX A-series, Ingenico, Verifone | TCP/IP or Serial via SDK | Primary: Dynamics Payments |
| Receipt Printer | Epson TM-T88 (ESC/POS), Star TSP100 | USB, TCP/IP, BT | Cash drawer kick via printer |
| Label Printer | Zebra GK/ZD (ZPL), TSC (TSPL) | TCP (9100), USB | Already in Phase 13 |
| Scale | Mettler-Toledo, CAS | Serial RS-232 | Produce, deli, bulk hardware |
| Barcode Scanner | Honeywell, Zebra, Socket Mobile | USB HID (keyboard) | Most emulate keyboard — no driver |
| Customer Display | Pole display (VFD), second screen | Serial, HDMI/HTTP | Second screen: HTML rendered by QIIUB |
| Service | Why Not an Integration |
|---|---|
| Email (Mandrill) | Platform-wide, no per-merchant config |
| Bot Protection (Turnstile) | Platform-wide, invisible to merchants |
| Error Tracking (Sentry) | Developer tooling |
| IoT Hub | Infrastructure layer (ADR-0016) |
| Scale | Messages/day | Operations/month | Cost/month |
|---|---|---|---|
| 1,000 merchants, 3 subs avg | 200K | 24M | ~$19 |
| 1,000 merchants, 1 sub (queues only) | 200K | 12M | ~$10 |
| 10x growth | 2M | 240M | ~$110 |
| Pattern | When | Example |
|---|---|---|
| Webhook push | Real-time TO external | Sale completed → QB journal entry |
| Webhook receive | Real-time FROM external | Shopify order → inventory deduction |
| Scheduled batch | Periodic bulk | Nightly sales summary → accounting |
| Polling | External has no webhooks | Check Acumatica for product changes |
| Responsibility | Who | Details |
|---|---|---|
| SAQ completion | Each merchant individually | Every business that accepts cards completes their own annual SAQ. BCPOS does not do it for them. |
| SAQ version | Determined by QIIUB's design | Because QIIUB uses P2PE terminals and never stores card data, merchants qualify for SAQ P2PE (~30 questions) instead of SAQ D (~300+ questions). |
| P2PE certification | Payment terminal vendor (PAX, Ingenico) | The terminal hardware and its encryption are certified by the vendor, not by QIIUB. |
| Processor relationship | Each merchant with their processor | Merchant signs agreement with Dynamics Payments (or other). QIIUB facilitates the connection, not the contract. |
| Role | View | Actions |
|---|---|---|
| Merchant Admin | Status badge, last sync, 24h success/failure, error message | Pause, resume, disconnect, re-auth |
| Partner Admin | All merchants sorted by health (errors first), aggregate stats | Bulk enable, template management |
| SystemAdmin | Cross-partner view, error rate trends, integration-level health | Deprecate, force-pause all, registry CRUD |
| POS Cashier | Nothing — cloud integrations are invisible | None |
| Field | Value |
|---|---|
| Code | pharmacy.rx30 |
| Category | Pharmacy |
| Type | POS-Level (local per store) — NOT cloud-level |
| Scope | Vertical (Pharmacy only) |
| Prerequisite | Module pharmacy.rx must be active |
| LocationId | Per-location (each pharmacy has its own Rx30 Linux server) |
| Reference impl | D:\BCPOSGit\rmh-pharmacy-extension |
| Option | How | Pros | Cons |
|---|---|---|---|
| A — Dedicated Rx relay | One designated terminal (or a lightweight service) handles Rx30 communication. Writes Rx data to its SQLite, possync.exe pushes to cloud, cloud pushes to other terminals via IoT Hub C2D. | Clean separation. Only 1 connection to Rx30 per store. Other terminals get Rx data via normal sync. | Latency (sync cycle delay). Single point of failure at the relay. |
| B — All terminals connect to Rx30 | Each terminal runs its own Rx30 communicator. Each reads from Rx30 independently. | No single point of failure. Any terminal can scan Rx. | N connections to Rx30 per store. Duplicate data. Rx30 may not support multiple concurrent clients well. |
| C — Local relay service (possync.exe) | possync.exe on ONE terminal also handles Rx30 communication. Rx data goes to local SQLite + immediate push to cloud. Cloud fans out to other terminals. | Reuses existing sync infrastructure. No extra process. | possync.exe gains pharmacy-specific logic. Coupling concern. |
| D — All terminals query Rx30 directly | Each terminal connects to the Rx30 Linux server as a data source for Rx queries (prescriptions, patient lookup). Rx30 server acts as the shared source of truth — no local copy needed for reads. | Simplest architecture. No relay, no sync of Rx data between terminals. Real-time queries, always current. | Rx30 must support concurrent connections from N terminals. Requires network access to Rx30 from every terminal. Rx30 partner must provide/allow this access. |
| Direction | Data | Current Method | Frequency |
|---|---|---|---|
| Rx30 → POS | Prescriptions ready for pickup | Socket or file | Real-time / periodic |
| Rx30 → POS | Patient info | Socket | On demand |
| Rx30 → POS | Drug NDC catalog | TBD | TBD |
| POS → Rx30 | Pickup confirmation | Socket (bidirectional mode) | Per transaction |
| POS → Rx30 | Rx sale recorded | Socket | Per transaction |
| POS → Rx30 | Void/return of Rx item | Socket | Per event |
| Feature | Current Implementation | QIIUB Status |
|---|---|---|
| Rx barcode scan at register | POS Extension + DB lookup | Design needed |
| Patient search | POS Extension UI | Design needed |
| Price verification | DB query | Design needed |
| Signature capture (HIPAA) | Topaz/Clover/Cayan devices | Design needed |
| Pickup authorization | POS Extension + Communicator | Design needed |
| Prescription reports | Crystal Reports in Manager | Design needed |
| # | Question | Impact |
|---|---|---|
| 1 | Does Rx30 have an API beyond socket/file? REST? Modern integration options? | Determines architecture options |
| 2 | Can Rx30 handle multiple concurrent socket connections? | Option B viability |
| 3 | Is a local relay (Option A/C) acceptable latency for pharmacy workflow? | UX at the register |
| 4 | Signature capture devices — Topaz still the standard or are there newer options? | Hardware procurement |
| 5 | HIPAA BAA — is it needed with Azure if Rx data stays local (POS-level)? | Compliance scope |