Changelog
Notable changes, updates, and releases — newest first.
All notable changes to temetro are posted here, newest first. For where the project is headed, see the roadmap.
June 14, 2026
Guide: migrating from another system
- New migration guide. A dedicated Migrating from another system page walks through moving your patients off an existing EHR: export a CSV/JSON, attach it in the chat, and the agent maps and validates it into a preview you approve before anything is written. Includes export tips for Epic, Oracle Health (Cerner), athenahealth, eClinicalWorks, NextGen, Practice Fusion, DrChrono, and OpenEMR, plus the 500-records-per-import limit and privacy notes (run a local model to keep bulk loads on your own infrastructure).
- Clearer chat prompt. The chat input placeholder now reads "Ask anything, or type /patient 10293" — reflecting that the agent does far more than patient lookups.
June 13, 2026
The chat can act — and it feels alive
- Live "thinking". Sending a message now shows a Thinking… indicator and a Chain-of-Thought step trace as the agent works — so you can see it looking up a patient, searching, or validating records, even on cloud providers where the prose arrives all at once.
- Inline Veil confirmation. The first send to an external provider no longer pops a modal. A compact, inline Veil confirmation appears above the input (with Use local model as an option) and asks only once per session.
- Add by chat — with approval. The agent can now add appointments, tasks, and prescriptions, and add/migrate patients. Each add is proposed as a one-click approval card; nothing is written until you click Add, and the action still respects your role's permissions. The agent only displays and adds — it never edits, deletes, or changes the database structure.
- Display anything. Ask to see the schedule, open tasks, or prescriptions and the agent renders them as list cards.
Pharmacy: add inventory items
- The Inventory page now has an Add item button that opens a dialog to add a medication (name, form, strength, stock, reorder point, location, expiry). New items appear in the list immediately.
The AI chat is live
- Real AI chat. Free-form messages now run a tool-using agent that looks up records
and answers with record cards and lab charts (with a high/low flag in the card's
top-right corner), not just text. The
/patient <fileNumber>shortcut still works instantly. New APIs:/api/chatand/api/ai. - Bring your own model. Connect an OpenAI, Anthropic, or Gemini API key, or run a local model with Ollama — all under the new Settings → AI tab. Keys are encrypted at rest and never shown again.
- Veil — PHI safeguards. On cloud providers, Veil de-identifies patient identifiers (names, MRNs, providers) to tokens before anything leaves your infrastructure, then restores them in the answer. Local Ollama keeps all data in the clinic. Every external request is audited.
- Database import with approval. Attach an existing patient-database export and the agent maps it to temetro's shape, shows a preview, and writes only after you approve it.
Cleaner chat input
- The chat input's five clinical dropdowns are replaced by a single model + effort picker; AI configuration moved to Settings → AI.
Zero-setup Docker & reliability
docker compose upnow works with no setup — the backend generates and persists its secret keys on first start (stored in a Docker volume, stable across restarts). No more hand-editing.envor runningopenssl.- The chat uses whichever provider you've configured, even if the model picker shows a different one, so a single saved key just works.
- AI failures now show a clear alert (banner + toast) instead of silently doing nothing.
- Model list refreshed to current IDs (e.g. Gemini 2.5 Pro/Flash).
June 12, 2026
Pharmacy inventory
- New Inventory page under Pharmacy — search the clinic's medication stock and check availability at a glance (in stock / low / out, derived from a per-item reorder threshold). The Pharmacy sidebar entry now expands into Pharmacy (dispensing queue) and Inventory.
- New API:
/api/inventory— org-scoped CRUD for stock items. Pharmacy and full clinicians can edit it; reception and lab have no access.
Fixes & refinements
- Pharmacy: the Expiring badge now appears only for courses ending within the next 7 days — previously it showed for courses that had already elapsed.
- Lab — Add analysis result: the patient picker no longer lists patients until you type, and supports arrow-key + Enter selection. The test field offers a catalog of common analyses (with an Advanced option for custom analyses and a reference range), and submitted results now appear immediately in a new Recent results feed instead of requiring a refresh.
- Analysis: added a Live panel (real-time line chart of patients in the building) and replaced the flat trend sparklines with area and bar charts.
June 11, 2026
Department roles: Pharmacy & Lab
- New Pharmacy role — read patients and appointments, review and update prescriptions (mark courses completed), but never prescribe or delete. Pharmacy members land on a new Pharmacy dashboard: stat cards (active prescriptions, expiring within 7 days, patients on medication) over a searchable dispensing queue.
- New Lab role — its own task queue plus the ability to submit analysis
results to a patient's record through a dedicated
labpermission, without patient-edit rights. Lab members land on a new Lab dashboard with an "Add result" flow. - New API endpoint:
POST /api/patients/{fileNumber}/labsappends lab results without replacing the rest of the record. - Tasks can now be assigned to five departments: Admin, Doctor, Reception, Pharmacy, and Lab.
- Removed the read-only Viewer role. Members who held it were migrated to Member automatically.
Improvements
- Messages — avatars and numeric unread badges in the inbox, day separators (Today / Yesterday / date) and grouped consecutive messages in threads, and a "Start a conversation" button on the empty state.
- Tasks — the New Task dialog's assignee picker is now a proper tab control (Myself / Other) with the department select inside the "Other" tab.
Earlier changes predate this changelog; see the git history for the full record.