Prescribing iFrame | Medplum

On this page

ScriptSure offers a fully hosted prescribing UI that can be embedded directly in your application as an authenticated iFrame. This is an alternative to building a custom prescribing flow using the ScriptSure APIs–rather than integrating drug search, order creation, and pharmacy management individually, the iFrame provides all of that in a single pre-built interface. It handles EULA acceptance, identity proofing, DDI/allergy checks, and prescription submission out of the box.

React hook: useScriptSureIFrame [​](/content/docs/integration/scriptsure/iframe#react-hook-usescriptsureiframe "Direct link to react-hook-usescriptsureiframe"/index.html)

Package:@medplum/scriptsure-react · GitHub Source Code

Runs patient sync and fetches the iFrame URL in one call, handling the providerNotReady case automatically. Under the hood it calls scriptsure-patient-sync-bot followed by scriptsure-iframe-bot, falling back to the provider onboarding URL if the prescriber hasn't completed EULA or identity proofing.

import { useScriptSureIFrame } from '@medplum/scriptsure-react';

function ScriptSureTab({ patientId }: { patientId: string }) {

const iframeUrl = useScriptSureIFrame({

patientId,

onPatientSyncSuccess: () => console.log('patient synced'),

onIframeSuccess: (url) => console.log('iframe ready', url),

onError: (err) => console.error(err),

});

if (!iframeUrl) {

return <div>Loading...</div>;

}

return <iframe src={iframeUrl} width="100%" height="800px" />;

}

Options:

Option Type Description
patientId `string undefined`
onPatientSyncSuccess () => void Called after patient sync completes.
onIframeSuccess (url: string) => void Called when the iFrame URL is ready.
onError (err: unknown) => void Called on any error.