CodeScribe EMS

For training officers · Now piloting with departments

Know how every code your crews scribe actually went

Put one protocol on every phone, and get a summary of each code your members scribe: time to first compression, epi and rhythm check timing against your own protocol, CPR pauses and outcomes. No patient details ever leave the phone.

The dashboard link opens a demo with made-up data. Department accounts are in pilot now; email us to be one of the first departments.

The officer dashboard's Codes tab: number of codes, median times to first compression, shock and epi, ROSC rate, protocol adherence for epi and rhythm checks, CPR pause length, and fields often left unrecorded

The problem

Every service says it reviews its arrests. Most of the time, the review is only as good as the paperwork.

Codes are chaos

Times end up on a glove, a strip of tape or someone's memory. By the time the PCR gets written, half of them are guesses.

QA depends on who wrote the PCR

A good narrative gets a real review. A thin one gets nothing, and there's no way to tell the difference between a rough code and a rough write-up.

Officers rarely see the timing

Time to first compression, epi intervals, how long CPR stopped for each rhythm check. These are the numbers that matter, and they're almost impossible to pull out of a narrative.

What your department gets

Your crews scribe in CodeScribe EMS the same way they always have. You get your setup on every phone and the numbers from every code.

One protocol on every phone

Set your buttons, their order, the timers and the drug and airway lists in the dashboard from any browser, or from the app, and publish. Every member's phone picks up the new version at its next check-in from the home screen, never during a code. Lock it so members can't change it.

A real roster, with seats you control

Members join with your code and sign in once. Approve them yourself or let them in automatically while seats remain. Remove someone and their phone stops getting your protocol. Add other officers with their own logins. Print a join flyer with a QR code for the station, and make a new code anytime it gets out.

A summary of every code

Utstein-style intervals, first rhythm, ROSC and outcome for every code your members scribe. Epi and rhythm check timing measured against your protocol's own timers, CPR pauses as logged, and what's being left unrecorded.

Per-scribe numbers for training

Codes scribed, how many were fully documented, and median time to first compression, for each member. It measures the scribe, not the whole crew, so use it to see who needs practice holding the phone. Pick a member to see their numbers beside the department's.

The timeline of any code

Open any code by its share code and see every intervention by minutes and seconds from the start, with the epi gaps and CPR pauses worked out for you.

Full-record QA when you need it

For a full review, a medic sends the complete record as a file from the finished code and an officer imports it on a department device, with medians, rates and an Utstein-style CSV export. Full records never go through our server.

Find any code fast

Search by share code, or narrow to one scribe, adult or pediatric, shockable rhythms, ROSC or no ROSC, or codes with something left blank. Every number on the page follows the filter.

A report for your medical director

Print a QA report for any year: medians, protocol adherence, what's left unrecorded, by scribe and year over year. Or download every code as a spreadsheet.

Built for volunteer squads too

When QA is one officer on their own time, the summaries come to you instead of you chasing paperwork. Career, combination and volunteer departments all fit the same setup.

The roster also shows which protocol revision each phone is running, so you can see who hasn't picked up the latest one.

The officer dashboard

Real screenshots from the dashboard's demo mode. The names and numbers are made up. Open the demo and click around.

The Codes tab: department medians for time to first compression, shock and epi, ROSC rate, protocol adherence for epi and rhythm checks, CPR pause length, and fields often left unrecorded
The Codes tab. Department medians, epi and rhythm check timing against your protocol's timers, CPR pauses, and the fields your crews skip most. Below it: numbers per scribe, by year, and every code.
The roster: each member's role, status, join date, last check-in, protocol revision and number of codes, with approve, remove and make officer buttons
The roster. Seats used, your join code, a member waiting for approval, a phone still on an older protocol revision, and one that hasn't checked in for a month.
The Protocol tab: countdown settings, default shock energy, and each button with its name, clock interval, hidden switch, order and choice list, with a lock and a publish button below
The Protocol tab. Rename, reorder or hide buttons, set the rhythm and epi clocks, edit the airway and medication lists, lock it, and publish to every phone. Every revision is kept.
The Department tab: department name, join code with copy, print a join flyer and make a new code buttons, and the license with seats, paid-through date and renewal
The Department tab. Your name and join code, a printable join flyer, seats and renewal.
One code's timeline: time to first compression, shock and epi, each epi gap and CPR pause, and every event by minutes and seconds from the start

