Přeskočit obsah
For the complete DHIS2 documentation index, see llms.txt.

2.38 Upgrade Notes

⚠️ Please ensure you have read the upgrade notes from the PREVIOUS RELEASE, if upgrading from an earlier version

Java Support

Počínaje DHIS 2.38 je vyžadována Java JDK verze 11. To znamená, že Java 8 již není podporována.

Java 11 je podporována pro DHIS 2 od verze 2.35. To znamená, že můžete upgradovat svůj server na JDK 11, zatímco stále běží DHIS 2.35 nebo novější v rámci přípravy na upgrade DHIS 2.38. Java 11 se ukázala jako spolehlivá a výrazně rychlejší pro DHIS 2 v provozu.

Jako vždy doporučujeme používat OpenJDK distribuci Java, vzhledem k povaze bezplatného a otevřeného zdroje. Distribuce OpenJDK 11 jsou dostupné na všech hlavních operačních systémech a jsou výchozím JDK na Ubuntu 20.04 LTS.

Databáze

  • Všechny starší tabulky hodnot atributů metadat jsou nyní odstraněny. Tyto tabulky mají příponu *attributevalues , jako je categoryattributevalues nebo datasetattributevalues.
  • V tabulce sqlview byla do sloupců type a cachestrategy přidána omezení not-null.
  • The table users are removed, and its data are migrated into the userinfo table. (This does not affect the API, which maintains backward compatibility)
  • For adding trigram indexes and compounding it with primitive column types, two extensions have to be created in the database. The extensions are already part of the default posgresql installation. Extensions:
    create extension pg_trgm;
    create extension btree_gin;
    
  • Starting in 2.38, PRVs have a value type (valueType field in the API, valuetype column on the DB table)
    Since this new field cannot be null, the system assigns valueType = TEXT to all PRVs
    If you happen to have PRVs of source type CALCULATED_VALUE, and they are supposed to hold a numeric value, when they are initialized by default to TEXT, some PRs are impacted.
    Například: Suppose PRV AgeYears is used as follows in a condition of a PR
    #{AgeYears} > 5
    
    After the upgrade to 2.38, this PR is no longer working because #{AgeYears} is of type TEXT, so comparing it against a number gives an error (or warning)
    Program rule variables which are not of type TEXT must be updated with the proper valueType. In the above example, AgeYears should have the valueType set to NUMBER.

API

  • Ruční spouštění úloh pomocí /api/jobConfigurations/execute se změnilo z použití GET na metodu požadavku POST.
  • ID programu je nyní povinné pro fázi programu. Dotčené koncové body jsou /programStages, /metadata.
  • Koncový bod GET /systemSettings vracející JSONP (Accept=application/javascript) byl odstraněn.
  • Several API endpoints slightly change their response root object to be in line with the majority of endpoints. The root object returned prior to 2.38 will become the member named response of the new root object returned in 2.38. Consumers can opt to either use /api/37/ to get the old behaviour or have to unpack to new response by doing <root>.response to resolve the previous root from the 2.38 response.

NOTE

In case of an error, responses will return HTTP status 409 Conflict and not 200 OK.

Dotčené koncové body jsou:

  • POST /api/completeDataSetRegistrations with JSON/XML (only non async affected)
  • POST /api/dataValueSets with JSON/XML/ADX/CSV (only non async affected)
  • POST /api/metadata with JSON/XML/GML/CSV (only non async affected)
  • POST /api/predictions (only non async affected)
  • PUT /api/predictions (only non async affected)
  • PUT /api/relationships/{id}
  • PUT /api/users/{uid} with JSON/XML