Skip to main content
A deep link opens the Prescribe app in its own tab, with the app’s navigation, on the record you name. Use one when embedding doesn’t fit: a link in an email or text, or a Prescribe in Photon button in an internal tool. Deep links use the same paths as the iframe without /embed. The prescriber signs in to Photon if they haven’t already, and lands on the record. Add org=org_… to sign them straight in to your organization. A link carries Photon ids only: pat_, rx_, ord_, med_, tmp_ and org_. It never carries patient details, drug names or instructions, so it’s safe in an email, a text or a log. Each id opens its own card:
  • On an order, rx, template and med repeat: each one adds a card. The same rx twice is one card.
  • A prescription takes one of rx, template or med. If a link has more, the first one counts.
  • The record’s own id can also go in the query (/order?order=ord_…, /patient?patient=pat_…, /prescription?rx=rx_…). Beside it, ids that would conflict are ignored: an existing order or prescription keeps its own patient.
  • An id Photon doesn’t have in the prescriber’s organization opens as not found on its card, and the rest of the link still opens.
  • A template becomes a prescription once there’s a patient (patient=, or the one the prescriber finds). Until then, its card is empty. ⚠️ Templates aren’t applied yet, so a template card shows “A treatment … is required” instead.

Try it

Build a deep link in /integrate from the records you give it, with the code that makes it.
Links are just ids, so you can write them by hand. The JavaScript client builds them too:
Links point to the environment’s Prescribe app (rx.neutron.health, or rx.new in production). A deep link never carries a client_id, so you can share it with any prescriber: the app signs them in on its own. Give photon() your organization, and the link signs them straight in to it. For the iframe, use frame() in place of url(), from a client with your Application client_id. An address that isn’t a Prescribe page, such as an old or mistyped link, opens a new order. To start from details you hold, such as a patient Photon hasn’t matched yet, sync them from your backend first (patient sync) and link the id Photon returns. url() refuses anything that isn’t an id.
Last modified on October 12, 2026