Any code, event by event

Click a code to see its timeline: every intervention by minutes and seconds from the start, the gaps between epi doses, and how long each CPR pause lasted.

There's no date, time or incident number on it. When you want to talk about the actual call, give the medic the share code. Their app shows which of their codes it was, and the full record never has to leave their phone.

On the crew's phone

An active code: elapsed clock, rhythm and epi cycle timers, and the one-tap button grid
Your buttons and timers, one tap per intervention.
The finished code record on the phone, with start date and time, first rhythm, shocks, epi and outcome
The full record, with its date and time, stays on the phone.
The finished record with a chart-ready narrative
A narrative to copy into your ePCR.

How it works

  1. You get a join code

    We set up your department and send your training officer a join code. The officer joins in the app first, and that same sign-in opens the dashboard.

  2. Crews join in the app

    Each member signs in once, with Sign in with Apple or an email address, and enters the code. Before they join, the app shows them exactly what the department will see.

  3. Summaries reach your dashboard

    After each code, a stripped summary is sent from the phone's home screen a day or two later. Sign in at app.codescribeems.org to see the roster and the numbers.

What your department sees, and what never leaves the phone

This is the same list your members see in the app before they join, and can look at any time afterwards.

Your department sees

  • Each member on the roster: their name, the date they joined, the last day the app checked in, and which protocol revision their phone has.
  • For each code they scribe after joining: a random share code, the year, adult or pediatric, how long it lasted, and each intervention with how many seconds after the start it happened.
  • Fixed choices only, like a rhythm or an airway device. Times to first compression, shock and epinephrine, and the outcome.

Never sent

  • Dates or times of any code
  • Incident numbers
  • Notes, or anything typed
  • Age, weight, or downtime
  • Codes from before the member joined

Crews stay in control

  • Summaries wait a random 12 to 72 hours before they're sent, so the time they arrive doesn't show when a code happened.
  • Mark any code as training and it isn't counted.
  • Delete a code from the phone and it's taken back from your department too.
  • To ask about a specific call, give the medic its share code. Only their phone can match it to the full record.

CodeScribe EMS collects no patient-identifying data. The app has no fields for names, dates of birth or record numbers, and the full record, with its date, times, incident number and notes, stays on the medic's phone.

Pricing

Simple annual department license. Founding departments get a locked-in rate. Email us for pricing.

Questions officers ask

Does it work offline?

Yes. Scribing never needs signal. The app checks in with your department from the home screen when it has a connection, never during a code. If it can't reach us, it keeps the last protocol and keeps working.

Is there an Android version?

Not yet. CodeScribe EMS is iPhone and iPad only for now. The officer dashboard runs in any web browser.

Does it replace our ePCR?

No. It works alongside it. The scribe taps during the code, and at the end the app writes a narrative to copy into your ePCR, or a PDF timeline to attach.

Is it clinical decision support?

No. It's a documentation aid only and never tells anyone what to give or when. Timers are silent and visual, and every pre-filled value is an editable default. Your crews follow your protocols and medical direction.

How do crews get the app?

CodeScribe EMS is on the App Store. Members join your department in the app with your join code, and we'll walk your crews through it during the pilot.

What does it cost our crews?

Today the app is a paid download on the App Store. Ask us about department pilots.

Who sees our data?

Your department's officers, and nobody in any other department. We can see the database only to run and support the service, and we don't sell it, share it or use it for anything else. Department data is hosted with Supabase in the United States.

Can we cancel?

Yes, anytime. Your members keep every record on their own phones and can keep using the app on their own.

Something else? support@codescribeems.org. Please don't include real patient information.

Try it with your department

We're looking for a few departments to pilot the officer tools free for 60 days and tell us what's missing. Career, combination and volunteer departments are all welcome. Email us, tell us a little about your service, and we'll set you up.