Trasovač¶
Note Tracker has been re-implemented in DHIS2 2.36. This document describes the new tracker endpoints
POST /api/trackerGET /api/tracker/enrollmentsGET /api/tracker/eventsGET /api/tracker/trackedEntitiesGET /api/tracker/relationshipsTracker (deprecated) describes the deprecated endpoints
GET/POST/PUT/DELETE /api/trackedEntityInstancesGET/POST/PUT/DELETE /api/enrollmentsGET/POST/PUT/DELETE /api/events
GET/POST/PUT/DELETE /api/relationshipsIf your are still using the deprecated tracker endpoints in production, please plan to migrate over to the new endpoints. Migrating to new tracker endpoints should help you get started. Reach out on the community of practice if you need further assistance. NOTE: The feature for data sync(importMode=SYNC) is not implemented in the new tracker endpoints, and if you are using this feature you will have to postpone the migration until a new SYNC feature is in place.
Objekty Trasovače¶
Trasovač se skládá z několika různých typů objektů, které jsou vnořeny dohromady, aby reprezentovaly data. V této části ukážeme a popíšeme každý z objektů používaných v Tracker API.
Tracked Entity¶
Trasované entity jsou kořenovým objektem pro model trasování.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| trackedEntity | Identifikátor trasované entity. Vygenerováno, pokud není dodáno | Ne | Ano | String:Uid | ABCDEF12345 |
| trackedEntityType | Typ trasované entity. | Ano | Ano | String:Uid | ABCDEF12345 |
| createdAt | Časové razítko, kdy uživatel vytvořil trasovanou entitu. Nastavit na serveru. | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| createdAtClient | Časové razítko, kdy uživatel vytvořil trasovanou entitu na klientovi. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byl objekt naposledy aktualizován. Nastavit na serveru. | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAtClient | Časové razítko, kdy byl objekt naposledy aktualizován na klientovi. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| orgUnit | Organizační jednotka, kde uživatel vytvořil trasovanou entitu. | Ano | Ano | String:Uid | ABCDEF12345 |
| neaktivní | Udává, zda je trasovaná entita neaktivní nebo ne. | Ne | Ano | Boolean | Výchozí: False, True |
| smazáno | Označuje, zda byla trasovaná entita odstraněna. Může se změnit pouze při mazání. | Ne | Ne | Boolean | Nepravda, dokud nebude smazán |
| geometrie | A geographical representation of the tracked entity. Based on the "featureType" of the TrackedEntityType. | Ne | Ano | GeoJson | { "type": "POINT", "coordinates": [123.0, 123.0] } |
| storedBy | Odkaz klienta na to, kdo uložil/vytvořil trasovanou entitu. | Ne | Ano | String:Any | John Doe |
| createdBy | Pouze pro čtení dat. Uživatel, který objekt vytvořil. Nastaveno na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| updatedBy | Pouze pro čtení dat. Uživatel, který naposledy aktualizoval objekt. Nastavit na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| atributy | Seznam hodnot atributů trasované entity vlastněných trasovanou entitou. | Ne | Ano | Seznam TrackedEntityAttributeValue | Viz Atribut |
| zápisy | Seznam zápisů vlastněných trasovanou entitou. | Ne | Ano | Seznam zápisů | Viz Zápis |
| vztahy | Seznam vztahů spojených s trasovanou entitou. | Ne | Ano | Seznam vztahů | Viz Vztah |
| programOwners | Seznam organizačních jednotek, které mají prostřednictvím konkrétních programů přístup k této sledované entitě. Více viz "Vlastnictví programu". | Ne | Ano | Seznam ProgramOwner | Viz část "Vlastnictví programu" |
Poznámka
Trasované entity"vlastní" všechnyHodnoty atributů trasované entity(nebo "atributy", jak je popsáno v předchozí tabulce).Atributy trasované entityjsou však buď spojeny strasovanou entitouprostřednictvím jejíhoTypu trasované entityneboProgramu. Toto oddělení často nazývámeAtributy typu trasované entityaAtributy programu trasované entity. Důležitost tohoto oddělení souvisí s řízením přístupu a omezením toho, jaké informace může uživatel vidět."Atributy" uvedené v části
Trasovaná entitajsouAtributy typu trasované entity.
Zápis¶
Trasované entity se mohou přihlásit do Programů, pro které mají nárok. Trasované entity jsou způsobilé, pokud je program nakonfigurován se stejným typem trasované entity jako trasovaná entita. Zápis reprezentujeme objektem Zápis, který popisujeme v této části.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| zápis | Identifikátor zápisu. Vygenerováno, pokud není dodáno | Ne | Ano | String:Uid | ABCDEF12345 |
| program | Program, který zápis představuje. | Ano | Ne | String:Uid | ABCDEF12345 |
| trackedEntity | Odkaz na zaregistrovanou trasovanou entitu. | Ano | Ano | String:Uid | ABCDEF12345 |
| status | Stav zápisu. AKTIVNÍ, pokud není součástí dodávky. | Ne | Ne | Výčet | AKTIVNÍ, DOKONČENO, ZRUŠENO |
| orgUnit | Organizační jednotka, do které uživatel zapsal trasovanou entitu. | Ano | Ne | String:Uid | ABCDEF12345 |
| orgUnitName | Pouze pro čtení dat. Název organizační jednotky, kde došlo k zápisu. | Ne | Ne | String:Any | Sierra Leone |
| createdAt | Časové razítko, kdy uživatel vytvořil objekt. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| createdAtClient | Časové razítko, kdy uživatel vytvořil objekt na klientovi | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byl objekt naposledy aktualizován. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAtClient | Časové razítko, kdy byl objekt naposledy aktualizován na klientovi | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| enrolledAt | Časové razítko, kdy uživatel zaregistroval trasovanou entitu. | Ano | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| occurredAt | Časové razítko, kdy došlo k registraci. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| completedAt | Časové razítko, kdy uživatel dokončil registraci. Nastaveno na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| completedBy | Odkaz na to, kdo dokončil registraci | Ne | Ne | String:any | John Doe |
| followUp | Označuje, zda zápis vyžaduje následnou kontrolu. Nesprávné, pokud není dodáno | Ne | Ne | Booelan | Výchozí: False, True |
| smazáno | Označuje, zda byla registrace smazána. Může se změnit pouze při mazání. | Ne | Ano | Boolean | Nepravda, dokud nebude smazán |
| geometrie | A geographical representation of the enrollment. Based on the "featureType" of the Program | Ne | Ne | GeoJson | { "type": "POINT", "coordinates": [123.0, 123.0] } |
| storedBy | Odkaz klienta na to, kdo uložil / vytvořil registraci. | Ne | Ne | String:Any | John Doe |
| createdBy | Pouze pro čtení dat. Uživatel, který objekt vytvořil. Nastaveno na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| updatedBy | Pouze pro čtení dat. Uživatel, který naposledy aktualizoval objekt. Nastavit na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| atributy | Seznam hodnot atributů trasovaných entit spojených s registrací. | Ne | Ne | Seznam TrackedEntityAttributeValue | Viz Atribut |
| Události | Seznam událostí vlastněných registrací. | Ne | Ne | Seznam událostí | Viz Událost |
| vztahy | Seznam vztahů spojených s registrací. | Ne | Ne | Seznam vztahů | Viz Vztah |
| poznámky | Poznámky spojené s registrací. Lze jej pouze vytvořit. | Ne | Ano | Seznam poznámek | Viz poznámka |
Poznámka
Trasované entity"vlastní" všechnyHodnoty atributů trasovaných entit(nebo "atributy", jak je popsáno v předchozí tabulce). AtributyTrasovaných entitjsou však buď připojeny kTrasované entitěprostřednictvím jejíhoTypu trasované entity, neboProgramu. Toto rozdělení často označujeme jakoAtributy typu trasované entityaAtributy programu trasované entity. Význam tohoto oddělení souvisí s řízením přístupu a omezením toho, jaké informace může uživatel vidět."Atributy", na které se odkazuje v
Zápisu, jsouAtributy programu trasované entity.
Události¶
Events are either part of an EVENT PROGRAM or TRACKER PROGRAM. For TRACKER PROGRAM, events belong to an Enrollment, which again belongs to a Tracked Entity. On the other hand, EVENT PROGRAM is Events not connected to a specific Enrollment or Tracked Entity. The difference is related to whether we track a specific Tracked Entity or not. We sometimes refer to EVENT PROGRAM events as "anonymous events" or "single events" since they only represent themselves and not another Tracked Entity.
V rozhraní API je podstatný rozdíl v tom, že všechny události jsou buď připojeny ke stejnému zápisu (PROGRAM UDÁLOSTI), nebo k různým zápisům (PROGRAM TRACKER). Níže uvedená tabulka uvede všechny výjimečné případy mezi těmito dvěma.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| událost | Identifikátor události. Vygenerováno, pokud není dodáno | Ne | Ano | String:Uid | ABCDEF12345 |
| programStage | Fáze programu, kterou akce představuje. | Ano | Ne | String:Uid | ABCDEF12345 |
| zápis | A reference to the enrollment which owns the event. Not applicable for EVENT PROGRAM | Ano | Ano | String:Uid | ABCDEF12345 |
| program | Pouze pro čtení dat. Typ programu, který má registrace, která událost vlastní. | Ne | Ano | String:Uid | ABCDEF12345 |
| trackedEntity | Pouze pro čtení dat. Trasovaná entita, která událost vlastní. Neplatí pro PROGRAM AKCE | Ne | Ne | String:Uid | ABCDEF12345 |
| status | Stav události. AKTIVNÍ, pokud není součástí dodávky. | Ne | Ne | Výčet | AKTIVNÍ, DOKONČENÉ, NAVŠTÍVENÉ, PLÁNOVANÉ, PO TERMÍNU, PŘESKOČENO |
| enrollmentStatus | Only for reading data. The status of the enrollment which owns the event. Not applicable for EVENT PROGRAM | Ne | Ne | Výčet | AKTIVNÍ, DOKONČENO, ZRUŠENO |
| orgUnit | Organizační jednotka, kde uživatel zaregistroval událost. | Ano | Ne | String:Uid | ABCDEF12345 |
| orgUnitName | Pouze pro čtení dat. Název organizační jednotky, kde uživatel událost zaregistroval. | Ne | Ne | String:Any | Sierra Leone |
| createdAt | Časové razítko, kdy uživatel vytvořil událost. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| createdAtClient | Časové razítko, kdy uživatel vytvořil událost na klientovi | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byla událost naposledy aktualizována. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAtClient | Časové razítko, kdy byla událost naposledy aktualizována na klientovi | Ne | Ne | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| scheduledAt | Časové razítko, kdy byla událost naplánována. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| occurredAt | Časové razítko, když se něco stalo. | Ano | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| completedAt | Časové razítko, kdy uživatel dokončil událost. Nastaveno na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| completedBy | Odkaz na toho, kdo akci dokončil | Ne | Ne | String:Any | John Doe |
| followUp | Označuje, zda byla událost označena pro sledování. Nesprávné, pokud není dodáno | Ne | Ne | Booelan | Výchozí: False, True |
| smazáno | Označuje, zda byla událost smazána. Může se změnit pouze při mazání. | Ne | Ano | Boolean | Nepravda, dokud nebude smazán |
| geometrie | A geographical representation of the event. Based on the "featureType" of the Program Stage | Ne | Ne | GeoJson | { "type": "POINT", "coordinates": [123.0, 123.0] } |
| storedBy | Odkaz klienta na to, kdo událost uložil/vytvořil. | Ne | Ne | String:Any | John Doe |
| createdBy | Pouze pro čtení dat. Uživatel, který objekt vytvořil. Nastaveno na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| updatedBy | Pouze pro čtení dat. Uživatel, který naposledy aktualizoval objekt. Nastavit na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| attributeOptionCombo | Kombinace možností atributu pro událost. Výchozí, pokud není dodáno nebo nakonfigurováno. | Ne | Ne | String:Uid | ABCDEF12345 |
| attributeCategoryOptions | Možnost kategorie atributu pro událost. Výchozí, pokud není dodáno nebo nakonfigurováno. | Ne | Ne | String:Uid | ABCDEF12345 |
| assignedUser | Odkaz na uživatele, který byl přiřazen k události. | Ne | Ne | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| dataValues | Seznam datových hodnot spojených s událostí. | Ne | Ne | List of DataElementValue | See Data Values |
| vztahy | Seznam vztahů spojených s událostí. | Ne | Ne | Seznam vztahů | Viz Vztah |
| poznámky | Poznámky spojené s událostí. Lze jej pouze vytvořit. | Ne | Ano | Seznam poznámek | Viz poznámka |
Relationship¶
Vztahy jsou objekty, které spojují dva další objekty sledování. Omezení, kterým musí odpovídat každá strana vztahu, jsou založena na Typu vztahu ve Vztahu.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| vztah | Identifikátor vztahu. Vygenerováno, pokud není dodáno. | Ne | Ano | String:Uid | ABCDEF12345 |
| relationshipType | Typ vztahu. Rozhoduje, jaké objekty mohou být spojeny ve vztahu. | Ano | Ano | String:Uid | ABCDEF12345 |
| relationshipName | Pouze pro čtení dat. Název typu vztahu tohoto vztahu | Ne | Ne | String:Any | Sourozenec |
| createdAt | Časové razítko, kdy uživatel vytvořil vztah. Nastaveno na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byl vztah naposledy aktualizován. Nastavuje se na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| obousměrný | Pouze pro čtení dat. Označuje, zda je typ vztahu obousměrný nebo ne. | Ne | Ne | Boolean | True nebo False |
| od, do | Odkaz na každou stranu vztahu. Musí odpovídat omezením nastaveným v typu vztahu | Ano | Ano | RelationshipItem | {"trackedEntity": {"trackedEntity": "ABCEF12345"}}, {"enrollment": {"enrollment": "ABCDEF12345"}} or {"event": {"event": "ABCDEF12345" }} |
Note
Relationship itemrepresents a link to an object. Since arelationshipcan be between any tracker object liketracked entity,enrollment, andevent, the value depends on therelationship type. For example, if therelationship typeconnects from aneventto atracked entity, the format is strict:{ "from": { "event": { "event": "ABCDEF12345" } }, "to": { "trackedEntity": { "trackedEntity": "FEDCBA12345" } } }
Atribut¶
Atributy jsou skutečné hodnoty popisující trasované entity. Mohou být připojeny prostřednictvím typu trasované entity nebo programu. Implicitně to znamená, že atributy mohou být součástí trasované entity i zápisu.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| attribute | Odkaz na zastoupený atribut trasované entity. | Ano | Ano | String:Uid | ABCDEF12345 |
| code | Pouze pro čtení dat. Kód atributu trasované entity. | Ne | Ne | String:Any | ABC |
| displayName | Pouze pro čtení dat. DisplayName atributu trasované entity. | Ne | Ne | String:Any | Název |
| createdAt | Časové razítko, kdy byla hodnota přidána. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byla hodnota naposledy aktualizována. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| storedBy | Odkaz klienta na to, kdo hodnotu uložil / vytvořil. | Ne | Ne | String:Any | John Doe |
| valueType | Pouze pro čtení dat. Typ hodnoty, kterou atribut představuje. | Ne | Ne | Výčet | TEXT, INTEGER a další |
| value | Hodnota atributu trasované entity. | Ne | Ne | String:Any | John Doe |
Poznámka
Pro
attributesjsou při přidávání dat vyžadovány pouze vlastnosti "attribute" a "value". "value" může být null, což znamená, že uživatel by měl hodnotu odstranit.V kontextu objektů sledování označujeme
atributy trasované entityahodnoty atributů trasované entityjako "atributy". Atributy jsou však také jejich věc, související s metadaty. Proto je důležité oddělit atributy Tracker a atributy metadat. V tracker API je možné odkazovat na atributy metadat při zadáváníidScheme(další informace viz parametry požadavku).
Data Values¶
Zatímco Attributes popisuje trasovanou entitu nebo zápis, datové hodnoty popisují událost. Hlavní rozdíl spočívá v tom, že atributy mohou mít pro danou trasovanou entitu pouze jednu hodnotu. Naproti tomu datové hodnoty mohou mít mnoho různých hodnot pro různé události - i když všechny události patří ke stejnému zápisu nebo trasované entitě.
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| dataElement | Datový prvek, který tato hodnota představuje. | Ano | Ano | String:Uid | ABCDEF12345 |
| value | Hodnota datové hodnoty. | Ne | Ne | String:Any | 123 |
| providedElsewhere | Označuje, zda uživatel zadal hodnotu jinde nebo ne. Nesprávné, pokud není dodáno. | Ne | Ne | Boolean | False nebo True |
| createdAt | Časové razítko, kdy uživatel přidal hodnotu. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| updatedAt | Časové razítko, kdy byla hodnota naposledy aktualizována. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| storedBy | Odkaz klienta na to, kdo hodnotu uložil / vytvořil. | Ne | Ne | String:Any | John Doe |
| createdBy | Pouze pro čtení dat. Uživatel, který objekt vytvořil. Nastaveno na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
| updatedBy | Pouze pro čtení dat. Uživatel, který naposledy aktualizoval objekt. Nastavit na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
Poznámka
Pro
data elementsjsou při přidávání dat vyžadovány pouze vlastnosti "dataElement" a "value". "value" může být null, což znamená, že uživatel by měl hodnotu odstranit.
Tracker Notes¶
DHIS2 tracker umožňuje zachycování dat pomocí datových prvků a atributů trasovaných entit. Někdy však může nastat situace, kdy je nutné zaznamenat doplňující informace nebo se k dané problematice vyjádřit. Tyto dodatečné informace lze zachytit pomocí poznámek trackeru. Poznámky ke sledování jsou ekvivalentní komentářům datových hodnot ze strany Aggregate DHIS2.
Existují dva typy poznámek – poznámky zaznamenané na úrovni události a poznámky zaznamenané na úrovni registrace. Zápis může mít jednu nebo více událostí. Komentáře ke každé z událostí – například proč byla událost zmeškána, přeplánována nebo proč bylo vyplněno jen několik datových prvků a podobně – lze dokumentovat pomocí poznámek k události. Každá z událostí v rámci registrace může mít svůj vlastní příběh/poznámky. Potom lze zaznamenat například celkové pozorování těchto událostí pomocí poznámky k zápisu pro rodiče. Poznámky k zápisu jsou také užitečné pro zdokumentování například toho, proč je zápis zrušen. Kdy a jak poznámky použije, záleží na představivosti uživatele a na jeho použití.
Zápis i událost mohou mít tolik poznámek, kolik je potřeba – není omezeno. Ani jednu z těchto poznámek však není možné smazat ani aktualizovat. Jsou jako logbook. Pokud chcete poznámku upravit, můžete tak učinit vytvořením další poznámky. Jediný způsob, jak odstranit poznámku, je smazání nadřazeného objektu – buď události, nebo zápisu.
Poznámky trackeru nemají svůj vyhrazený koncový bod; jsou vyměňovány jako součást nadřazené události a / nebo datového obsahu registrace. Níže je ukázka datového obsahu.
{
"trackedEntityInstance": "oi3PMIGYJH8",
<entity_details>,
],
"enrollments": [
{
"enrollment": "EbRsJr8LSSO",
<enrollment_details>
"notes": [
{
"note": "vxmCvYcPdaW",
"value": "Enrollment note 2.",
},
{
"value": "Enrollment note 1",
}
],
"events": [
{
"event": "zfzS9WeO0uM",
<event_details>,
"notes": [
{
"note": "MAQFb7fAggS",
"value": "Event Note 1.",
},
{
"value": "Event Note 2.",
}
],
},
{
...
}
]
}
]
}
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| Poznámka | Odkaz na poznámku. Vygenerováno, pokud je prázdné | Ne | Ano | String:Uid | ABCDEF12345 |
| value | Obsah poznámky. | Ano | Ano | String:Any | Toto je poznámka |
| storedAt | Časové razítko, kdy uživatel přidal poznámku. Nastavit na serveru. | Ne | Ano | Date:ISO 8601 | RRRR-MM-DDThh:mm:ss |
| storedBy | Odkaz klienta na to, kdo uložil / vytvořil poznámku. | Ne | Ne | String:Any | John Doe |
| createdBy | Pouze pro čtení dat. Uživatel, který objekt vytvořil. Nastaveno na serveru | Ne | Ano | Uživatel | { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } |
Uživatel¶
| Vlastnictví | Popis | Požadované | Neměnný | Typ | Příklad |
|---|---|---|---|---|---|
| uid | Identifikátor uživatele. | Yes* | Ano | String:Uid | ABCDEF12345 |
| uživatelské jméno | Uživatelské jméno používané uživatelem. | Yes* | Ano | String:Any | 123 |
| firstName | Pouze pro čtení dat. Křestní jméno uživatele. | Ne | Ano | String:Any | John |
| surname | Pouze pro čtení dat. Příjmení uživatele. | Ne | Ano | String:Any | Doe |
Musí být uvedeno jedno mezi polem
uidnebousername. Pokud jsou uvedeny obě, bere se v úvahu pouze uživatelské jméno.
Program stage working lists¶
The program stage working lists feature within the Capture app is designed to display pre-established working lists relevant to a particular program stage. This functionality enables users to save filters and sorting preferences that are related to program stages, facilitating the organization and management of their workflow. To interact with them, you'll need to use the /api/programStageWorkingLists resource. These lists can be shared and follow the same sharing pattern as any other metadata. When using the /api/sharing the type parameter will be programStageWorkingLists.
/api/40/programStageWorkingLists
Payload on CRUD operations to program stage working lists¶
The endpoint above can be used to get all program stage working lists. To get a single one, just add at the end the id of the one you are interested in. This is the same in case you want to delete it. On the other hand, if you are looking to create or update a program stage working list, besides the endpoint mentioned above, you'll need to provide a payload in the following format:
Tabulka: Datový obsah
| Hodnoty datového obsahu | Popis | Příklad |
|---|---|---|
| název | Name of the working list. Required. | |
| popis | A description of the working list. | |
| program | Objekt obsahující id programu. Požadované. | {"id" : "uy2gU8kTjF"} |
| programStage | Object containing the id of the program stage. Required. | {"id" : "oRySG82BKE6"} |
| programStageQueryCriteria | An object representing various possible filtering values. See Program Stage Query Criteria definition table below. |
| Criteria values | Popis | Příklad |
|---|---|---|
| status | The event status. Possible values are ACTIVE, COMPLETED, VISITED, SCHEDULE, OVERDUE, SKIPPED and VISITED | "status":"VISITED" |
| eventCreatedAt | DateFilterPeriod object filtering based on the event creation date. | {"type":"ABSOLUTE","startDate":"2020-03-01","endDate":"2022-12-30"} |
| scheduledAt | DateFilterPeriod object filtering based on the event scheduled date. | {"type":"RELATIVE","period":"TODAY"} |
| enrollmentStatus | Any valid ProgramStatus. Possible values are ACTIVE, COMPLETED and CANCELLED. | "enrollmentStatus": "COMPLETED" |
| followUp | Indicates whether to filter enrollments marked for follow up or not | "followUp":true |
| enrolledAt | DateFilterPeriod object filtering based on the event enrollment date. | "enrolledAt": {"type":"RELATIVE","period":"THIS_MONTH"} |
| enrollmentOccurredAt | DateFilterPeriod object filtering based on the event incident date. | {"type":"RELATIVE","period":"THIS_MONTH"} |
| orgUnit | A valid organisation unit UID | "orgUnit": "Rp268JB6Ne4" |
| ouMode | A valid OU selection mode | "ouMode": "SELECTED" |
| assignedUserMode | A valid user selection mode for events. Possible values are CURRENT, PROVIDED, NONE, ANY and ALL. If PROVIDED (or null), non-empty assignedUsers in the payload will be expected. | "assignedUserMode":"PROVIDED" |
| assignedUsers | A list of assigned users for events. To be used along with PROVIDED assignedUserMode above. | "assignedUsers":["DXyJmlo9rge"] |
| řazení | List of fields and its directions in comma separated values, the results will be sorted according to it. A single item in order is of the form "orderDimension:direction". | "order": "w75KJ2mc4zz:asc" |
| displayColumnOrder | Output ordering of columns | "displayColumnOrder":["w75KJ2mc4zz","zDhUuAYrxNC"] |
| dataFilters | A list of items that contains the filters to be used when querying events | "dataFilters":[{"dataItem": "GXNUsigphqK","ge": "10","le": "20"}] |
| attributeValueFilters | A list of attribute value filters. This is used to specify filters for attribute values when listing tracked entity instances | "attributeValueFilters":[{"attribute": "ruQQnf6rswq","eq": "15"}] |
See an example payload below:
{
"name":"Test WL",
"program":{"id":"uy2gU8kT1jF"},
"programStage":{"id":"oRySG82BKE6"},
"description": "Test WL definition",
"programStageQueryCriteria":
{
"status":"VISITED",
"eventCreatedAt":{"type":"ABSOLUTE","startDate":"2020-03-01","endDate":"2022-12-30"},
"scheduledAt": {"type":"RELATIVE","period":"TODAY"},
"enrollmentStatus": "COMPLETED",
"followUp" : true,
"enrolledAt": {"type":"RELATIVE","period":"THIS_MONTH"},
"enrollmentOccurredAt": {"type":"RELATIVE","period":"THIS_MONTH"},
"orgUnit": "Rp268JB6Ne4",
"ouMode": "SELECTED",
"assignedUserMode":"PROVIDED",
"assignedUsers":["DXyJmlo9rge"],
"order": "w75KJ2mc4zz:asc",
"displayColumnOrder":["w75KJ2mc4zz","zDhUuAYrxNC"],
"dataFilters":[{
"dataItem": "GXNUsigphqK",
"ge": "10",
"le": "20"
}],
"attributeValueFilters":[{
"attribute": "ruQQnf6rswq",
"eq": "15"
}]
}
}
Import trackeru (POST /api/tracker)¶
Koncový bod POST /api/tracker umožňuje klientům importovat následující objekty trasování do DHIS2:
- Trasované entity
- Zápisy
- Události
- Relationships
- Data vložená do jiných trasovacích objektů
Hlavní změny ve srovnání s ostatními koncovými body pro import trackeru jsou:
- Import payload can be nested or flat
- Invocation can be synchronous or asynchronous
- Import CSV events payload
Request parameters¶
V současné době koncový bod importu trackeru podporuje následující parametry:
| Název parametru | Popis | Typ | Povolené hodnoty |
|---|---|---|---|
| async | Označuje, zda má import probíhat asynchronně nebo synchronně. | Boolean | true, false |
| reportMode | Pouze při provádění synchronního importu. Další informace najdete v importSummary. | Výčet | FULL, ERRORS, WARNINGS |
| importMode | Indicates the mode of import. Can either be validate only (dry run) or commit (Default) | Výčet | VALIDATE, COMMIT |
| idScheme | Označuje celkové idScheme, které se má použít pro odkazy na metadata při importu. Výchozí je UID. Lze přepsat pro konkrétní metadata (uvedeno níže) | Výčet | UID, CODE, NAME, ATTRIBUTE |
| dataElementIdScheme | Označuje idScheme, které se má použít pro datové prvky při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| orgUnitIdScheme | Označuje idScheme, které se má použít pro organizační jednotky při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| programIdScheme | Označuje idScheme, které se má použít pro programy při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| programStageIdScheme | Označuje idScheme, které se má použít pro fáze programu při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| categoryOptionComboIdScheme | Označuje idScheme, které se má použít pro kombinace možností kategorií při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| categoryOptionIdScheme | Označuje idScheme, které se má použít pro možnosti kategorií při importu. | Výčet | UID, CODE, NAME, ATTRIBUTE |
| importStrategy | Označuje účinek, který by měl import mít. Může být CREATE, UPDATE, CREATE_AND_UPDATE a DELETE, což umožňuje pouze import nových dat, import změn existujících dat, import jakýchkoli nových nebo aktualizací existujících dat a nakonec smazání dat. | Výčet | CREATE, UPDATE, CREATE_AND_UPDATE, DELETE |
| atomicMode | Indicates how the import responds to validation errors. If ALL, all data imported must be valid for any data to be committed. For OBJECT, only the data committed needs to be valid, while other data can be invalid. | Výčet | ALL, OBJECT |
| flushMode | Udává frekvenci pročištění. To souvisí s tím, jak často jsou data vkládána do databáze během importu. Primárně se používá z důvodů ladění a nemělo by se měnit v produkčním nastavení | Výčet | AUTO, OBJECT |
| validationMode | Označuje úplnost kroku ověření. Lze jej přeskočit, nastavit na rychlé selhání (Návrat při první chybě) nebo úplné (Výchozí), které vrátí všechny nalezené chyby | Výčet | FULL, FAIL_FAST, SKIP |
| skipPatternValidation | Pokud je true, přeskočí ověřování vzoru generovaných atributů. | Boolean | true, false |
| skipSideEffects | Pokud je true, přeskočí se spuštění jakýchkoli vedlejších efektů importu | Boolean | true, false |
| skipRuleEngine | Pokud je true, přeskočí spuštění jakýchkoli programových pravidel pro import | Boolean | true, false |
NOTE: idScheme and its metadata specific idScheme parameters like orgUnitIdScheme, programIdScheme, ... used to allow and use the default AUTO. AUTO has been removed. The default idScheme has already been UID. Any requests sent with idScheme AUTO will see the same behavior as before, namely matching done using UID.
Flat and nested payloads¶
Importér podporuje jednoduchý i vnořený datový obsah. Hlavní rozdíl je v tom, jak klient požaduje, aby jeho data byla strukturována.
- Flat
- The flat-structured payload is straightforward. It can contain collections for each of the core tracker objects we have. This works seamlessly with existing data, which already have UIDs assigned. However, for new data, the client will have to provide new UIDs for any references between objects. For example, if you import a new tracked entity with a new enrollment, the tracked entity requires the client to provide a UID so that the enrollment can be linked to that UID.
- Nested
- Nested payloads are the most commonly used structure. Here, tracker objects are embedded within their parent object; For example, an enrollment within a tracked entity. The advantage of this structure is that the client does not need to provide UIDs for these connections since they will be given this connection during the import process since they are nested together.
POZNÁMKA
Zatímco vnořený datový obsah může být pro klienty jednodušší, před importem bude datový obsah vždy zploštěný. To znamená, že u velkých importů poskytne plochý strukturovaný datový obsah jak větší kontrolu, tak nižší režii pro samotný importní proces.
Příklady verzí FLAT a NESTED jsou uvedeny níže. Oba případy používají stejná data.
FLAT payload¶
{
"trackedEntities": [
{
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"trackedEntityType": "Q9GufDoplCL"
}
],
"enrollments": [
{
"orgUnit": "O6uvpzGd5pu",
"program": "f1AyMswryyQ",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"trackedEntityType": "Q9GufDoplCL",
"enrolledAt": "2019-08-19T00:00:00.000",
"deleted": false,
"occurredAt": "2019-08-19T00:00:00.000",
"status": "ACTIVE",
"notes": [],
"attributes": [],
}
],
"events": [
{
"scheduledAt": "2019-08-19T13:59:13.688",
"program": "f1AyMswryyQ",
"event": "ZwwuwNp6gVd",
"programStage": "nlXNK4b7LVr",
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"enrollmentStatus": "ACTIVE",
"status": "ACTIVE",
"occurredAt": "2019-08-01T00:00:00.000",
"attributeCategoryOptions": "xYerKDKCefk",
"deleted": false,
"attributeOptionCombo": "HllvX50cXC0",
"dataValues": [
{
"updatedAt": "2019-08-19T13:58:37.477",
"storedBy": "admin",
"dataElement": "BuZ5LGNfGEU",
"value": "20",
"providedElsewhere": false
},
{
"updatedAt": "2019-08-19T13:58:40.031",
"storedBy": "admin",
"dataElement": "ZrqtjjveTFc",
"value": "Male",
"providedElsewhere": false
},
{
"updatedAt": "2019-08-19T13:59:13.691",
"storedBy": "admin",
"dataElement": "mB2QHw1tU96",
"value": "[-11.566044,9.477801]",
"providedElsewhere": false
}
],
"notes": []
},
{
"scheduledAt": "2019-08-19T13:59:13.688",
"program": "f1AyMswryyQ",
"event": "XwwuwNp6gVE",
"programStage": "PaOOjwLVW23",
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"enrollmentStatus": "ACTIVE",
"status": "ACTIVE",
"occurredAt": "2019-08-01T00:00:00.000",
"attributeCategoryOptions": "xYerKDKCefk",
"deleted": false,
"attributeOptionCombo": "HllvX50cXC0",
"notes": []
}
],
"relationships": [
{
"relationshipType": "Udhj3bsdHeT",
"from": {
"trackedEntity": { "trackedEntity": "Kj6vYde4LHh" }
},
"to": {
"trackedEntity": { "trackedEntity": "Gjaiu3ea38E" }
}
}
]
}
NESTED payload¶
{
"trackedEntities": [
{
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"trackedEntityType": "Q9GufDoplCL",
"relationships": [
{
"relationshipType": "Udhj3bsdHeT",
"from": {
"trackedEntity": { "trackedEntity": "Kj6vYde4LHh" }
},
"to": {
"trackedEntity": { "trackedEntity": "Gjaiu3ea38E" }
}
}
],
"enrollments": [
{
"orgUnit": "O6uvpzGd5pu",
"program": "f1AyMswryyQ",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"trackedEntityType": "Q9GufDoplCL",
"enrolledAt": "2019-08-19T00:00:00.000",
"deleted": false,
"occurredAt": "2019-08-19T00:00:00.000",
"status": "ACTIVE",
"notes": [],
"relationships": [],
"attributes": [],
"events": [
{
"scheduledAt": "2019-08-19T13:59:13.688",
"program": "f1AyMswryyQ",
"event": "ZwwuwNp6gVd",
"programStage": "nlXNK4b7LVr",
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"enrollmentStatus": "ACTIVE",
"status": "ACTIVE",
"occurredAt": "2019-08-01T00:00:00.000",
"attributeCategoryOptions": "xYerKDKCefk",
"deleted": false,
"attributeOptionCombo": "HllvX50cXC0",
"dataValues": [
{
"updatedAt": "2019-08-19T13:58:37.477",
"storedBy": "admin",
"dataElement": "BuZ5LGNfGEU",
"value": "20",
"providedElsewhere": false
},
{
"updatedAt": "2019-08-19T13:58:40.031",
"storedBy": "admin",
"dataElement": "ZrqtjjveTFc",
"value": "Male",
"providedElsewhere": false
},
{
"updatedAt": "2019-08-19T13:59:13.691",
"storedBy": "admin",
"dataElement": "mB2QHw1tU96",
"value": "[-11.566044,9.477801]",
"providedElsewhere": false
}
],
"notes": [],
"relationships": []
},
{
"scheduledAt": "2019-08-19T13:59:13.688",
"program": "f1AyMswryyQ",
"event": "XwwuwNp6gVE",
"programStage": "PaOOjwLVW23",
"orgUnit": "O6uvpzGd5pu",
"trackedEntity": "Kj6vYde4LHh",
"enrollment": "MNWZ6hnuhSw",
"enrollmentStatus": "ACTIVE",
"status": "ACTIVE",
"occurredAt": "2019-08-01T00:00:00.000",
"attributeCategoryOptions": "xYerKDKCefk",
"deleted": false,
"attributeOptionCombo": "HllvX50cXC0",
"notes": [],
"relationships": []
}
]
}
]
}
]
}
SYNC and ASYNC¶
Pro uživatele je hlavním rozdílem mezi synchronním importem spíše než asynchronním okamžitá odezva z API. U synchronního importu bude odpověď vrácena, jakmile import skončí pomocí importSummary. U asynchronních importů však bude odpověď okamžitá a bude obsahovat odkaz, kde se klient může dotazovat na aktualizace importu.
U významných importů může být pro klienta výhodné použít asynchronní import, aby se vyhnul příliš dlouhému čekání na odpověď.
Příklady odezvy ASYNC jsou uvedeny níže. Odpověď SYNC najdete v sekci importSummary.
{
"httpStatus": "OK",
"httpStatusCode": 200,
"status": "OK",
"message": "Tracker job added",
"response": {
"responseType": "TrackerJob",
"id": "LkXBUdIgbe3",
"location": "https://play.dhis2.org/dev/api/tracker/jobs/LkXBUdIgbe3"
}
}
CSV Events payload¶
In order to maintain compatibility with older versions of tracker, the API allows to import events using the CSV format. As this format does not allow list as field, every row of the CSV payload represents an event and a data value. So for events with multiple data values, the CSV file will have x rows per event where x is the number of data values in that event. Other fields that are lists as relationships and notes are not supported. To import a CSV payload, the content type of the request must be set to application/csv or text/csv.
CSV PAYLOAD example¶
| událost | status | program | programStage | zápis | orgUnit | occurredAt | scheduledAt | dataElement | value | storedBy | providedElsewhere |
|---|---|---|---|---|---|---|---|---|---|---|---|
| V1CerIi3sdL | COMPLETED | IpHINAT79UW | A03MvHHogjR | CCBLMntFuzb | DiszpKrYNg8 | 2020-02-26T23:00:00Z | 2020-02-27T23:00:00Z | a3kGcGDCuk6 | 11 | admin | false |
| V1CerIi3sdL | COMPLETED | IpHINAT79UW | A03MvHHogjR | CCBLMntFuzb | DiszpKrYNg8 | 2020-02-26T23:00:00Z | 2020-02-27T23:00:00Z | mB2QHw1tU96 | [-11.566044,9.477801] | admin | false |
Souhrn importu¶
Tracker API má dva primární koncové body pro spotřebitele, aby získali zpětnou vazbu z jejich importů. Tyto koncové body jsou nejrelevantnější pro úlohy asynchronního importu, ale jsou dostupné i pro úlohy synchronizace. Tyto koncové body vrátí buď protokol související s importem, nebo samotný souhrn importu.
Poznámka
Tyto koncové body se spoléhají na informace uložené v paměti aplikace. To znamená, že informace budou v určitých případech nedostupné, protože se aplikace restartuje nebo když se po tomto spustí velký počet požadavků na import.
Po odeslání požadavku na import trackeru můžeme přistupovat k následujícím koncovým bodům, abychom mohli sledovat průběh úlohy na základě protokolů:
GET /tracker/jobs/{uid}
| Parametr | Popis | Příklad |
|---|---|---|
{uid} | UID existující úlohy importu trackeru | ABCDEF12345 |
REQUEST example¶
GET /tracker/jobs/mEfEaFSCKCC
RESPONSE example¶
[
{
"uid": "mEfEaFSCKCC",
"level": "INFO",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:06.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) finished in 6.00000 sec. Import:Done",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "DEBUG",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:05.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) commit completed in 1.00000 sec. Import:commit",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "DEBUG",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:04.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) programruleValidation completed in 1.00000 sec. Import:programruleValidation",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "DEBUG",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:03.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) programrule completed in 1.00000 sec. Import:programrule",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "DEBUG",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:02.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) validation completed in 1.00000 sec. Import:validation",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "DEBUG",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:01.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) preheat completed in 1.00000 sec. Import:preheat",
"completed": true,
"id": "mEfEaFSCKCC"
},
{
"uid": "mEfEaFSCKCC",
"level": "INFO",
"category": "TRACKER_IMPORT_JOB",
"time": "2021-01-01T00:00:00.00",
"message": "TRACKER_IMPORT_JOB ( mEfEaFSCKCC ) started by admin ( xE7jOejl9FI ) Import:Start",
"completed": true,
"id": "mEfEaFSCKCC"
}
]
Následující koncový bod navíc vrátí souhrn importu úlohy importu. Tento souhrn importu bude k dispozici až po dokončení importu:
GET /tracker/jobs/{uid}/report
| Parametr | Popis | Příklad |
|---|---|---|
path /{uid} | UID existující úlohy importu trackeru | ABCDEF12345 |
reportMode | Úroveň zprávy, která se má vrátit | FULL|ERRORS|WARNINGS |
REQUEST example¶
GET /tracker/jobs/mEfEaFSCKCC/report
RESPONSE example¶
datový obsah odezvy je stejný jako ten vrácený po požadavku na import synchronizace.
Poznámka
Oba koncové body se používají především pro asynchronní import; nicméně
GET /tracker/jobs/{uid}by také fungovalo pro požadavky na synchronizaci, protože nakonec používá stejný proces importu a protokolování jako asynchronní požadavky.
Import Summary Structure¶
Souhrny importu mají v závislosti na požadovaném reportMode následující celkovou strukturu:
{
"status": "...",
"validationReport": { },
"stats": { },
"timingsStats": { },
"bundleReport": { },
"message" : { }
}
status
Vlastnost status souhrnu importu označuje celkový stav importu. Pokud se během importu nevyskytly žádné chyby nebo varování, je status hlášen jako OK. Přítomnost jakékoli chyby nebo varování v importu bude mít za následek stav typu ERROR nebo WARNING.
status je založen na přítomnosti nejvýznamnějšího validationReport. Nejvyšší význam má ERROR, následuje WARNING a nakonec OK. To znamená, že ERROR je hlášen, pokud byla během importu nalezena jediná chyba, bez ohledu na to, kolik varování se objevilo.
Poznámka
Pokud je import prováděn pomocí AtomicMode "OBJECT", kde import importuje jakákoli data bez chyb validace, bude celkový stav stále
ERROR, pokud byly nalezeny nějaké chyby.
validationReport
Pokud se během importu vyskytly nějaké chyby nebo varování, validationReport může obsahovat errorReports a warningReports. Jsou-li k dispozici, poskytují podrobný seznam všech chyb nebo varování, se kterými se setkali.
Například chyba ověření při importu TRACKED_ENTITY:
{
"validationReport": {
"errorReports": [
{
"message": "Could not find TrackedEntityType: `Q9GufDoplCL`.",
"errorCode": "E1005",
"trackerType": "TRACKED_ENTITY",
"uid": "Kj6vYde4LHh"
},
...
],
"warningReports" : [ ... ]
}
}
The report contains a message and a code describing the actual error (See the error codes section for more information about errors). Additionally, the report includes the trackerType and uid, which aims to describe where in the data the error was found. In this case, there was a TRACKED_ENTITY with the uid Kj6vYde4LHh, which had a reference to a tracked entity type that was not found.
Note
When referring to the
uidof tracker objects, they are labeled as their object names in the payload. For example, theuidof a tracked entity would in the payload have the name "trackedEntity". The same goes for "enrollment", "event" and "relationship" for enrollments, events, and relationships, respectively.If no uid is provided in the payload, the import process will generate new uids. This means the error report might refer to a uid that does not exist in your payload.
Errors represent issues with the payload which the importer can not circumvent. Any errors will block that data from being imported. Warnings, on the other hand, are issues where it's safe to circumvent them, but the user should be made aware that it happened. Warnings will not block data from being imported.
stats
Statistiky poskytují rychlý přehled o importu. Po dokončení importu to budou skutečné počty představující, kolik dat bylo vytvořeno, aktualizováno, odstraněno nebo ignorováno.
Příklad:
{
"stats": {
"created": 2,
"updated": 2,
"deleted": 1,
"ignored": 5,
"total": 10
}
}
created označuje, kolik nových objektů bylo vytvořeno. Obecně budou objekty bez existujícího uid v užitečné zátěži považovány za nové objekty. updated označuje počet aktualizovaných objektů. Pokud má objekt v datové části nastaveno uid, bude se s ním zacházet jako s aktualizací, pokud stejné uid existuje v databázi.
deleted odkazuje na počet objektů odstraněných během importu. K odstranění dojde pouze tehdy, když je import nakonfigurován tak, aby smazal data, a pouze tehdy, když mají objekty v datové části nastavena existující uid.
ignored odkazuje na objekty, které nebyly trvalé. Objekty lze ignorovat z několika důvodů, například při snaze vytvořit něco, co již existuje. Ignorování by mělo být vždy bezpečné, takže pokud bylo něco ignorováno, nebylo to nutné, nebo to bylo způsobeno konfigurací importu.
timingsStats
timingStats představuje čas, který uplynul v různých krocích importu. Tyto statistiky neposkytují přesný celkový čas pro import, ale spíše čas strávený v kódu pro různé kroky.
timingStats jsou užitečné především při ladění importů, které způsobují problémy, abyste zjistili, která část importu má problémy.
{
"timingsStats": {
"timers": {
"preheat": "0.234086 sec.",
"preprocess": "0.000058 sec.",
...
"totalImport": "0.236810 sec.",
"validation": "0.001533 sec."
}
}
}
bundleReport
Když je import dokončen, bundleReport obsahuje všechny importované objekty sledování.
Například TRACKED_ENTITY:
{
"bundleReport": {
"typeReportMap": {
"TRACKED_ENTITY": {
"trackerType": "TRACKED_ENTITY",
"stats": {
"created": 1,
"updated": 0,
"deleted": 0,
"ignored": 0,
"total": 1
},
"objectReports": [
{
"trackerType": "TRACKED_ENTITY",
"uid": "FkxTQC4EAKK",
"index": 0,
"errorReports": []
}
]
},
...
}
}
}
objectReports. These objectReports will provide details about each imported object, like their type, their uid, and any error or warning reports is applicable. message
Pokud by import skončil náhle, message by obsahovala další informace o tom, co se stalo.
Import Summary Report Level¶
As previously stated, GET /tracker/jobs/{uid}/report can be retrieved using a specific reportMode parameter. By default the endpoint will return an importSummary with reportMode ERROR.
| Parametr | Popis |
|---|---|
FULL | Vrátí vše z WARNINGS plus timingsStats |
WARNINGS | Vrátí vše z ERRORS plus warningReports v validationReports |
ERRORS (výchozí) | Vrací pouze errorReports v validationReports |
Kromě toho všechny reportModes v případě potřeby vrátí status, stats, bundleReport a message.
Kódy chyb¶
Existují různé chybové kódy pro různé chybové scénáře. Následující tabulka obsahuje seznam chybových kódů vržených z nového Tracker API spolu s chybovými zprávami a některými dalšími popisy. Zástupné symboly v chybových zprávách ({0},{1},{2}..) jsou obvykle uid, pokud není uvedeno jinak.
| Chybový kód | Chybové hlášení | Popis |
|---|---|---|
| E1000 | Uživatel: {0}, nemá přístup k zápisu do OrganisationUnit: {1}. | Obvykle to znamená, že organizační jednotka {1} není v rozsahu zachycení uživatele {0}, aby byla operace zápisu autorizována. |
| E1001 | Uživatel: {0}, nemá přístup k zápisu dat do TrackedEntityType: {1}. | The error occurs when the user is not authorized to create or modify data of the TrackedEntityType {1} |
| E1002 | TrackedEntityInstance: {0}, již existuje. | Tato chyba je vyvolána při pokusu o vytvoření nové TrackedEntity s již existujícím uid. Ujistěte se, že se při přidávání nové TrackedEntity používá nové uid. |
| E1003 | User: {0}, has no write access to TrackedEntity: {1}. | |
| E1005 | Nelze najít TrackedEntityType: {0}. | Error thrown when trying to fetch a non existing TrackedEntityType with uid {0} . This might also mean that the user does not have read access to the TrackedEntityType. |
| E1006 | Atribut: {0}, neexistuje. | Error thrown when the system was not able to find a matching TrackedEntityAttribute with uid {0}. This might also mean that the user does not have access to the TrackedEntityAttribute. |
| E1007 | Chyba při ověřování typu hodnoty atributu: {0}; Chyba: {1}. | Mismatch between value type of a TrackedEntityAttribute and its provided attribute value. The actual validation error will be displayed in {1}. |
| E1009 | Zdroj souboru: {0}, již byl přiřazen k jinému objektu. | Uid prostředku souboru {0} je již přiřazen k jinému objektu v systému. |
| E1010 | Nelze najít program: {0}, propojený s událostí. | Systém nemohl najít program s uid {0} zadaným uvnitř datové části události. To může také znamenat, že konkrétní Program není přihlášenému uživateli přístupný. |
| E1011 | Could not find OrganisationUnit: {0}, linked to Event. | Systém nemohl najít Organizační jednotku s uid {0} zadaným uvnitř datové části události. |
| E1012 | Geometrie neodpovídá FeatureType: {0}. | Zadaný FeatureType je buď NONE, nebo je pro zadanou hodnotu geometrie nekompatibilní. |
| E1013 | Could not find ProgramStage: {0}, linked to Event. | The system was unable to find a ProgramStage with uid {0} specified inside the Event payload. This might also mean that the ProgramStage is not accessible to the logged in user. |
| E1014 | Provided Program: {0}, is a Program without registration. An Enrollment cannot be created into Program without registration. | Enrollments can only be created for Programs with registration. |
| E1015 | TrackedEntityInstance: {0}, already has an active Enrollment in Program {1}. | Cannot enroll into a Program if another active enrollment already exists for the Program. The active enrollment will have to be completed first atleast. |
| E1016 | TrackedEntityInstance: {0}, already has an active enrollment in Program: {1}, and this program only allows enrolling one time. | As per the Program {1} configuration, a TrackedEntity can only be enrolled into that Program once. It looks like the TrackedEntity {0} already has either an ACTIVE or COMPLETED enrollment in that Program. Hence another enrollment cannot be added. |
| E1018 | Attribute: {0}, is mandatory in program {1} but not declared in enrollment {2}. | Attribute value is missing in payload, for an attribute that is defined as mandatory for a Program. Make sure that attribute values for mandatory attributes are provided in the payload. |
| E1019 | Only Program attributes is allowed for enrollment; Non valid attribute: {0}. | Attribute uid {0} specified in the enrollment payload is not associated with the Program. |
| E1020 | Enrollment date: {0}, can`t be future date. | Cannot enroll into a future date unless the Program allows for it in its configuration. |
| E1021 | Incident date: {0}, can`t be future date. | Incident date cannot be a future date unless the Program allows for it in its configuration. |
| E1022 | TrackedEntityInstance: {0}, must have same TrackedEntityType as Program {1}. | The Program is configured to accept TrackedEntityType uid that is different from what is provided in the enrollment payload. |
| E1023 | DisplayIncidentDate is true but property occurredAt is null or has an invalid format: {0}. | Program is configured with DisplayIncidentDate but its either null or an invalid date in the payload. |
| E1025 | Property enrolledAt is null or has an invalid format: {0}. | EnrolledAt Date is mandatory for an Enrollment. Make sure it is not null and has a valid date format. |
| E1029 | Event OrganisationUnit: {0}, and Program: {1}, don't match. | The Event payload uses a Program {1} which is not configured to be accessible by OrganisationUnit {0}. |
| E1030 | Událost: {0}, již existuje. | Tato chyba je vyvolána při pokusu o přidání nové události s již existujícím uid. Ujistěte se, že je při přidávání nové události použito nové uid. |
| E1031 | Event occurredAt date is missing. | OccurredAt property is either null or has an invalidate date format in the payload. |
| E1032 | Událost: {0}, neexistuje. | |
| E1033 | Událost: {0}, hodnota zápisu je NULL. | |
| E1035 | Událost: {0}, hodnota ProgramStage je NULL. | |
| E1036 | Událost: {0}, TrackedEntityInstance neukazuje na existující objekt. | Systém nemohl najít TrackedEntity s uid zadaným v datové části události. To může také znamenat, že uživatel nemá přístup ke čtení k TrackedEntity. |
| E1039 | ProgramStage: {0}, nelze opakovat a událost již existuje. | Událost pro ProgramStage pro konkrétní registraci již existuje. Protože je ProgramStage nakonfigurován jako neopakovatelný, nelze přidat další událost pro stejnou ProgramStage. |
| E1041 | Zápis OrganisationUnit: {0} a Program: {1}, nesouhlasí. | The Enrollment payload contains a Program {1} which is not configured to be accessible by the OrganisationUnit {0}. |
| E1042 | Událost: {0}, musí mít datum dokončení. | Pokud je program nakonfigurován tak, aby měl completeExpiryDays, je CompletedDate povinné pro datový obsah události COMPLETED. Událost se stavem COMPLETED by měla mít vlastnost CompleteDate jinou než nulovou a platný formát data. |
| E1043 | Event: {0}, completeness date has expired. Not possible to make changes to this event. | A user without 'F_EDIT_EXPIRED' authority cannot update an Event that has passed its expiry days as configured in its Program. |
| E1046 | Event: {0}, needs to have at least one (event or schedule) date. | Either of occuredAt or scheduledAt property should be present in the Event payload. |
| E1047 | Event: {0}, date belongs to an expired period. It is not possible to create such event. | Event occuredAt or scheduledAt has a value that is earlier than the PeriodType start date. |
| E1048 | Objekt: {0}, uid: {1}, má neplatný formát uid. | A valid uid has 11 characters. The first character has to be an alphabet (a-z or A-Z) and the remaining 10 characters can be alphanumeric (a-z or A-Z or 0-9). |
| E1049 | Could not find OrganisationUnit: {0}, linked to Tracked Entity. | Systém nemohl najít Organizační jednotku s uid {0}. |
| E1050 | Event ScheduledAt date is missing. | ScheduledAt property in the Event payload is either missing or an invalid date format. |
| E1055 | Default AttributeOptionCombo is not allowed since program has non-default CategoryCombo. | The Program is configured to contain non-default CategoryCombo but the request uses the Default AttributeOptionCombo. |
| E1056 | Event date: {0}, is before start date: {1}, for AttributeOption: {2}. | The CategoryOption has a start date configured , the Event date in the payload cannot be earlier than this start date. |
| E1057 | Event date: {0}, is after end date: {1}, for AttributeOption; {2}. | The CategoryOption has an end date configured, the Event date in the payload cannot be later than this end date. |
| E1063 | TrackedEntityInstance: {0}, does not exist. | Error thrown when trying to fetch a non existing TrackedEntity with uid {0} . This might also mean that the user does not have read access to the TrackedEntity. |
| E1064 | Non-unique attribute value {0} for attribute {1} | The attribute value has to be unique within the defined scope. The error indicates that the attribute value already exists for another TrackedEntity. |
| E1068 | Could not find TrackedEntityInstance: {0}, linked to Enrollment. | The system could not find the TrackedEntity specified in the Enrollment payload. This might also mean that the user does not have read access to the TrackedEntity. |
| E1069 | Could not find Program: {0}, linked to Enrollment. | The system could not find the Program specified in the Enrollment payload. This might also mean that the user does not have read access to the Program. |
| E1070 | Could not find OrganisationUnit: {0}, linked to Enrollment. | The system could not find the OrganisationUnit specified in the Enrollment payload. |
| E1074 | FeatureType is missing. | |
| E1075 | Atribut: {0}, chybí uid. | |
| E1076 | {0} {1} is mandatory and can't be null | |
| E1077 | Attribute: {0}, text value exceed the maximum allowed length: {0}. | |
| E1080 | Enrollment: {0}, already exists. | Tato chyba je vyvolána při pokusu o vytvoření nového Zápisu s již existujícím uid. Při přidávání nového Zápisu se ujistěte, že je použito nové uid. |
| E1081 | Zápis: {0}, neexistuje. | Error thrown when trying to fetch a non existing Enrollment with uid {0} . This might also mean that the user does not have read access to the Enrollment. |
| E1082 | Event: {0}, is already deleted and can't be modified. | If the event is soft deleted, no modifications on it are allowed. |
| E1083 | User: {0}, is not authorized to modify completed events. | Only a super user or a user with the authority "F_UNCOMPLETE_EVENT" can modify completed events. Completed Events are those Events with status as COMPLETED. |
| E1084 | File resource: {0}, reference could not be found. | |
| E1085 | Attribute: {0}, value does not match value type: {1}. | Mismatch between value type of an attribute and its provided attribute value. |
| E1089 | Event: {0}, references a Program Stage {1} that does not belong to Program {2}. | The ProgramStage uid and Program uid in the Event payload is incompatible. |
| E1090 | Atribut: {0}, je povinný v typu trasované entity {1}, ale není deklarován ve trasované entitě {2}. | The payload has missing values for mandatory TrackedEntityTypeAttributes. |
| E1091 | User: {0}, has no data write access to Program: {1}. | The Program sharing configuration is such that, the user does not have write access for this Program. |
| E1095 | User: {0}, has no data write access to ProgramStage: {1}. | The ProgramStage sharing configuration is such that, the user does not have write access for this ProgramStage. |
| E1096 | User: {0}, has no data read access to Program: {1}. | The Program sharing configuration is such that, the user does not have read access for this Program. |
| E1099 | User: {0}, has no write access to CategoryOption: {1}. | The CategoryOption sharing configuration is such that, the user does not have write access for this CategoryOption |
| E1100 | User: {0}, is lacking 'F_TEI_CASCADE_DELETE' authority to delete TrackedEntityInstance: {1}. | There exists undeleted Enrollments for this TrackedEntity. If the user does not have 'F_TEI_CASCADE_DELETE' authority, then these Enrollments has to be deleted first explicitly to be able to delete the TrackedEntity. |
| E1102 | User: {0}, does not have access to the tracked entity: {1}, Program: {2}, combination. | This error is thrown when the user's OrganisationUnit does not have the ownership of this TrackedEntity for this specific Program. The owning OrganisationUnit of the TrackedEntity-Program combination should fall into the capture scope (in some cases the search scope) of the user. |
| E1103 | User: {0}, is lacking 'F_ENROLLMENT_CASCADE_DELETE' authority to delete Enrollment : {1}. | Pro tento zápis existují nesmazané události. Pokud uživatel nemá oprávnění 'F_ENROLLMENT_CASCADE_DELETE', musí být tyto události nejprve explicitně vymazány, aby bylo možné vymazat zápis. |
| E1104 | User: {0}, has no data read access to program: {1}, TrackedEntityType: {2}. | The sharing configuration of the TrackedEntityType associated with the Program is such that, the user does not have data read access to it. |
| E1112 | Attribute value: {0}, is set to confidential but system is not properly configured to encrypt data. | Either JCE files is missing or the configuration property encryption.password might be missing in dhis.conf. |
| E1113 | Enrollment: {0}, is already deleted and can't be modified. | If the Enrollment is soft deleted, no modifications on it are allowed. |
| E1114 | TrackedEntity: {0}, is already deleted and can't be modified. | If the TrackedEntity is soft deleted, no modifications on it are allowed. |
| E1115 | Could not find CategoryOptionCombo: {0}. | |
| E1116 | Could not find CategoryOption: {0}. | This might also mean the CategoryOption is not accessible to the user. |
| E1117 | CategoryOptionCombo does not exist for given category combo and category options: {0}. | |
| E1118 | Assigned user {0} is not a valid uid. | |
| E1119 | A Tracker Note with uid {0} already exists. | |
| E1120 | ProgramStage {0} does not allow user assignment | Datový obsah události má assignedUserId, ale ProgramStage není nakonfigurován tak, aby umožňoval přiřazení uživatele. |
| E1121 | Missing required tracked entity property: {0}. | |
| E1122 | Missing required enrollment property: {0}. | |
| E1123 | Missing required event property: {0}. | |
| E1124 | Missing required relationship property: {0}. | |
| E1125 | Value {0} is not a valid option for {1} {2} in option set {3} | |
| E1300 | Generated by program rule ({0}) - {1} | |
| E1301 | Generated by program rule ({0}) - Mandatory DataElement {1} is not present | |
| E1302 | DataElement {0} is not valid: {1} | |
| E1303 | Mandatory DataElement {0} is not present | |
| E1304 | DataElement {0} is not a valid data element | |
| E1305 | DataElement {0} is not part of {1} program stage | |
| E1306 | Vygenerováno programovým pravidlem ({0}) – povinný atribut {1} není přítomen | |
| E1307 | Generováno programovým pravidlem ({0}) – Nelze přiřadit hodnotu datovému prvku {1}. Zadaná hodnota musí být prázdná nebo odpovídat vypočítané hodnotě {2} | |
| E1308 | Generováno programovým pravidlem ({0}) – DataElement {1} je nahrazen v události {2} | |
| E1309 | Generováno programovým pravidlem ({0}) – Nelze přiřadit hodnotu atributu {1}. Zadaná hodnota musí být prázdná nebo odpovídat vypočítané hodnotě {2} | |
| E1310 | Generated by program rule ({0}) - Attribute {1} is being replaced in te {2} | |
| E1313 | Event {0} of an enrollment does not point to an existing tracked entity. The data in your system might be corrupted | Indicates an anomaly in the existing data whereby enrollments might not reference a tracked entity |
| E1314 | Generated by program rule ({0}) - DataElement {1} is mandatory and cannot be deleted. | |
| E1315 | Status {0} does not allow defining data values. Statuses that do allow defining data values are: {1} | |
| E1316 | No event can transition from status {0} to status {1}. | |
| E1317 | Generated by program rule ({0}) - Attribute {1} is mandatory and cannot be deleted. | |
| E4000 | Vztah: {0} nemůže odkazovat sám na sebe | |
| E4001 | Položka vztahu {0} pro vztah {1} je neplatná: Položka může propojit pouze jednu entitu sledování. | |
| E4006 | Nelze najít vztah Typ: {0}. | |
| E4009 | Typ vztahu {0} není platný. | |
| E4010 | Omezení typu vztahu {0} vyžaduje {1}, ale bylo nalezeno {2}. | |
| E4012 | Nelze najít {0}: {1}, propojený s Relationship. | |
| E4014 | Relationship type {0} constraint requires a tracked entity having type {1} but {2} was found. | |
| E4015 | Relationship: {0}, already exists. | |
| E4016 | Relationship: {0}, do not exist. | |
| E4017 | Relationship: {0}, is already deleted and cannot be modified. | |
| E4018 | Relationship: {0}, linking {1}: {2} to {3}: {4} already exists. | |
| E4020 | User: {0}, has no write access to relationship: {1}. | |
| E5000 | "{0}" {1} cannot be persisted because "{2}" {3} referenced by it cannot be persisted. | The importer can't persist a tracker object because a reference cannot be persisted. |
| E9999 | Nedostupné | Nedefinovaná chybová zpráva. |
Ověření¶
Při importu dat pomocí importéru trackeru se provádí řada ověření, aby byla zajištěna platnost dat. Tato část popisuje některé z různých typů ověřování prováděného za účelem lepšího pochopení, pokud ověření vašeho importu selže.
Required properties¶
Každý z objektů trackeru má několik požadovaných vlastností, které musí být přítomny při importu dat. Úplný seznam požadovaných vlastností naleznete v sekci objektů sledování.
Při validaci požadovaných vlastností se obvykle bavíme o odkazech na jiná data nebo metadata. V těchto případech existují tři hlavní kritéria:
- Reference je přítomna a není nulová v užitečném zatížení.
- Odkaz ukazuje na správný typ dat a existuje v databázi
- Uživatel má přístup k zobrazení reference
Pokud selže první podmínka, import selže se zprávou o chybějící referenci. Předpokládejme však, že odkaz odkazuje na něco, co neexistuje nebo ke kterému uživatel nemá přístup. V takovém případě budou mít oba případy za následek zprávu o tom, že reference nebyla nalezena.
Formats¶
Některé vlastnosti objektů sledování vyžadují specifický formát. Při importu dat je každá z těchto vlastností ověřena podle očekávaného formátu a vrátí různé chyby v závislosti na tom, která vlastnost má nesprávný formát. Některé příklady vlastností, které jsou takto ověřeny:
- UID (Pokrývají všechny odkazy na jiná data nebo metadata v DHIS2.)
- Termíny
- Geometrie (souřadnice musí odpovídat formátu určenému jeho typem)
User access¶
All data imported will be validated based on the metadata (Sharing) and the organisation units (Organisation Unit Scopes) referenced in the data. You can find more information about sharing and organisation unit scopes in the following sections.
Sdílení se ověřuje současně s vyhledáváním referencí v databázi. Metadata mimo přístup uživatele budou považována za neexistující. Import ověří všechna metadata odkazovaná v datech.
Organizační jednotky na druhé straně slouží dvojímu účelu. Primárně zajistí, že data lze importovat pouze při importu pro organizační jednotku, kterou má uživatel ve svém „rozsahu zachycení“. Za druhé, organizační jednotky se také používají k omezení dostupných programů. To znamená, že pokud se pokoušíte importovat data pro organizační jednotku, která nemá přístup k programu, který importujete, import bude neplatný.
Uživatelé s oprávněním ALL budou při importu dat ignorovat limity sdílení a rozsahů organizačních jednotek. Nemohou však importovat zápisy v organizačních jednotkách, které nemají přístup k programu zápisu.
Attribute and Data values¶
Atributy a datové hodnoty jsou součástí trasované entity a události. Atributy však mohou být propojeny s trasovanou entitou buď prostřednictvím jejího typu (TrackedEntityType) nebo jejího programu (Program). Kromě toho mohou být atributy také jedinečné.
Počáteční ověření provedené při importu má zajistit, aby hodnota zadaná pro atribut nebo datový prvek odpovídala očekávanému typu hodnoty. Předpokládejme například, že importujete hodnotu pro datový prvek s číselným typem. V takovém případě se očekává, že hodnota bude číselná. Jakékoli chyby související s neshodou mezi typem a hodnotou budou mít za následek stejný chybový kód, ale se specifickou zprávou související s typem porušení.
Kontrolují se také povinné atributy a hodnoty dat. V současné době není odstranění povinných atributů povoleno. Některé případy použití vyžadují, aby byly hodnoty odeslány samostatně, zatímco jiné vyžadují, aby byly všechny hodnoty odeslány jako jedna. Programy lze nakonfigurovat tak, aby buď ověřovaly povinné atributy ON_COMPLETE nebo ON_UPDATE_AND_INSERT, aby vyhovovaly těmto případům použití.
Import ověří jedinečné atributy v době importu. To znamená, že pokud je zadaná hodnota pro atribut v celém systému jedinečná, projde. Pokud však bude nalezena jedinečná hodnota, kterou používá jiná trasovaná entita než ta, která se importuje, selže.
Konfigurace¶
Poslední částí validací v importéru jsou validace na základě uživatelské konfigurace příslušných metadat. Další informace o každé konfiguraci naleznete v příslušných částech. Některé příklady konfigurovatelných ověření: - Typ prvku (pro geometrii) - Uživatelsky přiřaditelné události - Povolit budoucí data - Zapsat se jednou - A více.
Tyto konfigurace dále změní způsob provádění ověřování během importu.
Pravidla programu¶
Uživatelé mohou nakonfigurovat Pravidla programu, která přidává podmíněné chování do formulářů sledování. Kromě spouštění těchto pravidel v aplikacích sledování spustí importér sledování také výběr těchto pravidel. Vzhledem k tomu, že importer také používá tato pravidla, můžeme zajistit další úroveň ověření.
Ne všechny akce programových pravidel jsou podporovány, protože jsou vhodné pouze pro frontendovou prezentaci. Úplný seznam podporovaných akcí pravidel programu je uveden níže.
| Akce programového pravidla | Podporováno |
|---|---|
| DISPLAYTEXT | |
| DISPLAYKEYVALUEPAIR | |
| HIDEFIELD | |
| HIDESECTION | |
| ASSIGN | X |
| SHOWWARNING | X |
| SHOWERROR | X |
| WARNINGONCOMPLETION | X |
| ERRORONCOMPLETION | X |
| CREATEEVENT | |
| SETMANDATORYFIELD | X |
| SENDMESSAGE | X |
| SCHEDULEMESSAGE | X |
Programová pravidla se v importéru vyhodnocují stejným způsobem, jako se vyhodnocují v aplikacích Tracker. Abychom to shrnuli, při prosazování pravidel programu se berou v úvahu následující podmínky:
- Programové pravidlo musí být propojeno s importovanými daty. Například fáze programu nebo datový prvek.
- Podmínka programového pravidla musí být vyhodnocena jako true
Výsledky pravidel programu závisí na akcích definovaných v těchto pravidlech:
- Akce programových pravidel mohou skončit se 2 různými výsledky: Varování nebo Chyby.
- Chyby způsobí selhání ověření, zatímco varování budou hlášena jako zpráva v souhrnu importu.
- Akce SHOWWARNING a WARNINGONCOMPLETION mohou generovat pouze varování.
- SHOWERROR, ERRORONCOMPLETION, and SETMANDATORYFIELD actions can generate only Errors.
- ASSIGN action can generate both Warnings and Errors.
- Když akce přiřazuje hodnotu prázdnému prvku atributu/dat, vygeneruje se varování.
- Když akce přiřazuje hodnotu atributu/datovému prvku, který již má stejnou hodnotu, která má být přiřazena, vygeneruje se varování.
- When the action is assigning a value to an attribute/data element that already has a value and the value to be assigned is different, an error is generated unless the
RULE_ENGINE_ASSIGN_OVERWRITEsystem setting is set to true.
Kromě toho mohou pravidla programu vést k vedlejším účinkům, jako je odesílání a plánování zpráv. Více informací o vedlejších účincích naleznete v následující části.
POZNÁMKA
Programová pravidla lze během importu přeskočit pomocí parametru
skipProgramRules.
Vedlejší účinky¶
Po dokončení importu mohou být v důsledku importu spuštěny určité úlohy. Tyto úlohy označujeme jako „Vedlejší efekty“. Tyto úlohy provádějí operace, které neovlivňují samotný import.
Vedlejší efekty jsou úlohy, které běží odděleně od importu, ale jsou vždy spuštěny importem. Vzhledem k tomu, že vedlejší efekty jsou od importu odděleny, mohou selhat, i když je import úspěšný. Vedlejší efekty se navíc spouštějí pouze tehdy, když je import úspěšný, takže nemohou selhat naopak.
V současné době jsou podporovány následující vedlejší účinky:
| Vedlejší efekty | Podporováno | Popis |
|---|---|---|
| Oznámení trackeru | X | Updates can trigger notifications. Updates which trigger notifications are enrollment, event update, event or enrollment completion. |
| Oznámení ProgramRule | X | Pravidla programu mohou spouštět upozornění. Všimněte si, že tato upozornění jsou součástí efektů programových pravidel, které jsou generovány prostřednictvím modulu pravidel DHIS2. |
NOTE
Certain configurations can control the execution of side effects.
skipSideEffectsflag can be set during the import to skip side effects entirely. This parameter can be useful if you import something you don't want to trigger notifications for, as an example.
Přiřadit uživatele k událostem¶
Konkrétní pracovní postupy těží z toho, že se s událostmi zachází jako s úkoly, a z tohoto důvodu můžete k události přiřadit uživatele.
Assigning a user to an event will not change the access or permissions for users but will create a link between the Event and the user. When an event has a user assigned, you can query events from the API using the assignedUser field as a parameter.
Když chcete přiřadit uživatele k události, jednoduše zadáte UID uživatele, kterého chcete přiřadit, do pole assignedUser. Viz následující příklad:
{
...
"events": [
{
"event": "ZwwuwNp6gVd",
"programStage": "nlXNK4b7LVr",
"orgUnit": "O6uvpzGd5pu",
"enrollment": "MNWZ6hnuhSw",
"assignedUser" : "M0fCOxtkURr"
}
],
...
}
In this example, the user with uid M0fCOxtkURr will be assigned to the Event with uid ZwwuwNp6gVd. Only one user can be assigned to a single event.
Chcete-li použít tuto funkci, musí mít příslušná fáze programu povoleno přiřazení uživatele a uid poskytnuté uživateli musí odkazovat na platného existujícího uživatele.
Tracker Export¶
Tracker export endpoints allow you to retrieve the previously imported objects which are:
- tracked entities
- events
- enrollments
- relationships
NOTE
- All these endpoints currently support
JSON.CSVis only supported by tracked entities and events.
Common request parameters¶
The following endpoint supports standard parameters for pagination.
- Tracked Entities
GET /api/tracker/trackedEntities - Události
GET /api/tracker/events - Enrollments
GET /api/tracker/enrollments - Relationships
GET /api/tracker/relationships
Request parameters for pagination¶
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
page | Integer | Any positive integer | Page number to return. Defaults to 1 if missing |
pageSize | Integer | Any positive integer | Page size. Defaults to 50. |
totalPages | Boolean | true|false | Indicates whether to return the total number of pages in the response |
skipPaging | Boolean | true|false | Indicates whether paging should be ignored and all rows should be returned. Defaults to false, meaning that by default all requests are paginated, unless skipPaging=true |
Caution
Be aware that the performance is directly related to the amount of data requested. Larger pages will take more time to return.
Request parameters for Organisational Unit selection mode¶
The available organisation unit selection modes are explained in the following table.
| Režim | Popis |
|---|---|
SELECTED | Organizační jednotky definované v požadavku. |
CHILDREN | Vybrané organizační jednotky a bezprostřední děti, tj. organizační jednotky na níže uvedené úrovni. |
DESCENDANTS | Vybrané organizační jednotky a všechny podřízené jednotky, tj. všechny organizační jednotky v podhierarchii. |
ACCESSIBLE | The data view organisation units associated with the current user and all children, i.e., all organisation units in the sub-hierarchy. Will fall back to data capture organisation units associated with the current user if the former is not defined. |
CAPTURE | The data capture organisation units associated with the current user and all children, i.e., all organisation units in the sub-hierarchy. |
ALL | Všechny organizační jednotky v systému. Vyžaduje VŠECHNY oprávnění. |
Request parameter to filter responses¶
All export endpoints accept a fields parameter which controls which fields will be returned in the JSON response. fields parameter accepts a comma separated list of field names or patterns. A few possible fields filters are shown below. Refer to Metadata field filter for a more complete guide on how to use fields.
Příklady¶
| Příklad parametru | Význam |
|---|---|
fields=* | returns all fields |
fields=createdAt,uid | only returns fields createdAt and uid |
fields=enrollments[*,!uid] | returns all fields of enrollments except uid |
fields=enrollments[uid] | only returns enrollments field uid |
fields=enrollments[uid,enrolledAt] | only returns enrollments fields uid and enrolledAt |
Tracked Entities (GET /api/tracker/trackedEntities)¶
Dva koncové body jsou vyhrazeny trasovaným entitám:
GET /api/tracker/trackedEntities- načte trasované entity odpovídající daným kritériím
GET /api/tracker/trackedEntities/{id}- načte trasovanou entitu podle poskytnutého ID
Tracked Entities Collection endpoint GET /api/tracker/trackedEntities¶
Účelem tohoto koncového bodu je načíst trasované entity odpovídající kritériím zadaným klientem.
Koncový bod vrátí seznam trasovaných entit, které odpovídají parametrům požadavku.
Požádat o syntaxi¶
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
query | String | {operator}:{filter-value} | Vytvoří filtr přes atributy sledovaných entit. Povinná je pouze hodnota filtru. Operátor EQ se používá, pokud není specifikován operator. |
attribute | String | Comma separated values of attribute UIDs | Pro každou trasovanou entitu v odpovědi vrací pouze zadané atributy |
filter | String | Hodnoty filtrů atributů oddělené čárkami | Narrows response to TEIs matching given filters. A filter is a colon separated property or attribute UID with optional operator and value pairs. Example: filter=H9IlTX2X6SL:sw:A with operator starts with sw followed by a value. Special characters like + need to be percent-encoded so %2B instead of +. Characters such as : (colon) or , (comma), as part of the filter value, need to be escaped by / (slash). Likewise, / needs to be escaped. Multiple operator/value pairs for the same property/attribute like filter=AuPLng5hLbE:gt:438901703:lt:448901704 are allowed. Repeating the same attribute UID is not allowed. User needs access to the attribute to filter on it. |
orgUnit | String | středníkem oddělený seznam organizační jednotky UID | Vrací pouze instance trasovaných entit, které patří k poskytnutým organizačním jednotkám |
ouMode see ouModes | String | SELECTED|CHILDREN|DESCENDANTS|ACCESSIBLE|CAPTURE|ALL | Způsob výběru organizačních jednotek může být. Výchozí hodnota je SELECTED, což se týká pouze vybraných organizačních jednotek. |
program | String | Program UID | program UID, do kterého musí být instance v odpovědi zapsány |
programStatus | String | ACTIVE|COMPLETED|CANCELLED | Stav programu instance trasované entity v daném programu |
programStage | String | UID | UID programové fáze, pro kterou musí instance v odpovědi obsahovat události |
followUp | Boolean | true|false | Označuje, zda je instance trasované entity označena pro následnou kontrolu pro daný program |
updatedAfter | DateTime | ISO-8601 | Datum zahájení poslední aktualizace |
updatedBefore | DateTime | ISO-8601 | Datum ukončení poslední aktualizace |
updatedWithin | Duration | ISO-8601 | Vrátí TEI ne starší než zadaná doba trvání |
enrollmentEnrolledAfter | DateTime | ISO-8601 | Datum zahájení zápisu do daného programu |
enrollmentEnrolledBefore | DateTime | ISO-8601 | Datum ukončení pro zápis do daného programu |
enrollmentOccurredAfter | DateTime | ISO-8601 | Datum zahájení incidentu v daném programu |
enrollmentOccurredBefore | DateTime | ISO-8601 | Datum ukončení incidentu v daném programu |
trackedEntityType | String | UID typu trasované entity | Only returns Tracked Entity Instances of given type |
trackedEntity | String | semicolon-delimited list of tracked entity instance UID | Filter the result down to a limited set of tracked entities using explicit uids of the tracked entity instances by using trackedEntity=id1;id2. This parameter will, at the very least, create the outer boundary of the results, forming the list of all tracked entities using the uids provided. If other parameters/filters from this table are used, they will further limit the results from the explicit outer boundary. |
assignedUserMode | String | CURRENT|PROVIDED|NONE|ANY | Restricts result to tracked entities with events assigned based on the assigned user selection mode. See table below "Assigned user modes" for explanations. |
assignedUser | String | Semicolon-delimited list of user UIDs to filter based on events assigned to the users. | Filter the result down to a limited set of tracked entities with events that are assigned to the given user IDs by using assignedUser=id1;id2.This parameter will only be considered if assignedUserMode is either PROVIDED or null. The API will error out, if for example, assignedUserMode=CURRENT and assignedUser=someId |
eventStatus | String | ACTIVE|COMPLETED|VISITED|SCHEDULE|OVERDUE|SKIPPED | Status of any events in the specified program |
eventOccurredAfter | DateTime | ISO-8601 | Start date for Event for the given Program |
eventOccurredBefore | DateTime | ISO-8601 | End date for Event for the given Program |
skipMeta | Boolean | true|false | Indicates whether not to include metadata in the response. |
includeDeleted | Boolean | true|false | Indicates whether to include soft-deleted elements |
includeAllAttributes | Boolean | true|false | Indicates whether to include all TEI attributes |
attachment | String | Název souboru v případě exportu jako souboru | |
potentialDuplicate | Boolean | true|false | Filter the result based on the fact that a TEI is a Potential Duplicate. true: return TEIs flagged as Potential Duplicates. false: return TEIs NOT flagged as Potential Duplicates. If omitted, we don't check whether a TEI is a Potential Duplicate or not. |
order | String | comma-delimited list of property name or attribute UID and sort direction pairs in format propName:sortDirection. | Supported fields: createdAtClient, createdAt, enrolledAt, inactive, trackedEntity, updatedAtClient, updatedAt. |
The available assigned user modes are explained in the following table.
Tabulka: Přiřazené uživatelské režimy
| Režim | Popis |
|---|---|
| CURRENT | Zahrnuje události přiřazené aktuálně přihlášenému uživateli. |
| PROVIDED | Includes events assigned to the user provided in the request. |
| NONE | Includes unassigned events only. |
| ANY | Includes all assigned events, doesn't matter who are they assigned to as long as they assigned to someone. |
V dotazu se nerozlišují velká a malá písmena. Pro parametry dotazu platí následující pravidla.
-
At least one organisation unit must be specified using the
orgUnitparameter (one or many), orouMode=ALLmust be specified. -
Only one of the
programandtrackedEntityparameters can be specifikováno (nula nebo jedna). -
If
programStatusis specified, thenprogrammust also be specifikováno. -
If
followUpis specified, thenprogrammust also be specified. -
If
enrollmentEnrolledAfterorenrollmentEnrolledBeforeis specified thenprogrammust also be specified. -
Položky filtru lze zadat pouze jednou.
Example requests¶
A query for all instances associated with a specific organisation unit can look like this:
GET /api/tracker/trackedEntities?orgUnit=DiszpKrYNg8
To query for instances using one attribute with a filter and one attribute without a filter, with one organisation unit using the descendant organisation unit query mode:
GET /api/tracker/trackedEntities?filter=zHXD5Ve1Efw:EQ:A
&attribure=AMpUYgxuCaE&orgUnit=DiszpKrYNg8;yMCshbaVExv
A query for instances where attributes are included in the response and one attribute is used as a filter:
GET /api/tracker/trackedEntities?filter=zHXD5Ve1Efw:EQ:A
&filter=AMpUYgxuCaE:LIKE:Road
&orgUnit=DiszpKrYNg8
A query where multiple operand and filters are specified for a filter item:
GET /api/tracker/trackedEntities?orgUnit=DiszpKrYNg8
&program=ur1Edk5Oe2n
&filter=lw1SqmMlnfh:GT:150
&filter=lw1SqmMlnfh:LT:190
A query filter with a value that needs escaping and will be interpreted as :,/:
GET /api/tracker/trackedEntities?orgUnit=DiszpKrYNg8
&program=ur1Edk5Oe2n
&filter=lw1SqmMlnfh:EQ:/:/,//
To query on an attribute using multiple values in an IN filter:
GET /api/tracker/trackedEntities?orgUnit=DiszpKrYNg8
&filter=dv3nChNSIxy:IN:Scott;Jimmy;Santiago
To constrain the response to instances which are part of a specific program you can include a program query parameter:
GET /api/tracker/trackedEntities?filter=zHXD5Ve1Efw:EQ:A
&orgUnit=O6uvpzGd5pu&ouMode=DESCENDANTS
&program=ur1Edk5Oe2n
Chcete-li zadat data zápisu programu jako součást dotazu:
GET /api/tracker/trackedEntities?
&orgUnit=O6uvpzGd5pu&program=ur1Edk5Oe2n
&enrollmentEnrolledAfter=2013-01-01
&enrollmentEnrolledBefore=2013-09-01
To constrain the response to instances of a specific tracked entity you can include a tracked entity query parameter:
GET /api/tracker/trackedEntities?filter=zHXD5Ve1Efw:EQ:A
&orgUnit=O6uvpzGd5pu
&ouMode=DESCENDANTS
&trackedEntity=cyl5vuJ5ETQ
By default the instances are returned in pages of size 50, to change this you can use the page and pageSize query parameters:
GET /api/tracker/trackedEntities?filter=zHXD5Ve1Efw:EQ:A
&orgUnit=O6uvpzGd5pu
&ouMode=DESCENDANTS
&page=2&pageSize=3
K filtrování můžete použít řadu operátorů:
| Operátor | Popis |
|---|---|
EQ | Rovno |
GT | Větší než |
GE | Větší než nebo rovno |
LT | Menší než |
LE | Menší nebo rovno |
NE | Nerovná se |
LIKE | Jako (shoda volného textu) |
IN | Rovná se jedné z více hodnot oddělených ";" |
Formát odpovědi¶
Odpověď JSON může vypadat následovně.
Responses can be filtered on desired fields, see Request parameter to filter responses
{
"instances": [
{
"trackedEntity": "IzHblRD2sDH",
"trackedEntityType": "nEenWmSyUEp",
"createdAt": "2014-03-26T15:40:36.669",
"createdAtClient": "2014-03-26T15:40:36.669",
"updatedAt": "2014-03-28T12:28:17.544",
"orgUnit": "g8upMTyEZGZ",
"inactive": false,
"deleted": false,
"relationships": [],
"attributes": [
{
"attribute": "VqEFza8wbwA",
"code": "MMD_PER_ADR1",
"displayName": "Address",
"createdAt": "2016-01-12T00:00:00.000",
"updatedAt": "2016-01-12T00:00:00.000",
"valueType": "TEXT",
"value": "1061 Marconi St"
},
{
"attribute": "RG7uGl4w5Jq",
"code": "Longitude",
"displayName": "Longitude",
"createdAt": "2016-01-12T00:00:00.000",
"updatedAt": "2016-01-12T00:00:00.000",
"valueType": "TEXT",
"value": "27.866613"
},
...,
...,
],
"enrollments": [],
"programOwners": []
}
],
"page": 1,
"total": 39,
"pageSize": 1
}
Tracked Entities single object endpoint GET /api/tracker/trackedEntities/{uid}¶
Účelem tohoto koncového bodu je načíst jednu trasovanou entitu s jejím uid.
Požádat o syntaxi¶
GET /api/tracker/trackedEntities/{uid}?program={programUid}&fields={fields}
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
uid | String | uid | Vrátí instanci trasované entity se zadaným uid |
program | String | uid | Zahrnout atributy programu do odpovědi (pouze ty, ke kterým má uživatel přístup) |
fields | String | Libovolný platný filtr polí (výchozí *,!relationships,!enrollments,!events,!programOwners) | Zahrnout do odpovědi zadané dílčí objekty |
Example requests¶
Dotaz na instanci trasované entity:
GET /api/tracker/trackedEntities/IzHblRD2sDH?program=ur1Edk5Oe2n&fields=*
Formát odpovědi¶
Tento koncový bod podporuje vracení dílčích objektů, když je předán parametr požadavku fields, když je požadován formát json. V případě csv nemá parametr požadavku fields žádný účinek a odpověď bude vždy obsahovat stejná pole, která jsou: - trackedEntity (Identifier) - trackedEntityType (Identifier) - createdAt (Datetime) - createdAtClient (Datetime) - updatedAt (Datetime) - updatedAtClient (Datetime) - orgUnit (Identifier) - inactive (boolean) - deleted (boolean) - potentialDuplicate (boolean) - geometry (WKT, https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) - storedBy (String) - createdBy (Username of user) - updatedBy (Username of user) - attributes (each valid attribute listed as another column)
Příklad odpovědi json:
{
"trackedEntity": "IzHblRD2sDH",
"trackedEntityType": "nEenWmSyUEp",
"createdAt": "2014-03-26T15:40:36.669",
"updatedAt": "2014-03-28T12:28:17.544",
"orgUnit": "g8upMTyEZGZ",
"inactive": false,
"deleted": false,
"relationships": [],
"attributes": [
{
"attribute": "w75KJ2mc4zz",
"code": "MMD_PER_NAM",
"displayName": "First name",
"createdAt": "2016-01-12T09:10:26.986",
"updatedAt": "2016-01-12T09:10:35.884",
"valueType": "TEXT",
"value": "Wegahta"
},
{
"attribute": "zDhUuAYrxNC",
"displayName": "Last name",
"createdAt": "2016-01-12T09:10:26.986",
"updatedAt": "2016-01-12T09:10:35.884",
"valueType": "TEXT",
"value": "Goytiom"
}
],
"enrollments": [
{
"enrollment": "uT5ZysTES7j",
"createdAt": "2017-03-28T12:28:17.539",
"createdAtClient": "2016-03-28T12:28:17.539",
"updatedAt": "2017-03-28T12:28:17.544",
"trackedEntity": "IzHblRD2sDH",
"trackedEntityType": "nEenWmSyUEp",
"program": "ur1Edk5Oe2n",
"status": "ACTIVE",
"orgUnit": "g8upMTyEZGZ",
"orgUnitName": "Njandama MCHP",
"enrolledAt": "2020-11-10T12:28:17.532",
"occurredAt": "2020-10-12T12:28:17.532",
"followUp": false,
"deleted": false,
"events": [
{
"event": "ixDYEGrNQeH",
"status": "ACTIVE",
"program": "ur1Edk5Oe2n",
"programStage": "ZkbAXlQUYJG",
"enrollment": "uT5ZysTES7j",
"enrollmentStatus": "ACTIVE",
"trackedEntity": "IzHblRD2sDH",
"relationships": [],
"scheduledAt": "2019-10-12T12:28:17.532",
"followup": false,
"deleted": false,
"createdAt": "2017-03-28T12:28:17.542",
"createdAtClient": "2016-03-28T12:28:17.542",
"updatedAt": "2017-03-28T12:28:17.542",
"attributeOptionCombo": "HllvX50cXC0",
"attributeCategoryOptions": "xYerKDKCefk",
"dataValues": [],
"notes": []
}
],
"relationships": [],
"attributes": [],
"notes": []
}
],
"programOwners": [
{
"orgUnit": "g8upMTyEZGZ",
"trackedEntity": "IzHblRD2sDH",
"program": "ur1Edk5Oe2n"
}
]
}
Events (GET /api/tracker/events)¶
Two endpoints are dedicated to events:
GET /api/tracker/events- načte události odpovídající zadaným kritériím
GET /api/tracker/events/{id}- načte událost se zadaným ID
Events Collection endpoint GET /api/tracker/events¶
Vrátí seznam událostí na základě poskytnutých filtrů.
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
program | String | uid | Identifikátor programu |
programStage | String | uid | Identifikátor fáze programu |
programStatus | enum | ACTIVE|COMPLETED|CANCELLED | Stav události v programu |
filter | String | Čárkami oddělené hodnoty filtrů datových prvků | Narrows response to events matching given filters. A filter is a colon separated property or data element UID with operator and value pairs. Example: filter=fazCI2ygYkq:eq:PASSIVE with operator starts with eq followed by a value. Characters such as : (colon) or , (comma), as part of the filter value, need to be escaped by / (slash). Likewise, / needs to be escaped. Multiple operator/value pairs for the same property/data element like filter=qrur9Dvnyt5:gt:70:lt:80 are allowed. Repeating the same data element UID is not allowed. User needs access to the data element to filter on it. |
filterAttributes | String | Hodnoty filtrů atributů oddělené čárkami | Narrows response to TEIs matching given filters. A filter is a colon separated property or attribute UID with optional operator and value pairs. Example: filterAttributes=H9IlTX2X6SL:sw:A with operator starts with sw followed by a value. A filter like filterAttributes=H9IlTX2X6SL returns all events where the given attribute has a value. Special characters like + need to be percent-encoded so %2B instead of +. Characters such as : (colon) or , (comma), as part of the filter value, need to be escaped by / (slash). Likewise, / needs to be escaped. Multiple operator/value pairs for the same property/attribute like filterAttributes=AuPLng5hLbE:gt:438901703:lt:448901704 are allowed. Repeating the same attribute UID is not allowed. User needs access to the attribute to filter on it. |
followUp | boolean | true|false | Zda je událost zvažována pro pokračování v programu. Výchozí hodnota je true |
trackedEntityInstance | String | uid | Identifikátor instance trasované entity |
orgUnit | String | uid | Identifikátor organizační jednotky |
ouMode see ouModes | String | SELECTED|CHILDREN|DESCENDANTS | Režim výběru organizační jednotky |
status | String | ACTIVE|COMPLETED|VISITED|SCHEDULE|OVERDUE|SKIPPED | Stav události |
occurredAfter | DateTime | ISO-8601 | Filtrujte události, které nastaly po tomto datu. |
occurredBefore | DateTime | ISO-8601 | Filtrujte události, které nastaly do tohoto data. |
scheduledAfter | DateTime | ISO-8601 | Filtr pro události, které byly naplánovány po tomto datu. |
scheduledBefore | DateTime | ISO-8601 | Filtrujte události, které byly naplánovány před tímto datem. |
updatedAfter | DateTime | ISO-8601 | Filtr pro události, které byly aktualizovány po tomto datu. Nelze použít společně s updatedWithin. |
updatedBefore | DateTime | ISO-8601 | Filtrujte události, které byly do tohoto data aktualizovány. Nelze použít společně s updatedWithin. |
updatedWithin | Duration | ISO-8601 | Include only items which are updated within the given duration. The format is ISO-8601#Duration |
enrollmentEnrolledAfter | DateTime | ISO-8601 | Datum zahájení zápisu do daného programu |
enrollmentEnrolledBefore | DateTime | ISO-8601 | Datum ukončení pro zápis do daného programu |
enrollmentOccurredAfter | DateTime | ISO-8601 | Datum zahájení incidentu v daném programu |
enrollmentOccurredBefore | DateTime | ISO-8601 | Datum ukončení incidentu v daném programu |
skipMeta | Boolean | true|false | Vyloučí metadatovou část odpovědi (zlepšuje výkon) |
order | String | Supported fields are: assignedUser, assignedUserDisplayName, attributeOptionCombo, completedAt, completedBy, createdAt, createdBy, deleted, enrolledAt, enrollment, enrollmentStatus, event, followup, occurredAt, orgUnit, orgUnitName, program, programStage, scheduleAt, status, storedBy, trackedEntity, updatedAt, updatedBy. | Comma-delimited list of property name, attribute or data element UID and sort direction pairs in format propName:sortDirection.Note: propName is case sensitive, sortDirection is case insensitive. |
event | String | čárkami oddělený seznam uid | Filter the result down to a limited set of IDs by using event=id1;id2. |
skipEventId | Boolean | Přeskočí identifikátory událostí v odpovědi | |
attributeCc (viz poznámka) | String | Attribute category combo identifier (must be combined with attributeCos) | |
attributeCos (viz poznámka) | String | Identifikátory možností kategorie atributů oddělené ; (nutno kombinovat s atributeCc) | |
includeDeleted | Boolean | Když je true, budou do výsledku dotazu zahrnuty měkké odstraněné události. | |
assignedUserMode | String | CURRENT|PROVIDED|NONE|ANY | Režim výběru přiřazeného uživatele |
assignedUser | String | čárkami oddělený seznam od uid | Filter the result down to a limited set of events that are assigned to the given user IDs by using assignedUser=id1;id2.This parameter will be considered only if assignedUserMode is either PROVIDED or null.The API will error out, if for example, assignedUserMode=CURRENT and assignedUser=someId |
Note
If the query contains neither
attributeCCnorattributeCos, the server returns events for all attribute option combos where the user has read access.
Example requests¶
Dotaz na všechny události s potomky konkrétní organizační jednotky:
GET /api/tracker/events?orgUnit=YuQRtpLP10I&ouMode=CHILDREN
The query for all events with all descendants of a particular organisation unit, implying all organisation units in the sub-hierarchy:
GET /api/tracker/events?orgUnit=O6uvpzGd5pu&ouMode=DESCENDANTS
Dotaz na všechny události s určitou programovou a organizační jednotkou:
GET /api/tracker/events?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
Query for all events with a certain program and organisation unit, sorting by due date ascending:
GET /api/tracker/events?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc&order=dueDate
Query for the 10 events with the newest event date in a certain program and organisation unit - by paging and ordering by due date descending:
GET /api/tracker/events?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
&order=eventDate:desc&pageSize=10&page=1
Query for all events with a certain program and organisation unit for a specific tracked entity instance:
GET /api/tracker/events?orgUnit=DiszpKrYNg8
&program=eBAyeGv0exc&trackedEntityInstance=gfVxE3ALA9m
Query for all events with a certain program and organisation unit older or equal to 2014-02-03:
GET /api/tracker/events?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc&endDate=2014-02-03
Query for all events with a certain program stage, organisation unit and tracked entity instance in the year 2014:
GET /api/tracker/events?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
&trackedEntityInstance=gfVxE3ALA9m&occurredAfter=2014-01-01&occurredBefore=2014-12-31
A query where multiple operand and filters are specified for a data element UID:
GET /api/tracker/events?orgUnit=DiszpKrYNg8
&program=lxAQ7Zs9VYR
&filter=lw1SqmMlnfh:GT:150
&filter=lw1SqmMlnfh:LT:190
A query filter with a value that needs escaping and will be interpreted as :,/:
GET /api/tracker/events?orgUnit=DiszpKrYNg8
&program=lxAQ7Zs9VYR
&filter=lw1SqmMlnfh:EQ:/:/,//
Formát odpovědi¶
Odpověď JSON může vypadat následovně.
{
"instances": [
{
"event": "rgWr86qs0sI",
"status": "ACTIVE",
"program": "kla3mAPgvCH",
"programStage": "aNLq9ZYoy9W",
"orgUnit": "DiszpKrYNg8",
"orgUnitName": "Ngelehun CHC",
"relationships": [],
"occurredAt": "2021-10-12T00:00:00.000",
"followup": false,
"deleted": false,
"createdAt": "2018-10-20T12:09:19.492",
"updatedAt": "2018-10-20T12:09:19.492",
"attributeOptionCombo": "amw2rQP6r6M",
"attributeCategoryOptions": "RkbOhHwiOgW",
"dataValues": [
{
"createdAt": "2015-10-20T12:09:19.640",
"updatedAt": "2015-10-20T12:09:19.640",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "HyJL2Lt37jN",
"value": "12"
},
...
],
"notes": []
}
],
"page": 1,
"pageSize": 1
}
Odpověď CSV může vypadat následovně.
|event|status|program|programStage|enrollment|orgUnit|occurredAt|scheduledAt|dataElement|value|storedBy|providedElsewhere
|---|---|---|---|---|---|---|---|---|---|---|---|
|V1CerIi3sdL|COMPLETED|IpHINAT79UW|A03MvHHogjR|CCBLMntFuzb|DiszpKrYNg8|2020-02-26T23:00:00Z|2020-02-27T23:00:00Z|a3kGcGDCuk6|11|admin|false
|V1CerIi3sdL|COMPLETED|IpHINAT79UW|A03MvHHogjR|CCBLMntFuzb|DiszpKrYNg8|2020-02-26T23:00:00Z|2020-02-27T23:00:00Z|mB2QHw1tU96|[-11.566044,9.477801]|admin|false
Koncový bod jednoho objektu událostí GET /api/tracker/events/{uid}¶
Účelem tohoto koncového bodu je načíst jednu událost s jejím uid.
Požádat o syntaxi¶
GET /api/tracker/events/{uid}?fields={fields}
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
uid | String | uid | Vraťte událost se zadaným uid |
fields | String | Jakýkoli platný filtr polí (výchozí *,!relationships) | Zahrnout do odpovědi zadané dílčí objekty |
Example requests¶
Dotaz na událost:
GET /api/tracker/events/rgWr86qs0sI
Formát odpovědi¶
{
"event": "rgWr86qs0sI",
"status": "ACTIVE",
"program": "kla3mAPgvCH",
"programStage": "aNLq9ZYoy9W",
"enrollment": "Lo3SHzCnMSm",
"enrollmentStatus": "ACTIVE",
"orgUnit": "DiszpKrYNg8",
"orgUnitName": "Ngelehun CHC",
"relationships": [],
"occurredAt": "2021-10-12T00:00:00.000",
"followup": false,
"deleted": false,
"createdAt": "2018-10-20T12:09:19.492",
"createdAtClient": "2017-10-20T12:09:19.492",
"updatedAt": "2018-10-20T12:09:19.492",
"attributeOptionCombo": "amw2rQP6r6M",
"attributeCategoryOptions": "RkbOhHwiOgW",
"dataValues": [
{
"createdAt": "2015-10-20T12:09:19.640",
"updatedAt": "2015-10-20T12:09:19.640",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "HyJL2Lt37jN",
"value": "12"
},
{
"createdAt": "2015-10-20T12:09:19.514",
"updatedAt": "2015-10-20T12:09:19.514",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "b6dOUjAarHD",
"value": "213"
},
{
"createdAt": "2015-10-20T12:09:19.626",
"updatedAt": "2015-10-20T12:09:19.626",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "UwCXONyUtGs",
"value": "3"
},
{
"createdAt": "2015-10-20T12:09:19.542",
"updatedAt": "2015-10-20T12:09:19.542",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "fqnXmRYo5Cz",
"value": "123"
},
{
"createdAt": "2015-10-20T12:09:19.614",
"updatedAt": "2015-10-20T12:09:19.614",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "Qz3kfeKgLgL",
"value": "23"
},
{
"createdAt": "2015-10-20T12:09:19.528",
"updatedAt": "2015-10-20T12:09:19.528",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "W7aC8jLASW8",
"value": "12"
},
{
"createdAt": "2015-10-20T12:09:19.599",
"updatedAt": "2015-10-20T12:09:19.599",
"storedBy": "system",
"providedElsewhere": false,
"dataElement": "HrJmqlBqTFG",
"value": "3"
}
],
"notes": []
}
Enrollments (GET /api/tracker/enrollments)¶
Pro zápisy jsou vyhrazeny dva koncové body:
GET /api/tracker/enrollments- načte zápisy odpovídající zadaným kritériím
GET /api/tracker/enrollments/{id}- načte zápis podle poskytnutého ID
Enrollment Collection endpoint GET /api/tracker/enrollments¶
Vrátí seznam událostí na základě filtrů.
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
orgUnit | String | uid | Identifikátor organizační jednotky |
ouMode see ouModes | String | SELECTED|CHILDREN|DESCENDANTS|ACCESSIBLE|CAPTURE|`ALL | Režim výběru organizační jednotky |
program | String | uid | Identifikátor programu |
programStatus | enum | ACTIVE|COMPLETED|CANCELLED | Stav programu |
followUp | boolean | true|false | Sledovat stav instance pro daný program. Může být true|false nebo může být vynechána. |
updatedAfter | DateTime | ISO-8601 | Pouze zápisy aktualizované po tomto datu |
updatedWithin | Duration | ISO-8601 | Pouze zápisy aktualizované od daného data |
enrolledAfter | DateTime | ISO-8601 | Pouze zápisy novější než toto datum |
enrolledBefore | DateTime | ISO-8601 | Pouze přihlášky starší než toto datum |
trackedEntityType | String | uid | Identifikátor typu trasované entity |
trackedEntity | String | uid | Identifikátor instance trasované entity |
enrollment | String | Seznam uid oddělený čárkami | Filtr výsledku na omezenou sadu ID pomocí enrollment=id1;id2. |
includeDeleted | Boolean | Když je true, budou do výsledku dotazu zahrnuty měkké odstraněné události. | |
order | String | Supported fields: assignedUser, assignedUserDisplayName, attributeOptionCombo, completedAt, completedBy, createdAt, createdAtClient, createdBy, deleted, enrolledAt, enrollment, enrollmentStatus, event, followUp, occurredAt, orgUnit, program, programStage, scheduledAt, status, storedBy, trackedEntity, updatedAt, updatedAtClient, updatedBy. | Comma-delimited list of property name, attribute or data element UID and sort direction pairs in format propName:sortDirection. |
V dotazu se nerozlišují velká a malá písmena. Následující pravidla platí pro parametry dotazu.
-
At least one organisation unit must be specified using the
orgUnitparameter (one or many), or ouMode=ALL must be specified. -
Může být pouze jeden z parametrů program a trackedEntity specifikováno (nula nebo jedna).
-
If programStatus is specified, then program must also be specifikováno.
-
If followUp is specified, then program must also be specified.
-
If enrolledAfter or enrolledBefore is specified, then program must also be specified.
Example requests¶
A query for all enrollments associated with a specific organisation unit can look like this:
GET /api/tracker/enrollments?orgUnit=DiszpKrYNg8
To constrain the response to enrollments which are part of a specific program you can include a program query parameter:
GET /api/tracker/enrollments?orgUnit=O6uvpzGd5pu&ouMode=DESCENDANTS&program=ur1Edk5Oe2n
Chcete-li zadat data zápisu programu jako součást dotazu:
GET /api/tracker/enrollments?&orgUnit=O6uvpzGd5pu&program=ur1Edk5Oe2n
&enrolledAfter=2013-01-01&enrolledBefore=2013-09-01
To constrain the response to enrollments of a specific tracked entity you can include a tracked entity query parameter:
GET /api/tracker/enrollments?orgUnit=O6uvpzGd5pu&ouMode=DESCENDANTS&trackedEntity=cyl5vuJ5ETQ
To constrain the response to enrollments of a specific tracked entity you can include a tracked entity instance query parameter, in In this case, we have restricted it to available enrollments viewable for current user:
GET /api/tracker/enrollments?ouMode=ACCESSIBLE&trackedEntity=tphfdyIiVL6
Formát odpovědi¶
Odpověď JSON může vypadat následovně.
{
"instances": [
{
"enrollment": "iKaBMOyq7QQ",
"createdAt": "2017-03-28T12:28:19.812",
"createdAtClient": "2016-03-28T12:28:19.812",
"updatedAt": "2017-03-28T12:28:19.817",
"trackedEntity": "PpqV8ytvW5i",
"trackedEntityType": "nEenWmSyUEp",
"program": "ur1Edk5Oe2n",
"status": "ACTIVE",
"orgUnit": "NnQpISrLYWZ",
"orgUnitName": "Govt. Hosp. Bonthe",
"enrolledAt": "2020-10-23T12:28:19.805",
"occurredAt": "2020-10-07T12:28:19.805",
"followUp": false,
"deleted": false,
"events": [],
"relationships": [],
"attributes": [],
"notes": []
}
],
"page": 1,
"total": 1,
"pageSize": 5
}
Koncový bod registrace jednoho objektu GET /api/tracker/enrollments/{uid}¶
Účelem tohoto koncového bodu je načíst jednu prohlášku s jejím uid.
Požádat o syntaxi¶
GET /api/tracker/enrollment/{uid}
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
uid | String | uid | Vraťte registraci se zadaným uid |
fields | String | Libovolný platný filtr polí (výchozí *,!relationships,!events,!attributes) | Zahrnout do odpovědi zadané dílčí objekty |
Example requests¶
Dotaz na Zápis:
GET /api/tracker/enrollments/iKaBMOyq7QQ
Formát odpovědi¶
{
"enrollment": "iKaBMOyq7QQ",
"createdAt": "2017-03-28T12:28:19.812",
"createdAtClient": "2016-03-28T12:28:19.812",
"updatedAt": "2017-03-28T12:28:19.817",
"trackedEntity": "PpqV8ytvW5i",
"trackedEntityType": "nEenWmSyUEp",
"program": "ur1Edk5Oe2n",
"status": "ACTIVE",
"orgUnit": "NnQpISrLYWZ",
"orgUnitName": "Govt. Hosp. Bonthe",
"enrolledAt": "2020-10-23T12:28:19.805",
"occurredAt": "2020-10-07T12:28:19.805",
"followUp": false,
"deleted": false,
"events": [],
"relationships": [],
"attributes": [],
"notes": []
}
Relationships (GET /api/tracker/relationships)¶
Relationships are links between two entities in the Tracker. These entities can be tracked entity instances, enrollments, and events.
Účelem tohoto koncového bodu je načíst vztahy mezi objekty.
Na rozdíl od jiných koncových bodů trasovaných objektů vztahy odhalují pouze jeden koncový bod:
GET /api/tracker/relationships?[trackedEntity={trackedEntityUid}|enrollment={enrollmentUid}|event={eventUid}]&fields=[fields]
Request parameters¶
| Parametr požadavku | Typ | Povolené hodnoty | Popis |
|---|---|---|---|
trackedEntity | String | uid | Identifikátor instance trasované entity |
enrollment | String | uid | Identifikátor Zápisu |
event | String | uid | Identifikátor Události |
fields | String | Jakýkoli platný filtr polí (výchozí relationship,relationshipType,from[trackedEntity[trackedEntity],enrollment[enrollment],event[event]],to[trackedEntity[trackedEntity],enrollment[enrollment],event[event]]) | Zahrnout do odpovědi zadané dílčí objekty |
order | String | comma-delimited list of property name and sort direction pairs in format propName:sortDirection. | Supported fields: createdAt. |
includeDeleted | Boolean | true|false | whether to include soft-deleted elements in your query result |
Následující pravidla platí pro parametry dotazu.
- lze předat pouze jeden parametr mezi
trackedEntity,enrollment,event
NOTE
Using tracked entity, Enrollment or Event params, will return any relationship where the trackedEntity, enrollment or event is part of the relationship (either from or to). As long as user has access, that is.
Example response¶
{
"instances": [
{
"relationship": "SSfIicJKbh5",
"relationshipType": "Mv8R4MPcNcX",
"from": {
"trackedEntity": {
"trackedEntity": "neR4cmMY22o"
}
},
"to": {
"trackedEntity": {
"trackedEntity": "rEYUGH97Ssd"
}
}
},
{
"relationship": "S9kZGYPKk3x",
"relationshipType": "Mv8R4MPcNcX",
"from": {
"trackedEntity": {
"trackedEntity": "neR4cmMY22o"
}
},
"to": {
"trackedEntity": {
"trackedEntity": "k8TU70vWtnP"
}
}
}
],
"page": 1,
"pageSize": 2
}
Tracker Access Control¶
Tracker má několik různých konceptů, pokud jde o řízení přístupu, jako je sdílení, rozsahy organizačních jednotek, vlastnictví a úrovně přístupu. Následující části poskytují krátký úvod k různým tématům.
Sdílení metadat¶
Nastavení sdílení je standardní funkcí DHIS2, která se vztahuje jak na Tracker, tak na Aggregate metadata / data, stejně jako na ovládací panely a položky vizualizace. Jádrem sdílení je schopnost definovat, kdo co může vidět / dělat. Obecně existuje pět možných konfigurací sdílení – žádný přístup, čtení metadat, zápis metadat, čtení dat a zápis dat. Tyto konfigurace přístupu lze udělit na úrovni uživatele a/nebo skupiny uživatelů (pro větší flexibilitu). Se zaměřením na Tracker jsou zvláště důležitá následující metadata a jejich nastavení sdílení: Datový prvek, Možnost kategorie, Program, Fáze programu, Typ trasované entity, Atribut trasované entity a také ovládací panely a položky ovládacího panelu související s Trackerem.
Jak funguje sdílení, je jednoduché - nastavení se vynucuje během procesu importu/exportu dat Trackeru. Abyste mohli číst hodnotu, musíte mít přístup ke čtení dat. Pokud se od uživatele očekává, že bude upravovat data, musí mít přístup k zápisu dat. Podobně, pokud se od uživatele očekává úprava metadat, je nezbytné udělit přístup pro zápis metadat.
Jedním z kritických bodů u dat Tracker je potřeba mít holistický přístup. Uživatel například nebude moci zobrazit hodnotu datového prvku, pokud bude mít přístup pro čtení pouze k datovému prvku. Uživatel potřebuje načíst data, aby měl přístup k nadřazené programové ploše a programu, kam tento datový prvek patří. Stejné je to s kombinací možností kategorie. V Trackeru událost souvisí s AttributeOptionCombo, který se skládá z kombinace možností kategorie. Proto, aby uživatel mohl číst data události, potřebuje mít přístup ke čtení dat ke všem možnostem kategorií a odpovídajícím kategoriím, které tvoří AttributeOptionCombo dané události. Pokud uživatel nemá přístup pouze k jedné možnosti kategorie nebo kategorii, nemá přístup k celé události.
Pokud jde o přístup k datům zápisu, je nezbytné mít nejprve přístup k trasované entitě. Přístup k trasované entitě je řízen prostřednictvím nastavení sdílení programu, typu trasované entity a atributu trasované entity. Po zpřístupnění Zápisu je možné přistupovat k datům událostí, opět v závislosti na nastavení Fáze programu a nastavení sdílení datových prvků.
Dalším důležitým bodem ke zvážení je, jak zmapovat přístup k různým fázím programu programu. Někdy se můžeme ocitnout v situaci, kdy potřebujeme udělit přístup ke konkrétní fázi – například „Lab Result“ – určité skupině uživatelů (Lab Technicians). V této situaci můžeme poskytnout přístup k zápisu dat do fáze „Lab Result“, pravděpodobně data načtená do jedné nebo více fází pro případ, že chceme, aby laboratorní technici četli další lékařské výsledky, nebo žádný přístup, pokud si myslíme, že to pro laboratorní techniky není nutné. zobrazit data jiná než související s laboratoří.
Stručně řečeno, DHIS2 má jemné nastavení sdílení, které můžeme použít k implementaci mechanismů řízení přístupu na úrovni dat i metadat. Tato nastavení sdílení lze použít přímo na úrovni uživatele nebo na úrovni skupiny uživatelů. Jak přesně nastavení sdílení použít, závisí na konkrétním případu použití.
Podrobnější informace o sdílení dat najdete v Sdílení dat.
Rozsahy organizační jednotky¶
Organizační jednotky jsou jedním z nejzákladnějších objektů v DHIS2. Definují vesmír, ve kterém může uživatel zaznamenávat a/nebo číst data. Existují tři typy organizačních jednotek, které lze přiřadit uživateli. Jedná se o sběr dat, zobrazení dat a vyhledávání trackerů. Jak název napovídá, tyto organizační jednotky definují rozsah, ve kterém může uživatel provádět příslušné operace.
Pro další doladění rozsahu však DHIS2 Tracker zavádí koncept, který nazýváme OrganisationUnitSelectionMode. Takový režim se často používá při exportu objektů trackeru. Pokud má například uživatel určitý rozsah vyhledávání trackeru, znamená to, že musíme tento rozsah použít pokaždé, když se uživatel pokusí vyhledat objekt trackeru, registrace nebo události? Nebo má uživatel zájem omezit vyhledávání pouze na vybranou organizační jednotku nebo celý rozsah zachycené organizační jednotky a tak dále.
Users can do the fine-tuning by passing a specific value of ouMode in their API request:
api/tracker/trackedEntities?orgUnit=UID&ouMode=specific_organisation_unit_selection_mode
Currently, there are six selection modes available: SELECTED, CHILDREN, DESCENDANTS, CAPTURE, ACCESSIBLE, and ALL.
- SELECTED: as the name implies, all operations intended by the requesting API narrow down to the selected organisation unit.
- CHILDREN: under this mode, the organisation unit scope will be constructed using the selected organisation unit and its immediate children.
- DESCENDANTS: here, the selected organisation unit and everything underneath it, not just the immediate children, constitute the data operation universe.
- CAPTURE: jak název napovídá, organizační jednotky přiřazené k zachycení dat uživatele tvoří vesmír. Všimněte si, že ze tří organizačních jednotek, které lze přiřadit k zachycení uživatelských dat, je povinná. Pokud uživatel nemá organizační jednotky pro zobrazení dat a vyhledávání pomocí trackeru, systém se vrátí ke sběru dat. Tímto způsobem máme vždy jistotu, že uživatel má alespoň jeden vesmír.
- ACCESSIBLE: technicky jde o stejný rozsah jako u organizačních jednotek vyhledávání sledovače uživatele.
- ALL: the name ALL makes perfect sense if we are dealing with a superuser. For super users, this scope means the entire organisation unit available in the system. However, for non-superusers, ALL boils down to ACCESSIBLE organisation units.
It makes little sense to pass these modes at the time of tracker import operations. Because when writing tracker data, each of the objects needs to have a specific organisation unit attached to them. The system will then ensure if each of the mentioned organisation units falls under the CAPTURE scope. If not, the system will simply reject the write operation.
Note that there is 4 type of organisation unit associations relevant for Tracker objects. A TrackedEntity has an organisation unit, commonly referred to as the Registration Organisation unit. Enrollments have an organisation unit associated with them. Events also have an organisation unit associated with them. There is also an Owner organisation unit for a TrackedEntity-Program combination.
When fetching Tracker objects, depending on the context, the organisation unit scope is applied to one of the above four organisation unit associations.
For example, when retrieving TrackedEntities without the context of a program, the organisation unit scope is applied to the registration organisation unit of the TrackedEntity. Whereas, when retrieving TrackedEntities, including specific program data, the organisation unit scope is applied to the Owner organisation unit.
- Explain how they relate to ownership - Link to Program Ownership
Tracker Program Ownership¶
A new concept called Tracker Ownership is introduced from 2.30. This introduces a new organisation unit association for a TrackedEntity - Program combination. We call this the Owner (or Owning) Organisation unit of a TrackedEntity in the context of a Program. The Owner organisation unit is used to decide access privileges when reading and writing tracker data related to a program. This, along with the Program's Access Level configuration, decides the access behavior for Program-related data (Enrollments and Events). A user can access a TrackedEntity's Program data if the corresponding Owner OrganisationUnit for that TrackedEntity-Program combination falls under the user's organisation unit scope (Search/Capture). For Programs that are configured with access level OPEN or AUDITED , the Owner OrganisationUnit has to be in the user's search scope. For Programs that are configured with access level PROTECTED or CLOSED , the Owner OrganisationUnit has to be in the user's capture scope to be able to access the corresponding program data for the specific tracked entity.
When requesting tracked entities without specifying a program, the response will include only tracked entities that satisfy metadata sharing settings and one of the following criteria: - The tracked entity is enrolled in at least one program the user has data access to, and the user has access to the owner organisation unit. - The tracked entity is not enrolled in any program the user has data access to, but the user has access to the tracked entity registering organisation unit.
Tracker Ownership Override: Break the Glass¶
It is possible to temporarily override the ownership privilege for a program that is configured with an access level of PROTECTED. Any user with the org unit owner within their search scope, can temporarily access the program-related data by providing a reason for accessing it.
This act of temporarily gaining access is termed breaking the glass. Currently, temporary access is granted for 3 hours. DHIS2 audits breaking the glass along with the reason specified by the user. It is not possible to gain temporary access to a program that has been configured with an access level of CLOSED.
To break the glass for a TrackedEntity-Program combination, the following POST request can be used:
/api/33/tracker/ownership/override?trackedEntityInstance=DiszpKrYNg8
&program=eBAyeGv0exc&reason=patient+showed+up+for+emergency+care
Převod vlastnictví trasovače¶
It is possible to transfer the ownership of a TrackedEntity-Program from one organisation unit to another. This will be useful in case of patient referrals or migrations. Only a user who has Ownership access (or temporary access by breaking the glass) can transfer the ownership. To transfer ownership of a TrackedEntity-Program to another organisation unit, the following PUT request can be used:
/api/33/tracker/ownership/transfer?trackedEntityInstance=DiszpKrYNg8
&program=eBAyeGv0exc&ou=EJNxP3WreNP
Úroveň přístupu¶
DHIS2 treats Tracker data with an extra level of protection. In addition to the standard feature of metadata and data protection through sharing settings, Tracker data are shielded with additional access level protection mechanisms. Currently, there are four access levels that can be configured for a Program: Open, Audited, Protected, and Closed.
Tyto úrovně přístupu se spouštějí pouze tehdy, když se uživatelé pokusí o interakci s daty programu, konkrétně s daty pro zápisy a události. Odlišná konfigurace přístupové úrovně pro Program je určitým stupněm otevřenosti (nebo uzavřenosti) dat programu. Všimněte si, že všechna ostatní nastavení sdílení jsou stále respektována a úroveň přístupu je pouze další vrstvou řízení přístupu. Zde je krátký popis čtyř úrovní přístupu, které lze pro Program nakonfigurovat.
- Open: This access level is the least restricted among the access levels. Data inside an OPEN program can be accessed and modified by users if the Owner organisation unit falls under the user's search scope. With this access level, accessing and modifying data outside the capture scope is possible without any justification or consequence.
- Auditováno: Toto je stejné jako úroveň otevřeného přístupu. Rozdíl je v tom, že systém automaticky přidá záznam auditního protokolu k datům, ke kterým přistupuje konkrétní uživatel.
- Chráněno: Tato úroveň přístupu je mírně omezenější. K datům uvnitř CHRÁNĚNÉHO programu mohou uživatelé přistupovat pouze v případě, že organizační jednotka vlastníka spadá do rozsahu zachycení uživatele. Uživatel, který má v oboru vyhledávání pouze organizační jednotku Owner, však může získat dočasné vlastnictví rozbitím skla. Uživatel musí poskytnout odůvodnění, proč přistupuje k daným datům. Systém poté vloží protokol o zdůvodnění i auditu přístupu a poskytne uživateli dočasný přístup na 3 hodiny. Pamatujte, že při rozbití skla zůstane organizační jednotka vlastníka nezměněna a pouze uživatel, který rozbil sklo, získá dočasný přístup.
- Zavřeno: Toto je nejvíce omezená úroveň přístupu. Data zaznamenaná v rámci programů nakonfigurovaných s úrovní přístupu ZAVŘENO nebudou přístupná, pokud organizační jednotka vlastníka nespadá do rozsahu zachycení uživatele. V této konfiguraci také není možné rozbít sklo nebo získat dočasné vlastnictví. Upozorňujeme, že je stále možné převést vlastnictví na jinou organizační jednotku. Pouze uživatel, který má přístup k datům, může převést vlastnictví kombinace TrackedEntity-Program na jinou organizační jednotku. Pokud je vlastnictví převedeno, je aktualizována organizační jednotka vlastníka.