Skip to content

SORMAS 1.104.0

Latest

Choose a tag to compare

@SORMAS-JanBoehme SORMAS-JanBoehme released this 14 Jul 13:53

New Features

Disease surveillance

  • Malaria — Added full case surveillance for Malaria (Luxembourg): disease enum and configuration, case data / symptom / epidemiological / sample & pathogen-test forms aligned to ECDC/WHO standards, laboratory message reception and doctor's declaration processing [#13796] [#13797] [#13798] [#13799] [#13800] [#13801] [#13802] [#13835] [#13837]
  • Dengue — Added full case surveillance for Dengue (Luxembourg): disease configuration, case data / symptom / epidemiological / sample forms with serotype handling, immunization (dengue and travel vaccines), laboratory message reception and doctor's declaration processing [#13810] [#13811] [#13812] [#13813] [#13814] [#13815] [#13802] [#13836] [#13838]
  • Salmonellosis (Luxembourg) — Added case surveillance for Salmonellosis: disease enum, case data / contact / symptom / hospitalization / sample / epidemiological forms, with contact-tracing UI hidden as it is non-contagious [#13914] [#13915] [#13916] [#13917] [#13918] [#13939] [#13940] [#13941]
  • Shigellosis — Added case surveillance for Shigellosis: disease enum (with a new contagiousness feature), case data / symptom / epidemiological / sample & pathogen-test forms with Shigella serotyping, and laboratory messages [#13926] [#13927] [#13928] [#13929] [#13930] [#13931] [#13965]
  • Cryptosporidiosis — Enhanced the epidemiological data form with activity types (travel, water, animal contact) and transmission-mode dropdowns [#13613]
  • Giardiasis — Enhanced the epidemiological data form with travel, recreational-water and animal-contact exposures and a transmission section [#13606]

Laboratory module

  • Aligned the specimen list with the approved SNOMED-CT master list — reactivating and hiding specimens and ensuring export codes, with the Luxembourg set capped at 30 [#13949]
  • Made the New Sample specimen list disease-specific — the specimen dropdown now filters by disease, like the pathogen-test type list [#13950]
  • Introduced test categories and completed the method list — reorganised pathogen test types into seven categories and removed obsolete entries [#13951]
  • Added capture of quantitative test results — numeric, titre, sequence and graded results beyond positive/negative, shown in case views and exports [#13952]
  • Removed the unused "Request pathogen tests" section and made the "Add pathogen test" button administrator-configurable [#13953]
  • Added reference-laboratory and retest indicators to the Sample — surfaced in lists and exports [#13954]
  • Added a "Laboratory results" tab to the Case view — aggregating tests, samples and drug-susceptibility results into sortable tables [#13955]
  • Enhanced the antimicrobial susceptibility test (AST) structure — adding test method, raw MIC/zone results and a Wild-Type/Non-Wild-Type interpretation field [#13956]
  • Added filtering by test result, serogroup and variant in the case directory and surveillance dashboard [#13957]
  • Made the test-result requirement administrator-configurable — when disabled, tests save with "Pending" status [#13958]
  • Removed the sample-source dropdown from the sample form — existing human/animal/environment values are preserved in exports [#13959]

Immunization module

  • Implemented the Immunization module and vaccination updates — a deterministic vaccination-status engine with event-driven recalculation, a side panel and a quick-entry dialog [#13976]
  • Added a Quick Immunization Entry dialog — essential fields with auto-calculated validity dates that create the vaccination entry automatically [#13977]
  • Added a read-only vaccination-status side panel on Cases, Contacts and Event Participants, replacing the editable status on the main form [#13979]
  • Added vaccination-status calculation and determination rules — a deterministic engine mapping means-of-immunization to standardised status within validity windows [#13980]
  • Added propagation of number of doses and a three-tier information-reliability rating (Trusted / Unreliable / Unknown) [#13981]
  • Added recalculation triggers so vaccination status re-derives automatically when immunization, vaccination or reference-date data changes [#13982]
  • Added Luxembourg-specific configuration — default "Unknown" status, oral communication as a trusted source, and a disease-specific validity calculator [#13983]
  • Updated the vaccination module for PCV/PPV history — vaccine type, date and dose fields for invasive pneumococcal cases [#13343]

Customizable fields

  • Introduced customizable fields — admins can define custom form fields (text, date, combobox, yes/no, checkbox, radio) from the UI without SQL or code [#13828]
  • Links stored in a custom case definition now open in a new window instead of navigating away from SORMAS [#13903]
    External survey integration (Lux)
  • Added integration with the external survey tool ngSurvey — view a survey's answers within a case and map survey responses into SORMAS fields (filling only empty fields), making them available for Epipulse/ECDC exports [#13832]

Other

  • Added NUTS codes to the default infrastructure import files — "Import Default Countries" now populates them automatically for new installations [#13622]
  • Added an option to visually distinguish different system types — via a custom navigation-panel colour or a page-header identifier label [#13552]

Improvements

Case Management

  • Removed pregnancy-related fields from male cases — the Pregnancy field now appears only for female cases [#13426]
  • Renamed "Suspect Case" to "Possible Case" across all case-classification labels [#13827]
  • Allowed a case to be marked pregnant and postpartum at the same time instead of treating them as mutually exclusive [#13891]
  • Made the entry-date-into-country field optional (not mandatory) when country of birth is entered for TB cases [#13906]
  • Creating a notification from a doctor's declaration now adds a Doctor-type entry to the Reports list instead of writing directly to case fields [#13754]

External Messages

  • Match doctor's declarations that lack a name but carry a national health ID to the existing person, instead of showing the ID as the name [#13578]
  • Update a person's address from processed external messages — overwriting with the new values, with a popup on manual updates [#13589]
  • The external-message download button now downloads the original XML instead of an empty PDF [#13433]
  • Added the National Health ID to the patient information section of the external message display [#13816]
  • Changed the schedule for external message fetching — increased from daily to hourly and made the interval configurable [#13817]
  • The notification box now also appears for lab-message cases, not only doctor-declaration cases [#13681]

Samples / Laboratory

  • Made the "Verified by Supervisor" checkbox in the pathogen test form non-mandatory [#13557]
    Contact Management
  • Enabled the sample contact card by default for Measles, so users can record negative test results for measles contacts [#13907]

Bug Fixes

Case Management

  • Customizable field value for a case is saved but not immediately displayed — the UI shows stale values until refresh or navigation [#14081]
  • Number customizable field does not trigger an error on an invalid value — non-numeric text saves silently and the value is discarded [#14085]
  • Customizable field default value not applied when creating a new case [#14084]
  • Salmonellosis — Myalgia and Eye irritation symptoms are missing [#14040]
  • Dengue — symptoms tab had missing and miscategorised symptoms/complications versus the reference list [#14125]
  • Ebola — unsaved case data is lost when creating a phone notification; the warning appears only after the notification is saved [#14005]
  • Outcome-change confirmation popup incorrectly showed "Alive" instead of "Deceased," though the change saved correctly [#13454]
  • Medical history allowed contradictory entries (e.g. both current and former smoker) and did not auto-link related fields [#13456]
  • AFP — the "Responsible Surveillance Officer" field rejected manual text, accepting only dropdown selections [#14090]
  • Hospitalization — date fields toggled active/inactive regardless of the "Was admitted" / "Currently hospitalized" values [#14047]
  • Admins could not discard checkbox-selected prescriptions or treatments in the therapy tab, though individual deletion worked [#13473]
  • Giardiasis — the exposure-period reminder hardcoded "25 days" even when an incubation period was configured in disease settings [#14094]
  • Case laboratory results — labels and their values rendered without spacing, making them hard to distinguish [#14010]
  • Tuberculosis case form hid the contacts tab and showed irrelevant symptom fields (complication box, max body temperature, empty "Other") [#14029]
  • Shigellosis — the immunization side panel showed when creating/editing cases but should be hidden [#14045]
  • When merging two cases, an assigned survey token transferred only when that case was the merge target [#13843]
  • Dengue — "Date of death" and "Cause of death" appeared bold-outlined (as if mandatory) but were not enforced [#13462]
  • Doctor's declaration — "Treatment started" was stored on the Therapy entity and should move to the Case entity for reliable processing [#13775]
  • Doctor's declaration — the diagnosis date was not saved to or displayed on the case [#13751]
  • National-level users with case-responsibility rights were missing from the "Responsible surveillance officer" dropdown, unlike district-level users [#13830]
  • Malaria & Dengue — the exposure form did not auto-default to "Mosquito-borne," requiring manual selection [#13922]
  • RSV — "Perinatal Details" case-person labels and fields did not match the requirements document [#14066]
  • TB — the "Compliance with treatment" caption appeared twice (in both the label and the dropdown) under pre-existing conditions [#14082]
  • Pertussis — the Luxembourg case-person form was missing "Death place type" and "Death place description" fields [#14109]

Contact Management

  • "Type of Contact" checkboxes behaved like radio buttons on the new-contact form, allowing only one selection [#13711]
  • IMI — "Prophylaxis prescribed" was present on the contact detail form but missing from the creation form [#14059]
  • Contact Directory — clicking the "Types of Contact" column header raised an error instead of sorting [#14042]
  • Giardiasis — the immunization side panel showed on contacts but should be hidden [#14032]

Immunization

  • Person view — the immunization box failed to display when opening any person from the directory [#14014]
  • Vaccination dates failed to display after saving a second immunization record, blocking date adjustment [#14000]
  • Contact view — newly created immunizations did not show until refresh, and saving without refresh errored [#13998]
  • Misleading popup after saving a vaccination — it said "updated to vaccinated" even when the status was set to "Not Vaccinated" [#13999]
  • "Other epidemic disease" immunizations could be saved without the mandatory vaccination-target field, so status did not update and no alert showed [#14007]

Samples / Laboratory

  • "4-fold increase in antibody titers" checkbox was disabled/uneditable for IgM/IgG serum antibody tests [#13559]
  • AST for Tuberculosis showed five columns but should show only three (value, method, interpretation) [#14036]
  • Measles test results — the "Antigen detection" test type was missing [#14026]
  • Salmonellosis — missing IgM/IgG pathogen tests and an incorrectly included "Saliva" sample type [#14041]
  • Cryptosporidiosis — not all required sample types were available when creating a new sample [#14075]
  • Pathogen test form — the result field failed to display for biopsy samples with the Hemagglutination Inhibition (HI) test type [#14105]
  • Pathogen test form — validation errors did not all show at once, and a laboratory-field error showed as info rather than an error [#14012]
  • Latent Tuberculosis infection tabulations were misconfigured — should enable all tabs except hospitalization, symptoms, clinical course and contacts [#14038]
  • Malaria — the "Thin blood smear" test showed duplicate "Result details" / "Test results details" fields [#14016]
  • PathogenTestForm — the IGRA "Tube NIL" value of 10 disappeared when toggling the "Tube NIL > 10" checkbox to No [#13883]
  • Giardiasis test results — the "Antigen" test type was missing from the dropdown [#14031]
  • A positive PCR/RT-PCR test for Tuberculosis showed "Value/Unit" fields instead of the expected CQ/CT cycle-threshold fields [#14030]
  • Measles samples — throat swab, nasopharyngeal aspirate, throat aspirate and amniotic fluid sample types were missing [#14025]
  • RSV test result — the "RSV subtyping" test type was missing [#14024]
  • RSV samples — nasopharyngeal aspirate, nasopharyngeal lavage and oropharyngeal (throat) swab sample types were missing [#14023]
  • IMI test results — the "Latex Agglutination" test type was missing [#14034]

External Messages

  • Pertussis doctor's declaration failed to transfer address country, tutor info, hospitalization dates, symptoms and diagnosis date to the case [#13717]
  • Technical error with no meaningful message when assigning an unassigned Cryptosporidiosis lab message to an existing case [#14069]
  • Occupation from a Pertussis doctor's notification failed to populate the Case Person occupation field [#13732]
  • Word documents from email templates showed stale dates because dynamic date fields were not refreshed before sending [#13619]
  • A Dengue message with treatment-started value "inconnu" failed to transfer as "Unknown" to the created case [#14001]
  • IPI lab message with PNEU-1=Yes failed to toggle the "Performed by reference laboratory" checkbox on case pathogen tests [#14058]
  • When an external message had both an email and a phone for a contact, only the email was saved and the phone was ignored [#13625]
  • Doctor's declaration processing failed to store occupation, legal-guardian status, notification/symptom-onset dates and diagnosis dates [#13774]
  • External message processing failed when case comments exceeded 255 characters, causing a database value-too-long error [#13879]

Configuration

  • Customizable fields did not validate that default values matched their data type, allowing invalid defaults to be saved [#14086]
  • A customizable field could be saved without a UI Group, but such fields then did not display anywhere [#14087]
  • Typing into the search field on the Customizable Fields configuration page threw a technical error instead of filtering [#14078]
  • Disease Configuration table columns did not sort when clicking their headers [#13428]
  • Disabling a disease variant still used in cases made the Case Directory throw an "Invalid enum value" error [#13653]
  • The Measles case-classification info popup showed raw HTML markup instead of rendered text [#13935]
  • Data Dictionary — @diseases hide=true showed only the listed diseases instead of all except those listed [#13848]
  • Double-clicking a row in Customizable Fields opened the delete modal instead of the edit modal [#14079]
  • Statistics Database Export showed technical field names instead of user-friendly labels for some items [#13670]

Dashboard

  • Sample dashboard did not display pathogen test results marked "Not Applicable," though the count still tallied them [#14019]
  • Sample dashboard — filters lacked watermarks, the test-result filter did not update totals, and serogroup/disease-variant filters returned no results [#14057]

Users

  • Login — the "Login as Clinician" button actually logged in as Case Supervisor; the label needed correcting [#14011]
  • The Clinician role got an error when accessing the Aggregate module [#14122]

Surveys

  • Survey menu "Reset Filters" filtered instead of clearing inputs and showing all surveys [#13517]

Other

  • The security@sormas.org vulnerability-reporting address bounced mail as not found / unable to receive [#13628]
  • When a NAT user added task comments, the GDPR warning modal appeared behind the task dialog, making it unreadable [#13750]

Technical / internal