2.51.1

2026-03-24

This version of Tamanu requires Chrome 144 or later.

Artifacts

central container oci://ghcr.io/beyondessential/tamanu-central:v2.51.1
central linux-amd64 https://servers.ops.tamanu.io/2.51.1/central-2.51.1-linux-amd64.tar.zst
Download
central windows-amd64 https://servers.ops.tamanu.io/2.51.1/central-2.51.1-windows.tar.zst
Download
dbt-manifest any https://docs.data.bes.au/tamanu/v2.51.1/manifest.json
Download
facility container oci://ghcr.io/beyondessential/tamanu-facility:v2.51.1
facility linux-amd64 https://servers.ops.tamanu.io/2.51.1/facility-2.51.1-linux-amd64.tar.zst
Download
facility windows-amd64 https://servers.ops.tamanu.io/2.51.1/facility-2.51.1-windows.tar.zst
Download
frontend any https://servers.ops.tamanu.io/2.51.1/web-2.51.1.tar.zst
Download
frontend container oci://ghcr.io/beyondessential/tamanu-frontend:v2.51.1
mobile android https://clients.ops.tamanu.io/2.51.1/android/tamanu/app-release.apk
Install Download
patient-portal any https://servers.ops.tamanu.io/2.51.1/patient-portal-2.51.1.tar.zst
Download
patient-portal container oci://ghcr.io/beyondessential/tamanu-patient-portal:v2.51.1

Changelog

