KodeMed 2026.11.4.2648
Released 2026-11-04
KodeMed November 2026 (v2026.11.4.2648)
New features
- Language, zoom, theme and the case layout are now saved per user on the server, so they follow the coder to any workstation or remote desktop session instead of staying in one browser profile. (#2076)
- The Windows client (COM DLL) finds its kodemed-client-config.json next to KodeMed.dll even when another application hosts it; the new KODEMED_CLIENT_CONFIG variable can point to a file or folder elsewhere, and the log lists every location searched. (#2160)
- Work is saved a few seconds after each edit and when the window closes, so a reload shows everything that was entered. (#2058)
- "Set as main procedure" moves a CHOP code to position 1, like "Set as main diagnosis" for ICD-10. (#2070)
- The grouper panel shows by how many days the upper trim point is exceeded or the lower one is not reached, next to the cost weight adjustment. (#2072)
- New Abbreviations section in Settings: every abbreviation in use, a model file to download, and an upload that adds new abbreviations without changing existing ones, with a change log. (#2118, #2133)
- Administrators can upload a whole year of import data as one ZIP file in Settings > Data sources. (#2132, #2133)
- Reviewed abbreviation and synonym lists in German, French and Italian for ICD-10 and CHOP. (#2118)
Fixes
- Dates and times follow the language chosen in KodeMed (DD.MM.YYYY, 24 h) instead of the Windows regional settings; the audit date filter uses the same date and time fields as the rest of the application. (#2161)
- A sex conflict is a warning, never a block: Apply finalises the case, and a code search always returns the code with its warning badge; a filtered list says how many codes were hidden. (#2120, #2144)
- The type-ahead suggestions follow the same age/sex filter as the result list. (#1962)
- A Kreuz code moves above its linked Stern code, linked pairs move together, asterisk codes show their asterisk, and A41.9 no longer offers a dagger partner. (#1933, #1934, #2121)
- Several ticked codes can be dragged together by the handle of one of them. (#1845)
- Search: an exact CHOP code no longer floods the list with codes sharing a number, exact compound words rank first, curated synonyms stay on their own code, and exclusions citing a code range reach the codes under it. (#409, #1972, #2054, #2146)
- CHOP rehabilitation codes (AA.*) and other letter-prefixed CHOP codes show their description. (#2052)
- Laterality labels match the BFS codes, and N21.x and I21.40/I21.41 no longer require a side. (#1933, #2069)
- The case list, case header and printout show the length of stay the case is billed with; for ST Reha, a BA code without a start date is reported instead of silently changing the length of stay, and the first BA code defaults to the admission date. (#2067, #2071)
- Newborns: a live birth is no longer written back to the HIS as a stillbirth. (#2138)
- The grouper panel no longer shows a sample DRG when the grouper is unavailable. (#2094)
- The change history restores codes in their original order and linked pairs in the right order, and a linked pair can be moved. (#2078)
- Session messages and the session history are shown in the user's language, and code links in info popups are readable. (#2036, #2051, #2081)
- The coding window loads its fonts locally, so it works on servers without internet access. (#304)
- The coding window shows only the admin sections the server allows for the user's role. (#2057, #2063)
- Each case is grouped with its own billing tariff: TARPSY and ST Reha cases in the same session as an acute case are no longer grouped as SwissDRG, and the coding window decides SwissDRG / TARPSY / ST Reha from the billing tariff alone. (#793, #2152, #2167)
- ICD-10 codes built from a modifier (for example E10.40, M49.00) carry their dagger/asterisk mark and offer their linked partner code. (#2135)
- The gestational age of a newborn is read as weeks and days (395 = 39+5), as SpiGes defines it; the preterm chip starts below 37+0. (#2123)
- A data scan rebuilds the thesaurus only when there is new data, and an interrupted import no longer leaves a language or catalogue empty. (#1856, #2116)
Integration (DLL / REST)
- GetResults returns the leave days, the SwissDRG case type, the grouper's status per code and the SPLG Spitalliste status. (#2119, #2130)
- A session can be completed only once: a second completion is refused with HTTP 409 instead of overwriting the result and sending the webhook again. (#2150)
- With several server instances, a completed session is no longer reported as open or in conflict. (#2148)
- An inactivity timeout no longer leaves the HIS waiting until the coder closes a message box. (#2065)
- A coding window opened from a REST HIS keeps saving after its sign-in token is renewed. (#2098)
- GetResults, the REST result and the webhook carry the tariff and grouper version of each case. (#2152)
Installation
- Updates wait for a Keycloak that is slow to start instead of failing, no longer add unrelated example settings to your configuration, end a failed data step with a clear verdict, and give older installations every setting added since they were installed. (#2073, #2087, #2088)
- The install and update tools name every data file that could not be imported, with its log. (#1921)
- Native installations rotate their service log files. (#2091)
- Request limits: a limit set under either of its two setting names is applied reliably, the server logs the limits in effect at startup, and it warns when many users reach it from one address (load balancer, NAT, remote desktop). The diagnostic tool has a new Rate limiting section. (#2162, #2164)
- The update tool no longer writes a setting a second time into a .env file where it is indented or written in another form. (#2163)
- SPLG grouping works without a Spitalliste; only the mandate check is then unavailable. The installation guides say so. (#1922)