iOS 26+ app for structured notes from real doctor-patient conversations

Physician Simple

Turn a patient conversation into a structured clinical note that is ready to paste into an EHR or push directly to Epic.

Physician Simple replaces pajama-time typing with one clean workflow: Record, Transcribe, Generate, Push.

Workflow

Record -> Transcribe -> Generate -> Push

Platform

iOS 26+ / SwiftUI / Swift 6

Transcription

Apple SpeechAnalyzer on-device

Schedule Modes

Epic FHIR, manual entry, or CSV import

Loading iOS app preview

The Problem

Clinical documentation is stealing the hours after clinic.

After each visit, physicians spend 10-30 minutes turning a conversation into the structured note Epic expects. Generic transcription leaves a wall of text. Expensive scribes add cost. Physician Simple turns the encounter into the HPI, ROS, exam, assessment, and plan directly.

10-30 min

typing clinical notes after each visit

#1

driver of physician burnout: pajama time

0 audio

leaves the phone during on-device transcription

Core Features

Everything needed from schedule to signed note.

The app supports Epic production mode, manual/offline workflows, persistent recordings, editable transcripts, transparent prompts, flexible AI providers, and export paths when Epic is not connected.

Daily Schedule, Epic or Manual

Production mode pulls appointments from Epic via FHIR. Manual mode supports hand-entered patients, CSV batch import, and a two-week calendar strip.

Pause/Resume Recording

AVAudioRecorder captures the encounter with live waveform feedback, pause/resume across sessions, and audio files persisted on disk.

On-Device SpeechAnalyzer

When recording stops, iOS 26+ SpeechAnalyzer transcribes locally. The full transcript is displayed and editable before AI generation.

Section-by-Section AI

Every note section has its own transparent prompt and Generate button. Rebuild Note fills sections sequentially as they complete.

Live Clinical Editors

Generated sections are editable text editors, so physicians can add judgment, tune wording, and inspect or edit the exact prompt.

Epic Push or Offline Share

Epic-connected mode pushes SmartPhrase-ready sections with DocumentReference. Offline mode exports transcript, prompt, and output via Share sheet.

Provider-Agnostic AI

Apple Foundation Models, OpenAI, Gemini, Grok, NVIDIA Build, and Ollama can be tested, configured, and switched from Settings.

Persistent Patient Notes

Transcript, generated content, manual edits, elapsed recording time, and paused audio survive app restarts for each patient.

How It Works

Record -> Transcribe -> Generate -> Push.

That is the whole workflow. Physician Simple is designed for outpatient visits where the doctor talks, examines, decides, reviews, and moves on.

01

Schedule

Open today’s patient list from Epic FHIR, manual entry, or CSV import. Navigate two weeks backward or forward with a horizontal calendar strip.

02

Record

Tap a patient, tap the mic, and capture the visit with AVAudioRecorder, live waveform visualization, and pause/resume across sessions.

03

Transcribe

Stop recording and SpeechAnalyzer creates an editable on-device transcript. No audio leaves the phone.

04

Generate

Generate one section at a time or rebuild the whole note. Each section uses transcript, chart context, and its own prompt.

05

Review

Every section is a live editor, and the Prompt button shows exactly what the model sees for full transparency.

06

Push or Share

Push to Epic as SmartPhrase-ready DocumentReference content, or export transcript, prompt, and generated output as plain text.

Template Library

Template-driven notes doctors can share.

Built-in templates cover common outpatient visits, while custom templates can be edited, exported, imported, and shared with colleagues as .psnote files.

Templates

Simple New VisitDefault
New Visit
Repeat Visit
Referral Visit
Create
Import
Export
Reorder

Prompt Transparency

Chief Complaint

AI Prompt

Use the transcript to extract the patient’s primary concern in concise clinical language.

HPI

AI Prompt

Use transcript plus chart context to write only this section in the selected template style.

Assessment

AI Prompt

Use transcript plus chart context to write only this section in the selected template style.

Plan

AI Prompt

Use transcript plus chart context to write only this section in the selected template style.

Simple New Visit is the default: CC, HPI, ROS, Physical Exam, Labs & Imaging, Assessment, Plan
New Visit provides the full 17-section organ-system template
Repeat Visit turns HPI into Interval History focused on what changed
Referral Visit includes Reason for Referral, Focused Exam, Impression, and Recommendations
Create custom templates and edit every section prompt
Export, import, and share templates as .psnote files

Structured Note Builder

Every section is generated, inspectable, and editable.

Each section has its own Generate button and Prompt button. Rebuild Note runs sections sequentially and populates them live as each result finishes.

Default

Simple New Visit

Chief ComplaintAI
HPIAI
Review of SystemsAI
Physical ExamAI
Labs & ImagingAI
AssessmentAI
PlanAI

Full

New Visit

Chief ComplaintAI
HPIAI
Past Medical / Surgical HistoryAI
Medications & AllergiesAI
Family HistoryAI
Social HistoryAI
ROSAI
HEENT, Neck, CV, Pulm, Abd, Extremities, NeuroAI
AssessmentAI
PlanAI