Bugfixes 🐛

  • adminPanel: Fixed invoice product importers missing columns if the first row has no value (#9379)
  • appointments: 2.51 fix: Race condition crash on outpatient appointments page (#9299)
  • dateTime: 2.51 fix: Appointment sidebar time input (#9381)
  • dateTime: 2.51 fix: Remove whitespace in time formatting (#9393)
  • dateTime: 2.51 fix: Date only tooltip wrong format (#9398)
  • dateTime: 2.51 fix: Procedure time fields syncTimeDate issue (#9399)
  • dateTime: 2.51 fix: Date time tooltip formatting (#9413)
  • dispensing: SAV-1141: consistent label printing configuration (#9308)
  • dispensing: SAV-1141: Consistent label printing configuration (#9300)
  • invoicing: Fixed error when adding invoice item (#9347)
  • invoicing: Fixed data table exports broken due to missing dateTime context (#9350)
  • invoicing: Fix ‘Go to patient details’ button on missing insurance plan modal (#9357)
  • invoicing: 2 small invoicing fixes (#9359)
  • invoicing: Hide Invoicing tab in Patients view if invoicing is disabled (#9367)
  • medications: 2.51 fix: TAMOC-404: Remove uuid validation on patientId in medication zod schema (#9316)
  • medications: Remove uuid validation on patientId in medication zod schemas (bc0d581059)
  • programForms: Fix permissions checks when creating a new form response when users lack List/Read permissions to Programs (#9415)
  • timezones: Fix triage wait time calculation with new timezone logic (#9370)
  • timezones: Fix Length Of Stay calculation with new timezone logic (#9397)
  • timezones: Fixed up additional timezone duration bugs (#9417)
  • translations: Missed enum translation (#9353)
  • web: guard outpatient calendar data memo against undefined deps (50330cba5a)
  • web: Use dropdown select for Department in Patient->Documents view (#9329)
  • E2E tests vaccines (#9422)

Features ⭐

  • medici: TAN-2598: Added discharge_date parameter to Medici API (hotfix 2.51) (#9387)

Performance 🌊

  • db: cherry-pick note type migration perf fix to release/2.51 (#9406)

Older releases in series

2.51.0

Bugfixes 🐛

  • SAST: COOL-47: js/regex-injection (#9219)
  • SAST: COOL-47: js/incomplete-sanitization (#9220)
  • SAST: COOL-47: actions/missing-workflow-permissions (#9221)
  • SAST: COOL-47: js/polynomial-redos (#9217)
  • appointment: Area not passing through to encounter from from appointment popout (#9257)
  • appointments: TAMOC-397: Fix ‘Admit’ button not disabling when a patient had just been admitted via an outpatient appointment (#9238)
  • appointments: TAMOC-396: Fix error when attempting to admit a patient via an outpatient appointment (#9236)
  • dateTimes: Multiple timezones epic (#9081)
  • db: COOL-48: Encounter table non nullable patient ID column (#9179)
  • encounters: Release v2.49: Missing modal declaration (#9162)
  • invoicing: Hotfix 2.51: revert global ILIKE on suggester lookup (#9287)
  • invoicing: revert global ILIKE on suggester lookup, fetch default payment method dynamically (ec63062ca0)
  • medication: V2.49: Use frequency value for comparison instead of translated label (#9167)
  • medication: Design fixes (#9173)
  • medications: Disabled checkbox bug (#9164)
  • medications: Release 2.49: Use correct submit handler (#9187)
  • mobile: Release fix 2.49 :AutocompleteModalField empty on selection (#9157)
  • mobile: TAMOC-389 AutocompleteModalField empty on selection (#9131)
  • mobile: TAMOC-389 AutocompleteModalField empty on selection (#9131)
  • mobile: TAMOC-389 AutocompleteModalField empty on selection (#9131)
  • notes: HOTFIX-2.49: Filter out system notes (#9146)
  • permissions: TAMOC-402: Translations admin endpoint malformed permission check (#9272)
  • permissions: TAMOC-402: Translations admin endpoint malformed permission check (#9272)
  • sync: Rebuild notes in lookup table to correct state after adding note_type_id (#9213)
  • sync: COOL-38: Prevent exceeding maxConcurrentSyncSessions when multiple syncs are requested at the same time (#9181)
  • translation: PHX-303: Translate medication name (#9171)
  • translations: PHX-303: Update medication label translations 2.49 hotfix (#9151)
  • translations: PHX-303: Update medication label translations (and more) (#9125)
  • translations: TAMOC-335: Delete translations for records with multiple text columns (#8613)
  • translations: PHX-303: Update medication label translations (and more) (#9125)
  • translations: PHX-303: Update medication label translations (and more) (#9125)
  • translations: Fix newline char parsing in translations (#9292)
  • Release 2.49: Remove Invoice Price Lists Error (#9154)- Release 2.49: Update lab invoicing setting (#9158)- Hotfix v2.49: Medication logic changes (#9141)- Release 2.48: Medication timezone issues (3c5bc07335)- V2.49: Directly link PharmacyOrderPrescriptions to its original ongoing prescription (#9160)- Release 2.48: Medication timezone issues (b6316506bf)- Release 2.49: Show correct repeats on pharmacy orders (#9190)- Fix task actions scrolling off screen (5d42e25623)- Epic invoicing phase 2 (#9044)- Release 2.48: Medication timezone issues (5894fa3f13)- Release 2.48: Medication timezone issues (5894fa3f13)- Release 2.48: Medication timezone issues (5894fa3f13)- Release 2.48: Medication timezone issues (5894fa3f13)

Dependencies 📦

  • Critical alerts (#9223)- COOL-42: Update simple deps with high severity (#9250)

Features ⭐

  • certificates: PHX-271: Create FSM birth certificate (#9080)
  • dateTime: NASS-1852: Datetime now shortcut (#8986)
  • dateTimes: Multiple timezones epic (#9081)
  • invoicing: SAV-1129: Invoice UI updates (#9178)
  • invoicing: SAV-1129: Invoice UI Tweaks (#9183)
  • labs: NASS-1880: View lab request button on test result modal (#9005)
  • labs: NASS-1884: Lab results table empty cell tweaks (#9024)
  • EPI-1249: Graph of a historical chart or vital survey question hasn’t been hidden. (#8878)- Epic invoicing phase 2 (#9044)

Refactors 🛠️

  • Extract NON_EDITABLE_NOTE_TYPES constant and filter system/mobile notes (b32a47bc1e)- Extract NON_EDITABLE_NOTE_TYPES constant and filter system/mobile notes (5894fa3f13)- Extract NON_EDITABLE_NOTE_TYPES constant and filter system/mobile notes (5894fa3f13)

Testing 🧪

  • e2e: Release 2.49 E2E tests (#9142)

Tweaks ⚖️

  • ai: Added project rules to give guidance on how we use sequelize transactions (#9186)
  • ci: Shard tests to 8 parts (#9200)
  • fhir: COOL-43: FHIR jobs resource index (#9197)
  • settings: COOL-20 Move front end settings definition to schema flag instead of const (#8516)
  • sync: Disable mobile sync -> useUnsafeSchemaForInitialSync by default (#9277)
  • Allow tablets (still block mobile) (b794570181)- COOL-44: Use default UUID4 instead of composite id for userFacility (#9225)- Epic merge tweaks timezone (5894fa3f13)
Copied to clipboard!