Building on Lithos, Part 2: adding prescriptions to an existing app
You have users, a product they open every week, and a category — weight, hormones, hair, sleep, longevity — where the next step for many of them is a prescription. This post is the integration path from your existing user to a shipped, clinician-reviewed prescription, without becoming a medical group.
Adding prescriptions to an existing app means putting a licensed medical practice behind a button, not becoming one. The path: configure your program’s protocol and states at onboarding; map each user to a Lithos patient by your external ID with the telehealth consent timestamp captured in your UI; run intake inside your app; submit an initial encounter; react to the physician’s decision over webhooks; show order status; and run renewals as follow-up encounters with a lightweight check-in. Design the boundaries deliberately — clear disclosure that a licensed physician decides, care billed separately through your own Stripe account, marketing that respects health-privacy rules, and protected health information kept on the infrastructure rather than in your database. Teams ship this in two to four weeks.
What you are actually adding
Behind the button is a licensed physician network with multi-state licensure, protocols for each treatment, AI-prepared consultations, e-prescribing and pharmacy routing, and a stack of rules about consent, identity, privacy, and which treatments may be handled asynchronously where. You are not building any of that. You are adding a surface in your product where a user can request care under the protocol configured for your program, and reacting to what the clinician decides. The architecture post explains the layers; this one is the integration.
The path, step by step
- Configure the program. At onboarding, clinical protocol configuration sets the treatments providers may prescribe for your users, the required
intake_datakeys for each encounter type, and the states you open first. Every tier covers all 50 states; you choose where to market. - Map your user to a patient. When a user starts, create a Lithos patient with your user ID as
external_id, their demographics and address, and thetelehealth_consented_attimestamp your flow captured. This is the record everything else hangs on; it is created once, and a duplicateexternal_idis rejected so you cannot create the same user twice. - Run intake in your UI. Render your program’s intake in your design system. Validate inline for experience; the API validates
intake_dataagain against your configured keys so incomplete cases never reach a physician. Our intake design guide covers the anatomy. - Submit the encounter. Create an
initialencounter with the patient id andintake_data. Lithos prepares it — intake, assessment, clinical summary — and routes it to a licensed physician in the user’s state; the first encounter also sets the patient’s assigned clinician for continuity. - React to the decision. The physician approves or rejects, or the encounter pauses as
escalatedwhen more information is needed; you learn which over a webhook, fetch the encounter, and update the user’s screen. Approvals produce prescriptions and a pharmacy order automatically. - Show the order. Order status — created, processing, completed — arrives as webhooks, with the fulfilling pharmacy on the order. “Where is my medication” becomes a screen in your app rather than a support ticket.
- Run renewals as check-ins. When a refill is due, collect the protocol’s follow-up in your app and submit a
follow_upencounter. The record already holds the history; the check-in asks what changed, and each prescription’sdays_supplytells you when the next one is due.
# 1 — once per user
POST /v1/patients
{ "external_id": "usr_1042", "first_name": "…", "last_name": "…", "date_of_birth": "…", "sex": "…",
"address": { "line1": "…", "city": "…", "state": "TX", "postal_code": "…" },
"email": "…", "phone": "+1…", "telehealth_consented_at": "2026-09-23T14:02:00Z" }
# 2 — per request (renewals use "encounter_type": "follow_up")
POST /v1/encounters
{ "patient_id": "pat_test_…", "encounter_type": "initial", "intake_data": { …your configured keys… } }
# 3 — your webhook handler (thin payload → GET the resource)
# encounter.approved → GET /v1/encounters/{id}: show the decision, read prescriptions[].days_supply
# order.completed → GET /v1/orders/{id}: confirm, schedule the follow-up
Design the boundaries
The integration is a few weeks of engineering. The design decisions around it are what make the feature lawful and trusted.
- Say who decides. Users must understand that a licensed clinician reviews their request and may decline it, and that they are entering a telehealth relationship. Disclosures, consent language, and the clinician’s identity on the prescription are not optional and should read as reassurance, not fine print.
- Separate care from product. Price the medical program on its own line — a subscription or per-visit fee — distinct from your app, your merchandise, or your supplements. It keeps billing honest and keeps you clear of fee-splitting and kickback concerns; see anti-kickback rules for telehealth marketing.
- Fix the marketing stack. Pages and screens that handle health information cannot carry advertising pixels. Decide which surfaces are “health” before launch; see HIPAA and your marketing stack.
- Draw the data line. Keep protected health information on Lithos under its BAA. Your database holds the external ID, the care-plan status, and what your product needs to render — not the chart. If you do hold PHI, you need a BAA and the controls that come with it.
- Handle the no. Some users will be declined or routed to a live visit. Design that screen with the same care as the yes: what happened, what the options are, who to contact.
Business model
Most embedded programs run a monthly care subscription that covers clinician review, renewals, and support, with medication either included or billed at pharmacy cost. The two questions to settle early are refunds — what happens when a clinician declines after the user paid — and pauses, which are common in weight and hormone programs. Our guides to pricing GLP-1 subscriptions and refunds and chargebacks cover both; the short version is to charge for care at decision time, not at intake.
Timeline
After a working session and a tailored proposal, technical kickoff issues API access and sandbox credentials. Weeks one and two are intake and webhooks in your app, tested end to end. Weeks three and four are first real users in the states you open, then the rest at your pace. The week-by-week plan in the launch timeline applies with one difference: you already have the users.
Lithos is the infrastructure behind embedded care: your app submits intake as an encounter, AI prepares the case, a licensed physician in the user’s state reviews where required and prescribes, the prescription routes to your preferred pharmacy or our direct pharmacy partners, every step returns as a webhook, and you bill through your own Stripe account. Next in the series: event-driven telehealth.
Frequently asked questions
Can a fitness or wellness app offer prescriptions?
Yes, by integrating clinical infrastructure that operates the licensed provider network, prescribing, and pharmacy routing behind it. The app provides the experience and the request; AI prepares the encounter and licensed physicians review where the state requires it and make the clinical decisions.
Does adding prescriptions make my company a healthcare provider?
Your company does not become the medical group. The care is delivered by licensed clinicians through a physician-owned practice, with your product as the interface. You do take on obligations around health-information privacy, disclosures, and marketing, which this guide covers.
How do I connect my existing users to patient records?
Create a Lithos patient with your user’s ID as external_id and capture consent and identity in your flow. Subsequent encounters, refills, and status lookups use that mapping, so care feels native to your app.
Do I need a BAA to add prescriptions to my app?
If your systems handle protected health information, yes. The simplest design keeps PHI on the infrastructure under its BAA and stores only identifiers and non-clinical status in your own database.
How long does it take to add prescriptions to an existing app?
Two to four weeks from contract signature is typical: API access and sandbox credentials at technical kickoff, intake and webhooks integrated in one to two weeks, test patients end to end, then first real users in the states you choose.
Get the Journal by email
Our best guides on building compliant telehealth programs — a couple a week, unsubscribe any time.
Put a medical practice behind your product
Book a call and we'll scope your program together, or get free sandbox access and start building.