Focused

Repeat & Referral Visits

Interval HistoryAI
Reason for ReferralAI
Focused ExamAI
Labs & ImagingAI
ImpressionAI
RecommendationsAI
PlanAI

AI Generate

Regenerate one editable section with transcript, prompt, and Epic context.

Rebuild Note

Generate all sections sequentially, with each editor filling live as it completes.

Prompt Button

Inspect and edit the exact AI prompt used for that section.

AI Providers

Provider-agnostic AI, from fully local to hosted frontier models.

Settings includes suggested model lists, Test Connection buttons, API key storage in Keychain, and automatic Ollama model discovery. Apple Foundation Models use Long-Visit Mode when a transcript is too large.

Settings

Default Provider + Test Connection + Keychain Keys

Apple Foundation Models: on-device, zero network, Long-Visit Mode for >2,000-word context
OpenAI: GPT-4o, GPT-4o-mini, and configurable model IDs
Google Gemini: Flash and Pro models
xAI Grok: API key configuration and test connection
NVIDIA Build: free-tier Llama, Mistral, and Nemotron access
Ollama: self-hosted models with automatic model discovery

Epic Integration

Epic-connected when available, useful offline when not.

Production mode pulls appointments and chart context from Epic via FHIR R4. Manual mode lets physicians enter or CSV-import patients and export note artifacts through the iOS Share sheet.

Epic Sandbox | SMART on FHIR R4
FHIR R4 client for Epic appointments, patients, diagnostic reports, and document references
PKCE OAuth 2.0 for Epic authentication and token refresh
Production schedule via Appointment.Search
DiagnosticReport pull for labs and imaging context
DocumentReference pull for prior clinical notes
Section pushes as SmartPhrase-ready text such as .physimpleHPI
Manual/offline mode with Share sheet plain-text export
production_mode=Epic FHIR R4
manual_mode=hand entry + CSV import
offline_export=Share sheet plain text

GET  Appointment?date=today&practitioner={clinician}
GET  DiagnosticReport?patient={patient}
GET  DocumentReference?patient={patient}
POST DocumentReference  // SmartPhrase-ready section output

Technical Architecture

SwiftUI architecture built for persistence and provider flexibility.

The app uses Swift 6 strict concurrency, Codable models, JSON persistence, protocol-based AI services, token budgeting, long-visit processing, FHIR R4, PKCE OAuth, and Keychain secrets.

SwiftUI + NavigationStack

Schedule, patient detail, recorder, transcript, note builder, templates, provider settings, and Epic auth are routed in SwiftUI.

@MainActor Strict Concurrency

The codebase is Swift 6 ready, with UI state isolated on the main actor and async work pushed into services.

Codable JSON Persistence

No Core Data. Patient notes, transcripts, generated section text, manual edits, and template data persist as JSON.

Protocol AIService

Each provider implements generate(_ request:) async throws -> String behind a provider-agnostic abstraction.

TokenBudget + LongVisitProcessor

The app estimates context fit before sending prompts and chunk-summarizes long visits for small-context models.

Keychain + FHIR R4

API keys and OAuth tokens live in Keychain, while the Epic FHIR client handles appointments, demographics, reports, and notes.

Privacy & Security

No audio leaves the phone for transcription.

SpeechAnalyzer handles transcription locally. Network AI is optional and provider-controlled, with transparent prompts and physician review before anything is pushed or shared.

Secure storage

Tokens and API keys live in Keychain.

Audio stays on-device

SpeechAnalyzer transcribes locally on iOS 26+, so encounter audio is not sent to a transcription cloud.

Secrets stay in Keychain

Provider API keys and Epic OAuth tokens use iOS Keychain storage, separate from JSON note persistence.

Physician remains final editor

Every generated section is editable, and prompts are inspectable so the physician controls the final clinical note.

Implementation Snapshot

Close the app, come back tomorrow, keep working.

The transcript, generated sections, manual edits, paused audio files, and elapsed recording state persist per patient.

Primary workflowRecord -> Transcribe -> Generate -> Push
TranscriptEditable SpeechAnalyzer text
Long visitsChunk, summarize, then generate
Templates.psnote export/import
PersistencePer-patient JSON + audio files
Offline modeShare sheet plain-text export

Physician Response

Built for outpatient documentation.

Primary care, specialists, and urgent care physicians can capture the visit in the room and leave with structured note sections ready for the EHR.

The pause/resume recording and persistent patient notes are exactly how clinic actually works. You can leave the room and come back without losing your place.

DMC

Dr. Maya Chen

Internal Medicine

Per-section generation with visible prompts is the right level of control. It feels like a clinical editor, not a black box.

DAP

Dr. Aaron Patel

Cardiology

Epic mode, manual mode, CSV import, and Share sheet export make it usable before every integration is live.

ER

Elena Rodriguez

Clinical Informatics Director

A conversation becomes a clinical note.

Physician Simple captures the encounter, transcribes it on-device, generates structured sections, preserves edits, and gives physicians a clear path to Epic or offline sharing.