**[David Yanez](https://github.com/techdavidy)**

The [Provider app](https://provider.medplum.com/) saw major improvements across messaging, task management, and the new Spaces experience. This work advances the [Provider Application roadmap goal](/content/docs/provider/index.html) of expanding available workflows.

- **[Spaces](https://provider.medplum.com/Spaces/Communication) streaming and buffered support** — real-time communication with both streaming and buffered message delivery  
- **[Server-Sent Events](https://en.wikipedia.org/wiki/Server-sent_events) bot implementation** — SSE support for bots, enabling real-time AI-powered interactions  
- **[Messaging](https://provider.medplum.com/Communication) improvements** — URL support in the inbox, participant filtering, and topic-based threading for Communications  
- **[Task management](https://provider.medplum.com/Task)** — auto-selection when the task list is empty, priority display for better triage  
- **Navbar updates** for both Medplum and Provider apps by [Kevin Wadeshaw](https://github.com/kevinwadeshaw), plus a new **Get Started page**

### Scheduling: $find and $book Operations

**[Noah Silas](https://github.com/noahsilas)**

The most significant feature work this month was a ground-up buildout of FHIR-native scheduling operations. This directly supports the [Scheduling initiative](/content/docs/scheduling/index.html) on our [2026 roadmap](/content/blog/2026-roadmap/index.html), where we committed to self-scheduling, advanced availability management, and resource scheduling.

- **`$find` operation** for querying available slots on a single Schedule resource, now with unique slot identifiers and timezone support ( [scheduling docs](/content/docs/scheduling/index.html))  
- **`$book` operation** for creating Appointments through a FHIR operation, with a first pass on the Provider UI booking flow  
- **Provider Calendar refactor** to support the new scheduling operations  
- **Timezone support** in `SchedulingParams`, enabling scheduling across time zones  
- New [search parameters](/content/docs/search/advanced-search-parameters/index.html) for `ActivityDefinition.code`, `Communication.priority`, and `ProjectMembership.active`

### System-Level Custom FHIR Operations

**[Gonzalo Bellver](https://github.com/monsieurBelbo)**

Developers can now define [custom FHIR operations](/content/docs/bots/custom-fhir-operations/index.html) at the system level, not just per-resource. This is a key building block for the [Integrations & Plugins roadmap initiative](/content/docs/bots/index.html), enabling more flexible bot-powered workflows and custom API endpoints.

### FHIR Operations and Terminology

**[Darren Eam](https://github.com/deam65)**

- **[Patient `$summary` operation](/content/docs/api/fhir/operations/patient-summary/index.html)** with updated [`$everything` documentation](/content/docs/api/fhir/operations/patient-everything/index.html)  
- **[ConceptMap import](/content/docs/api/fhir/operations/conceptmap-import/index.html)** and comprehensive [terminology operations documentation](/content/docs/terminology/index.html)  
- New **[authentication and security operations](/content/docs/auth/index.html)** and **[resource validation operations](/content/docs/api/fhir/operations/validate-a-resource/index.html)**

**[Matt Willer](https://github.com/mattwiller)**

- **X-FHIR-Query support in [SDC `$extract`](/content/docs/api/fhir/operations/extract/index.html)** — enables dynamic queries in [Structured Data Capture](/content/docs/questionnaires/parsing-questionnaire-responses/index.html) extraction, improving form-based data capture workflows  
- **Display language overrides** in [`ValueSet/$expand`](/content/docs/api/fhir/operations/valueset-expand/index.html) and [`CodeSystem/$validate-code`](/content/docs/api/fhir/operations/codesystem-validate-code/index.html) — supports multilingual [terminology services](/content/docs/terminology/index.html), which is important for international deployments

### Site Reliability and Infrastructure

These changes support the [Enterprise Scale & Infrastructure roadmap priority](/content/blog/2026-roadmap/index.html) of handling growing platform traffic.

**[Matt Willer](https://github.com/mattwiller)**

- **Reserved database connections for healthcheck** — prevents health checks from being starved during high load  
- **Redis failover error handling** in BullMQ workers — improves resilience during Redis cluster failovers  
- **Skip caching on write for [AuditEvent](/content/docs/api/fhir/resources/auditevent/index.html) resources** — reduces memory pressure for high-volume audit logging  
- **Tracing extensions on OperationOutcome** — better observability for debugging production issues

**[Matt Long](https://github.com/mattlong)**

- **[ReindexJob](/content/docs/self-hosting/super-admin-guide/index.html) configuration enhancements** — more control over reindexing for large datasets  
- **Per-resourceType padding configuration** — fine-grained tuning of array padding for storage optimization  
- **Array padding calculator** — tooling to help determine optimal padding settings

**[Noah Silas](https://github.com/noahsilas)**

- **Automatic pre/post deploy migration generation** — streamlines the database migration workflow for [self-hosted deployments](/content/docs/self-hosting/index.html)

### Security and Access Control

- **Inactive ProjectMembership disables access tokens** — when a membership is set to inactive, associated tokens are immediately invalidated ( [access control docs](/content/docs/access/access-policies/index.html)) ( [Matt Willer](https://github.com/mattwiller))  
- **[Subscription](/content/docs/subscriptions/index.html) Bot execution respects ProjectMembership** — ensures subscriptions run in the correct membership context ( [Matt Willer](https://github.com/mattwiller))  
- **On-behalf-of header support** with proper cache disabling ( [Maddy Li](https://github.com/maddyli), [Cody Ebberson](https://github.com/codyebberson))

### SDK and Developer Experience

- **`client.post<T>` generic type annotation** for better TypeScript ergonomics ( [Noah Silas](https://github.com/noahsilas))  
- **Nested connections in [GraphQL](/content/docs/graphql/index.html)** ( [Maddy Li](https://github.com/maddyli))  
- **Configurable base64 caps** in core ( [Sakshum Gadyal](https://github.com/syp1xd))  
- **Abort signal support for `sleep`** to allow request cancellation ( [Mirza Kapetanovic](https://github.com/mirza-kapetanovic))  
- **[Subscription](/content/docs/subscriptions/index.html) AuditEvent destination extension** for routing audit events ( [Rahul Agarwal](https://github.com/rahul1))

### AI and MCP

Advancing our [AI roadmap initiative](/content/blog/2026-roadmap/index.html):

- **[MCP server](/content/docs/ai/mcp/index.html) updated** to replace deprecated methods, keeping Medplum's Model Context Protocol support current ( [Noah Silas](https://github.com/noahsilas))  
- **AI operation documentation** added ( [AI operation docs](/content/docs/ai/ai-operation/index.html))

## Documentation

A significant documentation effort this month improved coverage across the Provider app, scheduling, self-hosting, the Medplum Agent, and compliance.

**Provider**

- Provider app docs updated ( [Provider app guide](/content/docs/provider/index.html))  
- Updated [charting documentation](/content/docs/charting/index.html)

**[Finn Bergquist](https://github.com/finnbergquist)**

- **Revamped multi-tenancy documentation** ( [multi-tenancy identity providers](/content/docs/auth/domain-level-identity-providers/index.html))  
- **Scheduling docs**: availability time zones, `$find` beta status, `SchedulingParameters` duration param ( [scheduling docs](/content/docs/scheduling/index.html))  
- **DoseSpot enrollment documentation**: how to enroll users with the Enroll Prescriber Bot ( [medications docs](/content/docs/medications/index.html))  
- **AccessPolicy requirements for Bulk Export API** ( [API docs](/content/docs/api/index.html))  
- **Observation.valueSampledData** documentation

**Self-Hosting and Operations**

- Self-hosting best practices docs ( [self-hosting guide](/content/docs/self-hosting/index.html))  
- AWS Lambda bots on localhost guide ( [Bots docs](/content/docs/bots/index.html))  
- Node.js version requirement updated to 22+ ( [self-hosting guide](/content/docs/self-hosting/index.html))  
- [Docker Compose](/content/docs/self-hosting/running-full-medplum-stack-in-docker/index.html) persistence and restart policies improved

**Medplum Agent**

**[Derrick Farris](https://github.com/ThatOneBro)**

The [Medplum Agent](/content/docs/agent/index.html) is an application that runs inside your firewall and connects to devices over low-level protocols such as HL7/MLLP, ASTM, and DICOM, bridging them to the cloud via secure HTTPS WebSocket channels. This month the Agent docs received several updates:

- Minimal [access policy for Agent](/content/docs/agent/access-policy/index.html) documented  
- Enhanced mode [`aaMode`](/content/docs/agent/acknowledgement-modes/index.html) documented  
- Section on deactivating memberships added

**Additional Docs**

- Integration tables organized into logical groups ( [integrations overview](/content/docs/integration/index.html))  
- Terminology services: translated display strings documentation ( [terminology services guide](/content/docs/terminology/index.html))  
- Compliance documentation and CHPL listing updated for V5 ( [compliance overview](/content/docs/compliance/index.html))  
- 2026 Roadmap published ( [2026 roadmap](/content/blog/2026-roadmap/index.html))

## Bug Fixes

**Forms and UI**

- Fixed repeatable items in [`QuestionnaireForm`](/content/docs/questionnaires/index.html)  
- Fixed dark mode on the visit details page  
- Fixed color inheritance issue (dark to inherit)  
- Updated diagnoses binding URL in OrderLabsPage

**Server and API**

- Fixed SQL error in date array search parameters  
- Fixed search by POST issue via body-parser update  
- Fixed CCDA timezone offset conversion to FHIR format ( [Amanda McGivern](https://github.com/amcgivern))  
- Fixed `validateResource` argument merging  
- Fixed consistent `storageBaseUrl` generation with `/binary/` path ( [Jim Fiorato](https://github.com/jfiorato))  
- Fixed out-of-order query results in `useSearch`  
- Fixed too-many-requests error re-wrapping in `fetchTokens`

**Agent**

- [`pushToAgent`](/content/docs/agent/push/index.html) now returns on first ACK by default  
- Added logging for [enhanced mode](/content/docs/agent/acknowledgement-modes/index.html) acknowledgments

**Infrastructure**

- Fixed [Docker Compose](/content/docs/self-hosting/running-full-medplum-stack-in-docker/index.html) full-stack config after hardened images  
- Added persistence to [Docker Compose](/content/docs/self-hosting/running-full-medplum-stack-in-docker/index.html) files ( [Matthew Raspberry](https://github.com/mraspberry-uai))  
- Fixed database connection release during seeding  
- Fixed Spaces message persistence

## Releases

- [**v5.0.11**](https://github.com/medplum/medplum/releases/tag/v5.0.11) — January 21  
- [**v5.0.12**](https://github.com/medplum/medplum/releases/tag/v5.0.12) — January 23  
- [**v5.0.13**](https://github.com/medplum/medplum/releases/tag/v5.0.13) — January 28

## Looking Ahead

January's scheduling work sets the stage for the self-scheduling and resource scheduling features planned for 2026. The Provider app's Spaces and streaming capabilities are moving us closer to a production-ready provider experience. On the infrastructure side, the Redis failover handling and database connection improvements directly support enterprise-scale deployments.
