2.49.0

2026-02-20

This version of Tamanu requires Chrome 144 or later.

Artifacts

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

Changelog

Bugfixes 🐛

  • app: NASS-1890: Restore download as app icon in searchbar (#9055)
  • auditing: Fix broken access logs (#9041)
  • desktop: COOL-31: Prevent changing values when scrolling on focused number inputs (#8893)
  • desktop: PHX-282: Improve login error message (#8955)
  • e2e: Basic test phase 3 (#8846)
  • encounters: NASS-1814: Small test fixes (#8737)
  • encounters: Merge-issue (c63a821f12)
  • encounters: Unified patient move fixes (#8833)
  • encounters: Encounter enchancements dev tweaks (#8842)
  • encounters: Patient level encounter summary block updates (#9097)
  • encounters: Release v2.49: Missing modal declaration (#9162)
  • facility: Start facility ASAP (#8926)
  • fhir: TAMOC-382: Improve FHIR job queue processing when occassional jobs are very slow (#9089)
  • fhir: TAMOC-382: Improve FHIR job queue processing when occassional jobs are very slow (hotfix 2.48) (#9090)
  • invoicing: SAV-1029: Update the invoice item when a procedure type is changed (#8869)
  • invoicing: SAV-1018: Undo finalising invoices for active encounters (#9000)
  • invoicing: SAV-1097: Fix failing sync test (#9106)
  • invoicing: SAV-1058: Show print for in progress invoice (#9108)
  • invoicing: SAV-1058: Invoicing printout fixes (#9111)
  • invoicing: SAV-1058: Remove village from price list title (#9112)
  • invoicing: SAV-1058: Fix payment amount (#9118)
  • invoicing: SAV-1058: Fix payment amount (#9118)
  • locations: TAMOC-379: Only show fields that match location hierarchies (MAIN) (#9009)
  • lockout: PHX-299: Solve lockout feature offline issue (#9030)
  • medication: EPI-1354 Disable repeats field and add missing tooltip (#8934)
  • medication: EPI-1330: Fix failed test cases after updating import ongoing medication schema (#8941)
  • medication: Update import ongoing medications schema to use medications array (a5012afda7)
  • medication: Update import ongoing medications schema to use medications array (2eb515102e)
  • medication: V2.49: Use frequency value for comparison instead of translated label (#9167)
  • medication: Design fixes (#9173)
  • medications: TAMOC-380: Fix Medication Administration Records not being auto-generated after the initial batch (#9021)
  • 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)
  • notes: TAMOC-384: Floating note modal form state clears on resize (#9048)
  • notes: HOTFIX-2.49: Filter out system notes (#9146)
  • patientDetails: Show duplicate NHN error when editing patient details (#9050)
  • patientMove: NASS-1822: Dev test tweaks (#8825)
  • staticReports: NASS-1488: 2.48 fix: Remove all but 1 static reports permissions (#9085)
  • sync: KAM-463: validate that all data pushed is both for a known and allowed model (#8974)
  • systemNotes: NASS-1939: Duplicate system note fix (#9031)
  • systemNotes: Nass-1839: Correct time formatting (#9045)
  • translation: PHX-303: Translate medication name (#9171)
  • translations: NOTAM-551: 2.48 fix: Translated string admin panel field name was wrong (#9082)
  • translations: PHX-303: Update medication label translations 2.49 hotfix (#9151)
  • translations: PHX-303: Update medication label translations (and more) (#9125)
  • typo: Missing full stop on prescriber message (#9099)
  • unifiedMove: Triage change bug (#8885)
  • web: COOL-29: Note modal behavior (#8920)
  • web: Access isDischargePrescription from nested pharmacyOrder object (1dd28b1c96)
  • web: NASS-1890: Add missing symlink for tamanu-manifest.json (a1dbaea883)
  • web: HOTFIX-2.48: Add missing symlink for tamanu-manifest.json (#9059)
  • web: NASS-1890: Add missing symlink for tamanu-manifest.json (74189100e9)
  • Update duplicate patient checking logic (#8925)- Fix test (745e0825f0)- Fix test (c7a6f3be69)- Fix test (9c6678d3c2)- Fix test (c39a2c9e08)- Fix test (22d719fdcb)- Fix test (21b243fd19)- Fix test (fb01263202)- COOL-16: Filter out procedure forms from mobile (#8570)- Admin: api error when open location assignment page (#9019)- EPI-1337: Update allergy warning components and styles in Medication Set Modal (#8916)- EPI-1340: fix export drugs after importdrugs with facility avail… (#8931)- EPI-1340: fix export drugs after importdrugs with facility availability (ea8cf3907a)- EPI-1337: Update medication set box to have dynamic height (#8944)- EPI-1337: Enhance patient allergies section visibility in new prescription modal (c042b584da)- EPI-1350: Update medication label to mm and scale properly (#8953)- EPI-1330: Enhance MedicationImportModal with select all checkbox and styling improvements (#8954)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1353: Prevent invalid repeats value from being entered and fix lose focus in Send to pharmacy form (#8962)- EPI-1325: Medication dispensed table (#8965)- EPI-1350: Remove Medication printout header/footer and update dispenses query (#8976)- EPI-1331: update prescriber tooltip text and icon (#8979)- EPI-1325: Add medication dispense modal (#8980)- EPI-1325: duplicated stringId error (#8981)- EPI-1342: Update send to pharmacy from ongoing medications table to include last order date (#8982)- EPI-1342: Fix database validation error and hide Send to pharmacy icon when no ongoing medications (#8990)- EPI-1328: Edit dispensed medication workflow (#8992)- EPI-1328: edit dispensed medication workflow (#8993)- EPI-1329: Medication request and dispensing permissions (#8995)- EPI-1321: Fix the patient-level dispensed medications table UI and print action (#8994)- EPI-1321: Optimize the patient-level discharge medications table UI (#8996)- EPI-1340: exclude unavailable medications from medication set (#8948)- EPI-1321: remove facility column and fix patient name not populate when edit from patient dispense medication table (#9014)- EPI-1355: exclude unavailable medications from medication requests table (98263b1a3c)- EPI-1356: allow quantity edit for read sensitive medication permission (#9016)- EPI-1356: allow quantity edit for read sensitive medication permission (d0a0a385ad)- Add defensive check for orphaned dispenses when cancelling dispensed medication (7d43563fd6)- resolve ESLint unused vars errors in drug loader (163142bd6f)- EPI-1340: fix export drugs after importdrugs with facility availability (2eb515102e)- EPI-1337: Enhance patient allergies section visibility in new prescription modal (2eb515102e)- EPI-1356: allow quantity edit for read sensitive medication permission (2eb515102e)- Dont show deleted roles on permissions export (#9074)- Merge bugs (e627416c2f)- NASS-1839: Duplicate system note generation (#8960)- 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)

Database 📊

  • split pharmacy orders migration to avoid pending trigger events (400e2f9fba)

Features ⭐

  • PDFs: PHX-270: Ability to configure logo asset per facility (#8949)
  • ci: Switch to managing default provisioning data in json files (#8924)
  • encounter: NASS-1815: Edit encounter modal (#8688)
  • encounters: Restrict opening multiple encounters take 2 (#8856)
  • encounters: NASS-1814: Unified patient move modal (#8663)
  • encounters: NASS-1822: Change encounter type in move modal (#8598)
  • encounters: NASS-1824: Estimated discharge for hospital admissions (#8691)
  • encounters: NASS-1839: Combine encounter system generated notes for updates (#8732)
  • fhir: TAMOC-374: Add ability to configure ExternalImagingType codes for Imaging integrations (#9057)
  • fhir: TAMOC-374: Add ability to configure ExternalImagingType codes for Imaging integrations (hotfix 2.48) (#9101)
  • invoicing: SAV-1054: Palau sliding scale discounts (#8956)
  • invoicing: SAV-1083: Edit invoice items (#8957)
  • invoicing: SAV-1051: UI updates (#8966)
  • invoicing: SAV-1083: Invoice item updates (#8969)
  • invoicing: SAV-1098: Invoice item approval (#9026)
  • invoicing: SAV-1050: Create invoice when dispensing medications (#9047)
  • invoicing: SAV-1089: Update invoice payment ui (#9020)
  • invoicing: SAV-1088: Fix form style (#9088)
  • invoicing: SAV-1061: Update Invoice Item Finalised Insurance sync filter (#9096)
  • invoicing: SAV-1098: Show approval after finalised (#9102)
  • invoicing: SAV-1058: Updates to invoice printout (phase 1) (#9103)
  • invoicing: SAV-1097: Fix failing sync test (#9106)
  • invoicing: SAV-1083: Invoice UI Style tweaks (#9107)
  • invoicing: SAV-1083: Invoice UI fixes (#9110)
  • invoicing: SAV-1058: Invoicing footer (#9121)
  • invoicing: SAV-1083: Fix unsaved invoice item ui (#9120)
  • invoicing: SAV-1124: Invoice Pending Imaging & Lab Requests Features Flags (#9122)
  • invoicing: SAV-1129: Invoice UI updates (#9178)
  • invoicing: SAV-1129: Invoice UI Tweaks (#9183)
  • medication: EPI-1342: Support send to pharmacy workflow from ongoing medications table (#8938)
  • medication: Adding test ids to medication elements (#9043)
  • vaccinationCertificates: Add setting to disable Covid Vaccination Certificate signing (#8918)
  • EPI-1317: Add field to record ‘Repeats’ when creating new prescription (#8828)- EPI-1337: Make ‘Patient allergies’ section more prominent in new prescription/add ongoing medication form (#8837)- EPI-1318: Update send to pharmacy workflow (#8861)- EPI-1354: Add repeats to the ‘Medication details’ modal (#8881)- EPI-1340: update drug table to record availability and stock levels by facility (#8855)- Update allergy warning components and styles in MedicationSetModal and MedicationForm (d1f6c7929f)- EPI-1322: Create ‘Active medication requests’ table (#8919)- EPI-1341: Display stock levels when creating new prescription (#8922)- EPI-1330: Update ‘Add ongoing medications’ to encounter modal (#8933)- EPI-1323: implement apis for medications dispensing flow (#8921)- EPI-1323: Dispense medications workflow (front-end) (#8932)- EPI-1325: Create ‘Dispensed medications’ table (#8936)- EPI-1326: Delete medication request workflow (#8937)- EPI-1327: Cancel dispensed medication workflow (#8943)- EPI-1350: Print label from ‘Dispensed medications’ table (#8942)- EPI-1353: Update ‘Repeats’ field to be a numeric counter field (#8946)- EPI-1333: Update ‘Prescription’ printout (#8947)- EPI-1331: update print prescription modal (#8952)- EPI-1355: exclude unavailble medication during importing and di… (#8939)- EPI-1356: add permission checks for sensitive medications (#8940)- EPI-1328: Edit dispensed medication workflow (#8964)- EPI-1329: add validation for medication request and dispensing … (#8977)- EPI-1321: Update the patient level ‘Discharge medications’ table to ‘Dispensed medications’ table (#8945)- Fetch prescriber details for patient medications and add compact styling to the dispensed medications table. (06fef40b49)- Medications dispensing (#8838)- Update allergy warning components and styles in MedicationSetModal and MedicationForm (2eb515102e)- Fetch prescriber details for patient medications and add compact styling to the dispensed medications table. (2eb515102e)- EPI-1306: Program registry condition category not displaying translation (#9017)

Refactors 🛠️

  • encounters: Reorganise unified patient move form arguments (#8715)
  • Update reference drug facilities table (#8935)- Update MedicationLabel component for improved styling and dynamic dimensions (74a5b03cbd)- Update MedicationLabel component for improved styling and dynamic dimensions (2eb515102e)- Rename registry condition key and disable condition category display logic. (90decf164f)- Extract NON_EDITABLE_NOTE_TYPES constant and filter system/mobile notes (b32a47bc1e)

Revert ⏪

Security ⚠️

  • EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)- EPI-1354: Allow edit Repeats for ongoing medications and update Prescription type radio text (#8958)

Testing 🧪

  • e2e: Basic test phase 3 (#8846)
  • e2e: Release 2.49 E2E tests (#9142)

Tweaks ⚖️

  • audit: NASS-1836: Allow changing multiple encounter columns at once (#8657)
  • cd: Use subnamespaceanchors so that we can have strict permissions for GHA auto-deploys (#9027)
  • cd: Use tailscale OIDC (#9039)
  • copy: EPI-1258: Change copy on new prescription form (#8166)
  • encounter: NASS-1814: Planned patient move style tweaks (#8682)
  • encounterMove: NASS-1814: Location validation tweak (#8912)
  • encounters: NASS-1824: Fix field width to match figma (#8835)
  • encounters: NASS-1824 (ec17d594c8)
  • encounters: Encounter edit modal form spacing (#8864)
  • encounters: NASS-1854: Front end permission checks (#8857)
  • locationField: Show required star on location field when area field filled (#8839)
  • fix bugbot suggestions in meds dispensing epic (2c9c7166f8)- fix another bugbot suggestion (da4ba5af8b)- fix more bugbot suggestions in meds dispensing epic (ecee69b7e2)- add transaction to bulkCreate in dispense endpoint (e52f4fcec6)- remove redundant facility validation loop in drug loader (5d9d920b5b)- Tweak dat (133393d8b4)- Add location area fix to patient move epic (#8773)- Encounter actions copy tweak (tiny) (#8891)- Unified patient move copy tweaks (#8959)- NASS-1815: Update encounter summary pane for emergency encounters (#8961)
Copied to clipboard!