Tracker (API obsolètes)¶
Note Tracker has been re-implemented in DHIS2 2.36. The new endpoints are documented at Tracker.
The endpoints described in this document are in maintenance mode and do not receive any new features. Important bugs will still be fixed.
- If you plan to use the tracker endpoints use the new version described in Tracker
- If you 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.
Migration vers de nouveaux points d'extrémité du Tracker¶
Les sections suivantes montrent les principales différences entre les points d'extrémité obsolètes.
GET/POST/PUT/DELETE /api/trackedEntityInstanceGET/POST/PUT/DELETE /api/enrollmentsGET/POST/PUT/DELETE /api/eventsGET/POST/PUT/DELETE /api/relationships
et ceux introduits nouvellement.
POST /api/trackerGET /api/tracker/enrollmentsGET /api/tracker/eventsGET /api/tracker/trackedEntitiesGET /api/tracker/relationships
Noms de propriétés¶
Les noms des propriétés d'API ont été modifiés afin qu'ils soient cohérents pour tous les points d'extrémité. Le tableau suivant énumère les anciens et les nouveaux noms de propriétés.
| Objet Tracker | Avant | Maintenant |
|---|---|---|
| Attribut | created (créé)lastUpdated (dernière mise à jour) | createdAt (créé à) updatedAt (mis à jour à) |
| Valeur de données | createdlastUpdatedcreateByUserInfo (créé avec les informations d'utilisateur)lastUpdatedByUserInfo (dernière mise à jour avec les informations d'utilisateur) | createdAtupdatedAtcreatedBy (créé par)updatedBy (mis à jour par) |
| Inscription | createdcreatedAtClientlastUpdatedlastUpdatedAtClienttrackedEntityInstanceenrollmentDateincidentDatecompletedDatecreateByUserInfolastUpdatedByUserInfo | createdAtcreatedAtClientupdatedAtupdatedAtClienttrackedEntityenrolledAtoccurredAtcompletedAtcreatedByupdatedBy |
| Manifestation | trackedEntityInstanceeventDatedueDatecreatedcreatedAtClientlastUpdatedlastUpdatedAtClientcompletedDatecreateByUserInfolastUpdatedByUserInfoassignedUser* | trackedEntityoccurredAtscheduledAtcreatedAtcreatedAtClientupdatedAtupdatedAtClientcompletedAtcreatedByupdatedByassignedUser* |
| Remarque | storedDatelastUpdatedBy | storedAtcreatedBy |
| Propriétaire du programme | ownerOrgUnittrackedEntityInstance | orgUnittrackedEntity |
| Élément de relation | trackedEntityInstance.trackedEntityInstanceenrollment.enrollmentevent.event | trackedEntityenrollmentevent |
| Relation | created (créé)lastUpdated (dernière mise à jour) | createdAt (créé à) updatedAt (mis à jour à) |
| Entité suivie | trackedEntityInstancecreatedcreatedAtClientlastUpdatedlastUpdatedAtClientcreateByUserInfolastUpdatedByUserInfo | trackedEntitycreatedAtcreatedAtClientupdatedAtupdatedAtClientcreatedByupdatedBy |
Note
Property
assignedUserwas a string before and is now an object of the following shape (typeUser):{ "assignedUser": { "uid": "ABCDEF12345", "username": "username", "firstName": "John", "surname": "Doe" } }
Journal des modifications (changelog) de l'importation Tracker (POST)¶
Les précédents points d'extrémité de l'importation Tracker
POST/PUT/DELETE /api/trackedEntityInstancePOST/PUT/DELETE /api/enrollmentsPOST/PUT/DELETE /api/eventsPOST/PUT/DELETE /api/relationships
sont remplacés par le nouveau point d'extrémité
POST /api/tracker
[Importation Tracker] (https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-master/tracker.html#webapi_nti_import) décrit comment utiliser ce nouveau point d'extrémité.
Journal des modifications de l'exportation Tracker (GET)¶
En plus des noms modifiés indiqués dans Noms de propriétés, certains paramètres de requête ont également été modifiés.
The following tables list the differences in old and new request parameters for GET enpoints.
Modifications apportées aux paramètres de requête pour GET /api/tracker/enrollments¶
| Avant | Maintenant |
|---|---|
uo | orgUnit (unité d'organisation) |
lastUpdatedlastUpdateDuration | updatedAfterupdatedWithin |
programStartDateprogramEndDate | enrolledAfterenrolledBefore |
trackedEntityInstance | trackedEntity (entité suivie) |
Modifications apportées aux paramètres de requête pour GET /api/tracker/events¶
| Avant | Maintenant |
|---|---|
trackedEntityInstance | trackedEntity (entité suivie) |
startDateendDate | occurredAfteroccurredBefore |
dueDateStartdueDateEnd | scheduledAfterscheduledBefore |
dernière mise à jour | Supprimé - obsolète, voir :
|
lastUpdatedStartDatelastUpdateEndDatelastUpdateDuration | updatedAfterupdatedBeforeupdatedWithin |
Modifications apportées aux paramètres de requête pour GET /api/tracker/trackedEntities¶
| Avant | Maintenant |
|---|---|
trackedEntityInstance | trackedEntity (entité suivie) |
uo | orgUnit (unité d'organisation) |
programStartDateprogramEndDate | Supprimé - obsolète, voir
|
programEnrollmentStartDateprogramEnrollmentEndDate | enrollmentEnrolledAfterenrollmentEnrolledBefore |
programIncidentStartDateprogramIncidentEndDate | enrollmentOccurredAfterenrollmentOccurredBefore |
eventStartDateeventEndDate | eventOccurredAftereventOccurredBefore |
lastUpdatedStartDatelastUpdateEndDatelastUpdateDuration | updatedAfterupdatedBeforeupdatedWithin |
API Web du Tracker¶
L'API Web du Tracker est constitué de 3 points d'extrémité qui ont un support CRUD complet (créer, lire, mettre à jour, supprimer). Les 3 points d'extrémité sont /api/trackedEntityInstances, /api/enrollments et /api/events et ils prennent en charge les instances d'entités suivies, les inscriptions et les événements.
Gestion des instances d'entités suivies¶
Les instances d'entités suivies bénéficient d'une prise en charge CRUD complète dans l'API. Avec l'API d'inscription, la plupart des opérations nécessaires pour travailler avec les instances d'entités suivies et les programmes sont prises en charge.
/api/33/trackedEntityInstances
Création d'une nouvelle instance d'entité suivie¶
Pour créer une nouvelle personne dans le système, vous devez utiliser la ressource trackedEntityInstances (instances d'entités suivies). Un modèle de charge est présenté ci-dessous :
{
"trackedEntity": "tracked-entity-id",
"orgUnit": "org-unit-id",
"geometry": "<Geo JSON>",
"attributes": [{
"attribute": "attribute-id",
"value": "attribute-value"
}]
}
Le champ "geometry" accepte un objet GeoJson, dont le type doit correspondre au featureType (type de fonctionnalité) du TrackedEntityType (type d'entité suivie). Voici un exemple d'objet GeoJson :
{
"type": "Point",
"coordinates": [1, 1]
}
Le champ "coordinates" a été introduit dans la version 2.29 et accepte comme valeur une coordonnée ou un polygone.
Pour obtenir les ID de relationship et attributes, vous pouvez consulter respectivement les ressources relationshipTypes et trackedEntityAttributes. Pour créer une instance d'entité suivie, vous devez utiliser la méthode HTTP POST. Vous pouvez envoyer la charge à l'URL suivante :
/api/trackedEntityInstances
Par exemple, créons une nouvelle instance pour une entité suivie de personne et spécifions ses attributs 'prénom' et 'nom' :
{
"trackedEntity": "nEenWmSyUEp",
"orgUnit": "DiszpKrYNg8",
"attributes": [
{
"attribute": "w75KJ2mc4zz",
"value": "Joe"
},
{
"attribute": "zDhUuAYrxNC",
"value": "Smith"
}
]
}
Pour envoyer ces données au serveur, vous pouvez utiliser la commande cURL comme suit :
curl -d @tei.json "https://play.dhis2.org/demo/api/trackedEntityInstances" -X POST
-H "Content-Type: application/json" -u admin:district
Pour créer plusieurs instances à l'aide d'une seule requête, vous pouvez envelopper la charge dans un tableau extérieur comme ceci et effectuer une requête POST à la même ressource comme ci-dessus :
{
"trackedEntityInstances": [
{
"trackedEntity": "nEenWmSyUEp",
"orgUnit": "DiszpKrYNg8",
"attributes": [
{
"attribute": "w75KJ2mc4zz",
"value": "Joe"
},
{
"attribute": "zDhUuAYrxNC",
"value": "Smith"
}
]
},
{
"trackedEntity": "nEenWmSyUEp",
"orgUnit": "DiszpKrYNg8",
"attributes": [
{
"attribute": "w75KJ2mc4zz",
"value": "Jennifer"
},
{
"attribute": "zDhUuAYrxNC",
"value": "Johnson"
}
]
}
]
}
Le système ne permet pas la création d'une instance d'entité suivie (ainsi que l'inscription et l'événement) avec un UID déjà utilisé dans le système. Cela signifie que les UID ne peuvent pas être réutilisés.
Mise à jour d'une instance d'entité suivie¶
Pour la mise à jour d'une instance d'entité suivie, la charge est identique à celle de la section précédente. La différence est que vous devez utiliser la méthode HTTP PUT pour la requête lors de l'envoi de la charge. Vous devrez également ajouter l'identifiant de la personne à la ressource trackedEntityInstances dans l'URL comme suit, où <tracked-entity-instance-identifier> doit être remplacé par l'identifiant de l'instance d'entité suivie :
/api/trackedEntityInstances/<tracked-entity-instance-id>
La charge doit contenir tous les attributs et relations, même ceux qui n'ont pas été modifiés. Les attributs ou les relations qui étaient présents auparavant et qui ne sont plus présents dans la charge actuelle seront supprimés du système. Cela signifie que si des attributs/relations sont vides dans la charge actuelle, tous les attributs/relations existants seront supprimés du système. Depuis la version 2.31, il est possible d'ignorer les attributs/relations vides dans la charge en cours d'utilisation. Vous pouvez définir le paramètre de requête ignoreEmptyCollection sur true si vous ne voulez pas envoyer des attributs ou des relations et que vous ne voulez pas non plus qu'ils soient supprimés du système.
Il n'est pas autorisé de mettre à jour une instance d'entité suivie déjà supprimée. Il n'est pas non plus autorisé de marquer une instance d'entité suivie comme supprimée via une requête de mise à jour. Les mêmes règles s'appliquent aux inscriptions et aux événements.
Suppression d'une instance d'entité suivie¶
Pour supprimer une instance d'entité suivie, envoyez une requête à l'URL qui identifie cette instance d'entité suivie avec la méthode DELETE. L'URL est la même que celle utilisée plus haut pour la mise à jour.
Création et inscription des instances d'entités suivies¶
Il est également possible de créer (et de mettre à jour) une instance d'entité suivie et de l'inscrire en même temps à un programme
{
"trackedEntity": "tracked-entity-id",
"orgUnit": "org-unit-id",
"attributes": [{
"attribute": "attribute-id",
"value": "attribute-value"
}],
"enrollments": [{
"orgUnit": "org-unit-id",
"program": "program-id",
"enrollmentDate": "2013-09-17",
"incidentDate": "2013-09-17"
}, {
"orgUnit": "org-unit-id",
"program": "program-id",
"enrollmentDate": "2013-09-17",
"incidentDate": "2013-09-17"
}]
}
Vous l'enverrez au serveur comme vous le feriez normalement lors de la création ou de la mise à jour d'une nouvelle instance d'entité suivie.
curl -X POST -d @tei.json -H "Content-Type: application/json"
-u user:pass "http://server/api/33/trackedEntityInstances"
Exemple complet de charge comprenant : l'instance d'entité suivie, l'inscription et l'événement.¶
Il est également possible de créer (et de mettre à jour) une instance d'entité suivie, de l'inscrire en même temps à un programme et de créer un événement.
{
"trackedEntityType": "nEenWmSyUEp",
"orgUnit": "DiszpKrYNg8",
"attributes": [
{
"attribute": "w75KJ2mc4zz",
"value": "Joe"
},
{
"attribute": "zDhUuAYrxNC",
"value": "Rufus"
},
{
"attribute":"cejWyOfXge6",
"value":"Male"
}
],
"enrollments":[
{
"orgUnit":"DiszpKrYNg8",
"program":"ur1Edk5Oe2n",
"enrollmentDate":"2017-09-15",
"incidentDate":"2017-09-15",
"events":[
{
"program":"ur1Edk5Oe2n",
"orgUnit":"DiszpKrYNg8",
"eventDate":"2017-10-17",
"status":"COMPLETED",
"storedBy":"admin",
"programStage":"EPEcjy3FWmI",
"coordinate": {
"latitude":"59.8",
"longitude":"10.9"
},
"dataValues": [
{
"dataElement":"qrur9Dvnyt5",
"value":"22"
},
{
"dataElement":"oZg33kd9taw",
"value":"Male"
}
]
},
{
"program":"ur1Edk5Oe2n",
"orgUnit":"DiszpKrYNg8",
"eventDate":"2017-10-17",
"status":"COMPLETED",
"storedBy":"admin",
"programStage":"EPEcjy3FWmI",
"coordinate": {
"latitude":"59.8",
"longitude":"10.9"
},
"dataValues":[
{
"dataElement":"qrur9Dvnyt5",
"value":"26"
},
{
"dataElement":"oZg33kd9taw",
"value":"Female"
}
]
}
]
}
]
}
Vous l'enverrez au serveur comme vous le feriez normalement lors de la création ou de la mise à jour d'une nouvelle instance d'entité suivie.
curl -X POST -d @tei.json -H "Content-Type: application/json"
-u user:pass "http://server/api/33/trackedEntityInstances"
Attributs d'instances d'entités suivies générés¶
Les attributs d'instances d'entités suivies dont les valeurs uniques sont générées automatiquement ont trois points d'extrémité qui sont utilisés par les applications. Ces points d'extrémité sont tous utilisés pour générer et réserver des valeurs.
Dans la version 2.29, nous avons introduit TextPattern pour définir et générer ces modèles. Tous les modèles existants seront convertis en modèles TextPattern valides lors de la mise à jour vers la version 2.29.
Remarque
À partir de la version 2.29, tous ces points d'extrémité vous demanderont d'inclure toutes les variables rapportées par le point d'extrémité
requiredValueset qui sont listées comme obligatoires. Les modèles existants, composés uniquement de#, seront mis à jour vers la nouvelle syntaxe TextPatternRANDOM(<old-pattern>). Le > segment RANDOM du TextPattern n'est pas une variable obligatoire, donc ce > point d'extrémité fonctionnera comme auparavant pour les modèles définis avant la version 2.29.
Recherche des valeurs obligatoires¶
Un TextPattern peut contenir des variables qui changent en fonction de différents facteurs. Certains de ces facteurs sont inconnus du serveur. Pour cela, les valeurs de ces variables doivent être fournies lors de la génération et de la réservation des valeurs.
Cet point d'extrémité va renvoyer un plan de valeurs obligatoires et optionnelles, que le serveur va intégrer dans le TextPattern lorsqu'il génère de nouvelles valeurs. Les variables obligatoires doivent être fournies pour la génération, mais les variables optionnelles ne doivent être fournies que si vous savez ce que vous faites.
GET /api/33/trackedEntityAttributes/Gs1ICEQTPlG/requiredValues
{
"REQUIRED": [
"ORG_UNIT_CODE"
],
"OPTIONAL": [
"RANDOM"
]
}
Point d'extrémité de de génération de valeur¶
Les applications web en ligne et les autres clients qui souhaitent générer une valeur qui sera utilisée immédiatement peuvent utiliser le point d'extrémité de génération simple. Ce point d'extrémité génère une valeur dont l'unicité est garantie au moment de la génération. La valeur ne sera pas non plus réservée. Depuis la version 2.29, ce point d'extrémité réserve également la valeur générée pendant 3 jours.
Si votre TextPattern comprend des valeurs obligatoires, vous pouvez les utiliser comme paramètres dans l'exemple ci-dessous :
Le délai d'expiration peut également être modifié au moment de la génération, en ajoutant l'option ?expiration=<number-of-days> à la requête.
GET /api/33/trackedEntityAttributes/Gs1ICEQTPlG/generate?ORG_UNIT_CODE=OSLO
{
"ownerObject": "TRACKEDENTITYATTRIBUTE",
"ownerUid": "Gs1ICEQTPlG",
"key": "RANDOM(X)-OSL",
"value": "C-OSL",
"created": "2018-03-02T12:01:36.680",
"expiryDate": "2018-03-05T12:01:36.678"
}
Point d'extrémité de génération et de réservation de valeur¶
Le point d'extrémité de génération et de réservation est utilisé par les clients hors ligne qui ont besoin d'enregistrer des entités suivies avec des identifiants uniques. Ils réservent un certain nombre d'identifiants uniques que ce dispositif utilisera ensuite lors de l'enregistrement de nouvelles instances d'entités suivies. Une requête est envoyée à ce point d'extrémité afin de récupérer un certain nombre de valeurs réservées pour les instances d'entités suivies. Un paramètre facultatif, "numberToReserve", indique le nombre d'identifiants à générer (par défaut, ce paramètre est défini sur 1).
Si votre TextPattern comprend des valeurs obligatoires, vous pouvez les utiliser comme paramètres dans l'exemple ci-dessous :
Comme pour le point d'extrémité de génération, ce point d'extrémité peut également spécifier le délai d'expiration de la même manière. En ajoutant ?expiration=<number-of-days>, vous pouvez remplacer le délai par défaut de 60 jours.
GET /api/33/trackedEntityAttributes/Gs1ICEQTPlG/generateAndReserve?numberToReserve=3&ORG_UNIT_CODE=OSLO
[
{
"ownerObject": "TRACKEDENTITYATTRIBUTE",
"ownerUid": "Gs1ICEQTPlG",
"key": "RANDOM(X)-OSL",
"value": "B-OSL",
"created": "2018-03-02T13:22:35.175",
"expiryDate": "2018-05-01T13:22:35.174"
},
{
"ownerObject": "TRACKEDENTITYATTRIBUTE",
"ownerUid": "Gs1ICEQTPlG",
"key": "RANDOM(X)-OSL",
"value": "Q-OSL",
"created": "2018-03-02T13:22:35.175",
"expiryDate": "2018-05-01T13:22:35.174"
},
{
"ownerObject": "TRACKEDENTITYATTRIBUTE",
"ownerUid": "Gs1ICEQTPlG",
"key": "RANDOM(X)-OSL",
"value": "S-OSL",
"created": "2018-03-02T13:22:35.175",
"expiryDate": "2018-05-01T13:22:35.174"
}
]
Valeurs réservées¶
Les valeurs réservées ne sont actuellement pas accessibles via l'API, mais elles sont renvoyées par les points d'extrémité generate (génération) et generate And Reserve (génération et réservation). Le tableau suivant explique les propriétés de l'objet de valeur réservée :
¶
Tableau : Valeurs réservées
| Propriété | Description |
|---|---|
| ownerObject | Le type de métadonnées référencé lors de la génération et de la réservation de la valeur. Actuellement, seul TRACKEDENTITYATTRIBUTE (attribut d'entité suivie) est pris en charge. |
| ownerUid | L'uid de l'objet de métadonnées référencé lors de la génération et de la réservation de la valeur. |
| clé | Une valeur partiellement générée où les segments générés ne sont pas encore ajoutés. |
| valeur | La valeur réservée. C'est la valeur que vous envoyez au serveur lorsque vous stockez des données. |
| créé | Date et heure à laquelle la réservation a été effectuée |
| expiryDate | Date et heure à partir de laquelle la réservation ne sera plus valable. |
Les réservations expirées sont supprimées quotidiennement. Si un modèle change, les valeurs déjà réservées seront acceptées lors du stockage des données, même si elles ne correspondent pas au nouveau modèle, tant que la réservation n'a pas expiré.
Attributs d'image¶
Travailler avec des attributs d'image ressemble beaucoup à travailler avec des valeurs de données de fichier. La valeur d'un attribut de type image est l'identifiant de la ressource de fichier associée. Une requête GET au point d'extrémité /api/trackedEntityInstances/<entityId>/<attributeId>/image renverra l'image proprement dite. Les paramètres facultatifs height (hauteur) et width (largeur) peuvent être utilisés pour spécifier les dimensions de l'image.
curl "http://server/api/33/trackedEntityInstances/ZRyCnJ1qUXS/zDhUuAYrxNC/image?height=200&width=200"
> image.jpg
L'API prend également en charge un paramètre dimension. Il peut prendre trois valeurs possibles (attention aux lettres majuscules) : SMALL (254x254), MEDIUM (512x512), LARGE (1024x1024) ou ORIGINAL. Les attributs de type d'image seront stockés dans des tailles pré-générées et seront fournis par requête en fonction de la valeur du paramètre dimension.
curl "http://server/api/33/trackedEntityInstances/ZRyCnJ1qUXS/zDhUuAYrxNC/image?dimension=MEDIUM"
Attributs de fichier¶
Travailler avec les attributs de fichier ressemble beaucoup à travailler avec les valeurs de données d'image. La valeur d'un attribut de type fichier est l'identifiant de la ressource de fichier associée. Une requête GET à l'adresse /api/trackedEntityInstances/<entityId>/<attributeId>/file renvoie le contenu du fichier.
curl "http://server/api/trackedEntityInstances/ZRyCnJ1qUXS/zDhUuAYrxNC/file
Requête pour des instances d'entité suivie¶
Pour rechercher des instances d'entités suivies, vous pouvez interagir avec la ressource /api/trackedEntityInstances.
/api/33/trackedEntityInstances
Syntaxe de la requête¶
Tableau : Paramètres de requête pour les instances d'entités suivies
| Paramètre de requête | Description |
|---|---|
| filtre | Attributs à utiliser comme filtre pour la requête. Le paramètre peut être répété autant de fois que nécessaire. Les filtres peuvent être appliqués à une dimension selon le format <attribute-id>:<operator>:<filter>[ :<operator>:<filter>]. Les valeurs du filtre sont insensibles à la casse et peuvent être répétées avec l'opérateur autant de fois que nécessaire. Les opérateurs peuvent être EQ |
| ou | Identifiants des unités d'organisation, séparés par des " ;". |
| ou Mode | Le mode de sélection des unités d'organisation. les différentes options sont SÉLECTIONNÉES |
| de paludisme) ». | Identifiant du programme. Il détermine le programme auquel les instances doivent être inscrites. |
| programStatus (statut de programme) | Statut de l'instance pour le programme donné. Peut être ACTIF |
| suivi | Statut du suivi de l'instance pour le programme donné. Peut être vrai, faux ou omis. |
| programStartDate | Date de début de l'inscription au programme donné pour l'instance d'entité suivie. |
| programEndDate | Date de fin de l'inscription au programme pour l'instance d'entité suivie. |
| Entité suivie | Identifiant de l'entité suivie ; il restreint les instances au type d'instance suivie donné. |
| page | Le numéro de page. La page par défaut est 1. |
| taille de la page | La taille de la page. La taille par défaut est de 50 lignes par page. |
| totalPages (pages totales) | Indique s'il faut inclure le nombre total de pages dans la réponse de pagination (ce qui implique un temps de réponse plus long). |
| skipPaging | Indique si la pagination doit être ignorée et si toutes les lignes doivent être renvoyées. |
| lastUpdatedStartDate | Filtre pour les TEI qui ont été mises à jour après cette date ; ne peut être utilisé avec lastUpdatedDuration. |
| lastUpdatedEndDate | Filtre pour les TEI qui ont été mises à jour jusqu'à cette date ; ne peut être utilisé avec lastUpdatedDuration. |
| lastUpdatedDuration (durée de la dernière mise à jour) | Ce paramètre inclut uniquement les éléments qui ont été mis à jour pendant la durée spécifiée. Le format est jj-hh-mm-ss, où "j" = jours, "h" = heures, "m" = minutes et "s" = secondes. Il ne peut pas être utilisé avec lastUpdatedStartDate et/ou lastUpdatedEndDate. |
| Mode utilisateur attribué | Restreint le résultat à la TEI dont les événements sont attribués en fonction du mode de sélection de l'utilisateur. Il peut s'a qui peut être CURRENT |
| assignedUser (Utilisateur assigné) | Permet de filtrer le résultat de manière à obtenir un ensemble limité de TEI avec des événements attribués aux UID donnés, en utilisant ceci : assignedUser=id1;id2. Ce paramètre ne sera pris en compte que si le assignedUserMode est PROVIDED ou null. L'API va générer une erreur si, par exemple, assignedUserMode=CURRENT et assignedUser=someId |
| trackedEntityInstance | Filtre le résultat de manière à obtenir un ensemble limité de TEI qui utilisent des uids d'instances d'entités suivies explicites. Vous pouvez le faire en utilisant ceci : trackedEntityInstance=id1;id2. Ce paramètre créera, au minimum, la limite externe des résultats, en constituant la liste de toutes les TEI à l'aide des uids fournis. Si d'autres paramètres/filtres de ce tableau sont utilisés, ils limiteront davantage les résultats à partir de la limite externe explicite. |
| includeDeleted | Indique s'il faut inclure ou non les fichiers supprimés de manière réversible. La valeur par défaut est "false". |
| potentialDuplicate (doublon potentiel) | Il est possible de filtrer le résultat en supposant qu'une TEI soit un doublon potentiel. true: renvoie les TEI marqués comme doublons potentiels. false: renvoie les TEI NON marqués comme doublons potentiels. En cas d'omission, nous ne vérifions pas si une TEI est un doublon potentiel ou pas. |
Les modes de sélection d'unités d'organisation disponibles sont expliqués dans le tableau suivant.
Tableau : Modes de sélection des unités d'organisation
| Mode | Description |
|---|---|
| SELECTED | Unités d'organisation définies dans la requête. |
| CHILDREN | Unités d'organisation sélectionnées et leurs subordonnées directs, c'est-à-dire les unités d'organisation au niveau inférieur. |
| DESCENDANTS | Unités d'organisation sélectionnées et tous leurs subordonnées, c'est-à-dire toutes les unités d'organisation qui leur sont inférieures dans la hiérarchie. |
| 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 | Les unités d'organisation de saisie de données associées à l'utilisateur actuel et toutes leurs subordonnées, c'est-à-dire toutes les unités d'organisation qui leur sont inférieures dans la hiérarchie. |
| ALL | Il s'agit de toutes les unités d'organisation du système. L'utilisateur doit disposer de l'autorité TOUS pour pouvoir l'utiliser. |
Les modes 'utilisateur attribué' disponibles sont expliqués dans le tableau suivant.
Tableau : Modes d'utilisateur assigné
| Mode | Description |
|---|---|
| ACTUEL | Inclut les événements attribués à l’utilisateur actuellement connecté. |
| FOURNI | Inclut les événements attribués à l’utilisateur fourni dans la requête. |
| AUCUNE | Inclut uniquement les événements non attribués. |
| TOUT | Inclut tous les événements attribués, peu importe à qui ils sont attribués. |
La requête n'est pas sensible à la casse. Les règles suivantes s'appliquent aux paramètres de la requête.
-
Au moins une unité d'organisation doit être spécifiée à l'aide de l'attribut ou. (un ou plusieurs), ou ouMode=ALL doit être spécifié.
-
Un seul des paramètres program et trackedEntity peut être spécifié (zéro ou un).
-
Si programStatus est spécifié, alors program doit également être spécifiés.
-
Si followUp est spécifié, alors program doit également être spécifié.
-
Si programStartDate ou programEndDate est spécifié, alors program doit également être spécifié.
-
Les éléments du filtre ne peuvent être spécifiés qu'une seule fois.
Une requête pour toutes les instances associées à une unité d'organisation spécifique peut ressembler à ceci :
/api/33/trackedEntityInstances.json?ou=DiszpKrYNg8
Pour lancer une requête pour des instances à l'aide d'un attribut avec filtre et d'un attribut sans filtre, avec une unité d'organisation en utilisant le mode de requête de l'unité d'organisation subordonnée, utilisez ceci :
/api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A
&filter=AMpUYgxuCaE&ou=DiszpKrYNg8;yMCshbaVExv
Une requête pour les instances où un attribut est inclus dans la réponse et où un attribut est utilisé comme filtre :
/api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A
&filter=AMpUYgxuCaE:LIKE:Road&ou=DiszpKrYNg8
Une requête dans laquelle plusieurs opérandes et filtres sont spécifiés pour un élément de filtre :
api/33/trackedEntityInstances.json?ou=DiszpKrYNg8&program=ur1Edk5Oe2n
&filter=lw1SqmMlnfh:GT:150:LT:190
Pour lancer une requête sur un attribut en utilisant plusieurs valeurs dans un filtre IN :
api/33/trackedEntityInstances.json?ou=DiszpKrYNg8
&filter=dv3nChNSIxy:IN:Scott;Jimmy;Santiago
Pour limiter la réponse aux instances qui font partie d'un programme spécifique, vous pouvez inclure un paramètre de requête de programme :
api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A&ou=O6uvpzGd5pu
&ouMode=DESCENDANTS&program=ur1Edk5Oe2n
Pour spécifier les dates d'inscription au programme dans la requête :
api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A&ou=O6uvpzGd5pu
&program=ur1Edk5Oe2n&programStartDate=2013-01-01&programEndDate=2013-09-01
Pour limiter la réponse aux instances d'une entité suivie spécifique, vous pouvez inclure un paramètre de requête d'entité suivie :
api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A&ou=O6uvpzGd5pu
&ouMode=DESCENDANTS&trackedEntity=cyl5vuJ5ETQ
Par défaut, les instances sont renvoyées dans des pages de taille 50. Pour modifier cela, vous pouvez utiliser les paramètres de requête de page et de taille de page (pageSize) :
api/33/trackedEntityInstances.json?filter=zHXD5Ve1Efw:EQ:A&ou=O6uvpzGd5pu
&ouMode=DESCENDANTS&page=2&pageSize=3
Vous pouvez utiliser une gamme d'opérateurs pour le filtrage :
Tableau : Opérateurs de filtre
| Opérateur | Description |
|---|---|
| EQ | Egale à |
| GT | Supérieure à |
| GE | Supérieure ou égal à |
| LT | Inférieur à |
| LE | inférieur ou égal à |
| NE | Pas égal à |
| LIKE | Free text match (Contains) |
| SW | Commence par |
| EW | Se termine par |
| IN | Égal à l'une des multiples valeurs séparées par ";" |
Format de la réponse¶
Cette ressource prend en charge les représentations JSON, JSONP, XLS et CSV.
-
json (application/json)
-
jsonp (application/javascript)
-
xml (application/xml)
La réponse en JSON/XML est au format objet et peut ressembler à ce qui suit. Le filtrage des champs est possible, donc si vous voulez un affichage complet, vous pouvez ajouter fields=* à la requête :
{
"trackedEntityInstances": [
{
"lastUpdated": "2014-03-28 12:27:52.399",
"trackedEntity": "cyl5vuJ5ETQ",
"created": "2014-03-26 15:40:19.997",
"orgUnit": "ueuQlqb8ccl",
"trackedEntityInstance": "tphfdyIiVL6",
"relationships": [],
"attributes": [
{
"displayName": "Address",
"attribute": "AMpUYgxuCaE",
"type": "string",
"value": "2033 Akasia St"
},
{
"displayName": "TB number",
"attribute": "ruQQnf6rswq",
"type": "string",
"value": "1Z 989 408 56 9356 521 9"
},
{
"displayName": "Weight in kg",
"attribute": "OvY4VVhSDeJ",
"type": "number",
"value": "68.1"
},
{
"displayName": "Email",
"attribute": "NDXw0cluzSw",
"type": "string",
"value": "LiyaEfrem@armyspy.com"
},
{
"displayName": "Gender",
"attribute": "cejWyOfXge6",
"type": "optionSet",
"value": "Female"
},
{
"displayName": "Phone number",
"attribute": "P2cwLGskgxn",
"type": "phoneNumber",
"value": "085 813 9447"
},
{
"displayName": "First name",
"attribute": "dv3nChNSIxy",
"type": "string",
"value": "Liya"
},
{
"displayName": "Last name",
"attribute": "hwlRTFIFSUq",
"type": "string",
"value": "Efrem"
},
{
"code": "Height in cm",
"displayName": "Height in cm",
"attribute": "lw1SqmMlnfh",
"type": "number",
"value": "164"
},
{
"code": "City",
"displayName": "City",
"attribute": "VUvgVao8Y5z",
"type": "string",
"value": "Kranskop"
},
{
"code": "State",
"displayName": "State",
"attribute": "GUOBQt5K2WI",
"type": "number",
"value": "KwaZulu-Natal"
},
{
"code": "Zip code",
"displayName": "Zip code",
"attribute": "n9nUvfpTsxQ",
"type": "number",
"value": "3282"
},
{
"code": "National identifier",
"displayName": "National identifier",
"attribute": "AuPLng5hLbE",
"type": "string",
"value": "465700042"
},
{
"code": "Blood type",
"displayName": "Blood type",
"attribute": "H9IlTX2X6SL",
"type": "string",
"value": "B-"
},
{
"code": "Latitude",
"displayName": "Latitude",
"attribute": "Qo571yj6Zcn",
"type": "string",
"value": "-30.659626"
},
{
"code": "Longitude",
"displayName": "Longitude",
"attribute": "RG7uGl4w5Jq",
"type": "string",
"value": "26.916172"
}
]
}
]
}
Requête de la grille d'instances d'entités suivies¶
Pour effectuer une requête sur les instances d'entités suivies, vous pouvez interagir avec la ressource /api/trackedEntityInstances/grid. Il existe deux types de requêtes : L'une où un paramètre de requête query et éventuellement des paramètres attribute sont définis, et l'autre où des paramètres attribute et filter sont définis. Ce point d'extrémité utilise un format de "grille" plus compact et constitue une alternative à la requête de la section précédente.
/api/33/trackedEntityInstances/query
Syntaxe de la requête{ #webapi_tei_grid_query_request_syntax }¶
Tableau : Paramètres de requête pour les instances d'entités suivies
| Paramètre de requête | Description |
|---|---|
| requête | Chaîne de requête. Le paramètre de requête "Attribute" peut être utilisé pour définir les attributs à inclure dans la réponse. Si aucun attribut n'est défini mais qu'un programme l'est, les attributs de ce programme seront utilisés. Si aucun programme n'est défini, tous les attributs seront utilisés. Il existe deux formats. Le premier est une chaîne de requête plan. Le second est au format |
| attribut | Attributs à inclure dans la réponse. Ce paramètre peut également être utilisé comme filtre pour la requête. Il peut être répété autant de fois que nécessaire. Les filtres peuvent être appliqués à une dimension selon le format <attribute-id>:<operator>:<filter>[:<operator>:<filter>]. Les valeurs des filtres sont insensibles à la casse et peuvent être répétées avec l'opérateur autant de fois que nécessaire. Les opérateurs peuvent être EQ |
| filtre | Attributs à utiliser comme filtre pour la requête. Le paramètre peut être répété autant de fois que nécessaire. Les filtres peuvent être appliqués à une dimension selon le format <attribute-id>:<operator>:<filter>[ :<operator>:<filter>]. Les valeurs du filtre sont insensibles à la casse et peuvent être répétées avec l'opérateur autant de fois que nécessaire. Les opérateurs peuvent être EQ |
| ou | Identifiants des unités d'organisation, séparés par des " ;". |
| ou Mode | Le mode de sélection des unités d'organisation. Les différentes options sont SELECTED (sélectionnées) |
| de paludisme) ». | Identifiant du programme. Il détermine le programme auquel les instances doivent être inscrites. |
| programStatus (statut de programme) | Statut de l'instance pour le programme donné. Peut être ACTIF |
| suivi | Statut du suivi de l'instance pour le programme donné. Peut être vrai, faux ou omis. |
| programStartDate | Date de début de l'inscription au programme donné pour l'instance d'entité suivie. |
| programEndDate | Date de fin de l'inscription au programme pour l'instance d'entité suivie. |
| Entité suivie | Identifiant de l'entité suivie ; il restreint les instances au type d'instance suivie donné. |
| eventStatus (statut d'événement) | Statut de tout événement associé au programme donné et à l'instance d'entité suivie. Il peut être ACTIVE (actif) |
| eventStartDate | Date de début de l'événement associé au programme et au statut de l'événement. |
| eventEndDate | Date de fin de l'événement associé au programme et au statut d'événement. |
| Étape du programme | L'étape de programme à laquelle les filtres relatifs à l'événement doivent être appliqués. Si ce paramètre n'est pas fourni, toutes les étapes seront prises en compte. |
| skipMeta (ignorer les métadonnées) | Indique si les métadonnées de la réponse doivent être incluses. |
| page | Le numéro de page. La page par défaut est 1. |
| taille de la page | La taille de la page. La taille par défaut est de 50 lignes par page. |
| totalPages (pages totales) | Indique s'il faut inclure le nombre total de pages dans la réponse de pagination (ce qui implique un temps de réponse plus long). |
| skipPaging | Indique si la pagination doit être ignorée et si toutes les lignes doivent être renvoyées. |
| Mode utilisateur attribué | Restreint le résultat à la TEI dont les événements sont attribués en fonction du mode de sélection de l'utilisateur. Il peut être CURRENT (actuel) |
| assignedUser (Utilisateur assigné) | Permet de filtrer le résultat de manière à obtenir un ensemble limité de TEI avec des événements attribués aux UID donnés, en utilisant ceci : assignedUser=id1;id2. Ce paramètre ne sera pris en compte que si le assignedUserMode est PROVIDED ou null. L'API va générer une erreur si, par exemple, assignedUserMode=CURRENT et assignedUser=someId |
| trackedEntityInstance | Filtre le résultat de manière à obtenir un ensemble limité de TEI qui utilisent des uids d'instances d'entités suivies explicites. Vous pouvez le faire en utilisant ceci : trackedEntityInstance=id1;id2. Ce paramètre créera, au minimum, la limite externe des résultats, en constituant la liste de toutes les TEI à l'aide des uids fournis. Si d'autres paramètres/filtres de ce tableau sont utilisés, ils limiteront davantage les résultats à partir de la limite externe explicite. |
| potentialDuplicate (doublon potentiel) | Il est possible de filtrer le résultat en supposant qu'une TEI soit un doublon potentiel. true: renvoie les TEI marqués comme doublons potentiels. false: renvoie les TEI NON marqués comme doublons potentiels. En cas d'omission, nous ne vérifions pas si une TEI est un doublon potentiel ou pas. |
Les modes de sélection d'unités d'organisation disponibles sont expliqués dans le tableau suivant.
Tableau : Modes de sélection des unités d'organisation
| Mode | Description |
|---|---|
| SELECTED | Unités d'organisation définies dans la requête. |
| CHILDREN | Subordonnées directs, c'est-à-dire les unités d'organisation qui se trouvent au niveau directement inférieur de celles définies dans la requête. |
| DESCENDANTS | Toutes les subordonnées, c'est-à-dire toutes les unités d'organisation qui se trouvent en dessous de celles définies dans la requête, y compris les subordonnées des subordonnées. |
| ACCESSIBLE | Tous les descendants des unités d'organisation de visualisation de données associées à l'utilisateur actuel. Si ce mode n'est pas défini, les unités d'organisation de saisie de données associées à l'utilisateur actuel seront utilisées. |
| CAPTURE | Les unités d'organisation de saisie de données associées à l'utilisateur actuel et toutes leurs subordonnées, c'est-à-dire toutes les unités d'organisation qui leur sont inférieures dans la hiérarchie. |
| ALL | All organisation units in the system. Requires authority. |
Vous pouvez spécifier "attribut" avec des filtres ou directement utiliser les paramètres de filtrage pour restreindre les instances à renvoyer.
Certaines règles s'appliquent aux attributs renvoyés.
-
Si "query" est spécifié sans aucun attribut ou programme, alors tous les attributs qui sont marqués comme "Afficher dans la liste sans programme" seront inclus dans la réponse.
-
Si le programme est spécifié, tous les attributs liés au programme seront inclus dans la réponse.
-
Si le type d'entité suivie est spécifié, alors tous les attributs du type entité suivie seront inclus dans la réponse.
Vous pouvez spécifier des requêtes avec des mots séparés par des espaces - dans ce cas, le système recherchera chaque mot indépendamment et renverra les enregistrements où chaque mot est contenu dans n'importe quel attribut. Un élément de requête peut être spécifié une fois en tant qu'attribut et une fois en tant que filtre si nécessaire. La requête est insensible à la casse. Les règles suivantes s'appliquent aux paramètres de requête.
-
Au moins une unité d'organisation doit être spécifiée à l'aide de l'attribut ou. (un ou plusieurs), ou ouMode=ALL doit être spécifié.
-
Un seul des paramètres program et trackedEntity peut être spécifié (zéro ou un).
-
Si programStatus est spécifié, alors program doit également être spécifiés.
-
Si followUp est spécifié, alors program doit également être spécifié.
-
Si programStartDate ou programEndDate est spécifié, alors program doit également être spécifié.
-
Si eventStatus est spécifié, alors eventStartDate et eventEndDate doivent également être spécifiés.
-
Une requête ne peut pas être spécifiée en même temps que des filtres.
-
Les éléments d'attributs ne peuvent être spécifiés qu'une seule fois.
-
Les éléments du filtre ne peuvent être spécifiés qu'une seule fois.
Une requête pour toutes les instances associées à une unité d'organisation spécifique peut ressembler à ceci :
/api/33/trackedEntityInstances/query.json?ou=DiszpKrYNg8
Une requête sur tous les attributs pour une valeur et une unité d'organisation spécifiques, en utilisant une correspondance exacte des mots :
/api/33/trackedEntityInstances/query.json?query=scott&ou=DiszpKrYNg8
Une requête sur tous les attributs pour une valeur spécifique, en utilisant un mot partiel :
/api/33/trackedEntityInstances/query.json?query=LIKE:scott&ou=DiszpKrYNg8
Vous pouvez effectuer une requête sur plusieurs mots séparés par le caractère URL pour l'espace (%20), ce qui utilisera une requête logique ET pour chaque mot :
/api/33/trackedEntityInstances/query.json?query=isabel%20may&ou=DiszpKrYNg8
Une requête dans laquelle sont spécifiés les attributs à inclure dans la réponse :
/api/33/trackedEntityInstances/query.json?query=isabel
&attribute=dv3nChNSIxy&attribute=AMpUYgxuCaE&ou=DiszpKrYNg8
Pour effectuer une requête sur des instances à l'aide d'un attribut avec filtre et d'un attribut sans filtre, avec une unité d'organisation en utilisant le mode de requête de l'unité d'organisation subordonnée, utilisez ceci :
/api/33/trackedEntityInstances/query.json?attribute=zHXD5Ve1Efw:EQ:A
&attribute=AMpUYgxuCaE&ou=DiszpKrYNg8;yMCshbaVExv
Une requête pour les instances où un attribut est inclus dans la réponse et où un attribut est utilisé comme filtre :
/api/33/trackedEntityInstances/query.json?attribute=zHXD5Ve1Efw:EQ:A
&filter=AMpUYgxuCaE:LIKE:Road&ou=DiszpKrYNg8
Une requête dans laquelle plusieurs opérandes et filtres sont spécifiés pour un élément de filtre :
/api/33/trackedEntityInstances/query.json?ou=DiszpKrYNg8&program=ur1Edk5Oe2n
&filter=lw1SqmMlnfh:GT:150:LT:190
Pour effectuer une requête sur un attribut en utilisant plusieurs valeurs dans un filtre IN :
/api/33/trackedEntityInstances/query.json?ou=DiszpKrYNg8
&attribute=dv3nChNSIxy:IN:Scott;Jimmy;Santiago
Pour limiter la réponse aux instances qui font partie d'un programme spécifique, vous pouvez inclure un paramètre de requête de programme :
/api/33/trackedEntityInstances/query.json?filter=zHXD5Ve1Efw:EQ:A
&ou=O6uvpzGd5pu&ouMode=DESCENDANTS&program=ur1Edk5Oe2n
Pour spécifier les dates d'inscription au programme dans la requête :
/api/33/trackedEntityInstances/query.json?filter=zHXD5Ve1Efw:EQ:A
&ou=O6uvpzGd5pu&program=ur1Edk5Oe2n&programStartDate=2013-01-01
&programEndDate=2013-09-01
Pour limiter la réponse aux instances d'une entité suivie spécifique, vous pouvez inclure un paramètre de requête d'entité suivie :
/api/33/trackedEntityInstances/query.json?attribute=zHXD5Ve1Efw:EQ:A
&ou=O6uvpzGd5pu&ouMode=DESCENDANTS&trackedEntity=cyl5vuJ5ETQ
Par défaut, les instances sont renvoyées dans des pages de taille 50. Pour modifier cela, vous pouvez utiliser les paramètres de requête de page et de taille de page (pageSize) :
/api/33/trackedEntityInstances/query.json?attribute=zHXD5Ve1Efw:EQ:A
&ou=O6uvpzGd5pu&ouMode=DESCENDANTS&page=2&pageSize=3
Pour effectuer une requête sur les instances qui ont des événements d'un statut donné dans un intervalle de temps donné :
/api/33/trackedEntityInstances/query.json?ou=O6uvpzGd5pu
&program=ur1Edk5Oe2n&eventStatus=COMPLETED
&eventStartDate=2014-01-01&eventEndDate=2014-09-01
Vous pouvez utiliser une gamme d'opérateurs pour le filtrage :
Tableau : Opérateurs de filtre
| Opérateur | Description |
|---|---|
| EQ | Egale à |
| GT | Supérieure à |
| GE | Supérieure ou égal à |
| LT | Inférieur à |
| LE | inférieur ou égal à |
| NE | Pas égal à |
| LIKE | Free text match (Contains) |
| SW | Commence par |
| EW | Se termine par |
| IN | Égal à l'une des multiples valeurs séparées par ";" |
Format de la réponse¶
Cette ressource prend en charge les représentations JSON, JSONP, XLS et CSV.
-
json (application/json)
-
jsonp (application/javascript)
-
xml (application/xml)
-
csv (application/csv)
-
xls (application/vnd.ms-excel)
La réponse au format JSON se présente sous la forme d'un tableau et peut ressembler à ce qui suit. La section headers décrit le contenu de chaque colonne. Les colonnes "instance", "créé", "dernière mise à jour", "unité d'organisation" et "entité suivie" sont toujours présentes. Les colonnes suivantes correspondent aux attributs spécifiés dans la requête. La section rows contient une ligne par instance.
{
"headers": [{
"name": "instance",
"column": "Instance",
"type": "java.lang.String"
}, {
"name": "created",
"column": "Created",
"type": "java.lang.String"
}, {
"name": "lastupdated",
"column": "Last updated",
"type": "java.lang.String"
}, {
"name": "ou",
"column": "Org unit",
"type": "java.lang.String"
}, {
"name": "te",
"column": "Tracked entity",
"type": "java.lang.String"
}, {
"name": "zHXD5Ve1Efw",
"column": "Date of birth type",
"type": "java.lang.String"
}, {
"name": "AMpUYgxuCaE",
"column": "Address",
"type": "java.lang.String"
}],
"metaData": {
"names": {
"cyl5vuJ5ETQ": "Person"
}
},
"width": 7,
"height": 7,
"rows": [
["yNCtJ6vhRJu", "2013-09-08 21:40:28.0", "2014-01-09 19:39:32.19", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "21 Kenyatta Road"],
["fSofnQR6lAU", "2013-09-08 21:40:28.0", "2014-01-09 19:40:19.62", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "56 Upper Road"],
["X5wZwS5lgm2", "2013-09-08 21:40:28.0", "2014-01-09 19:40:31.11", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "56 Main Road"],
["pCbogmlIXga", "2013-09-08 21:40:28.0", "2014-01-09 19:40:45.02", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "12 Lower Main Road"],
["WnUXrY4XBMM", "2013-09-08 21:40:28.0", "2014-01-09 19:41:06.97", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "13 Main Road"],
["xLNXbDs9uDF", "2013-09-08 21:40:28.0", "2014-01-09 19:42:25.66", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "14 Mombasa Road"],
["foc5zag6gbE", "2013-09-08 21:40:28.0", "2014-01-09 19:42:36.93", "DiszpKrYNg8", "cyl5vuJ5ETQ", "A", "15 Upper Hill"]
]
}
Filtres d'instances d'entités suivies¶
Pour créer, lire, mettre à jour et supprimer des filtres d'instances d'entités suivies, vous pouvez interagir avec la ressource /api/trackedEntityInstanceFilters. Les filtres d'instances d'entités suivies peuvent être partagés et suivent le même modèle de partage que tout autre objet de métadonnées. En utilisant /api/sharing, le paramètre de type sera trackedEntityInstanceFilter.
/api/33/trackedEntityInstanceFilters
Créer et mettre à jour une définition de filtre d'instance d'entité suivie¶
Pour créer et mettre à jour un filtre d'instance d'entité suivie dans le système, vous devez utiliser la ressource trackedEntityInstanceFilters. Les définitions des filtres d'instances d'entités suivies sont utilisées dans l'application Saisie Tracker pour afficher les "listes de tâches" prédéfinies pertinentes sur l'interface utilisateur du Tracker.
Tableau : Charge utile
| Valeurs de charge utile | Description | Exemple |
|---|---|---|
| nom | Nom du filtre. Obligatoire. | |
| Description | Une description du filtre. | |
| sortOrder (ordre de tri) | Ordre de tri du filtre ; utilisé dans Saisie Tracker pour ordonner les filtres dans le tableau de bord du programme. | |
| style | Objet contenant un style css. | ( "color": "blue", "icon": "fa fa-calendar"} |
| de paludisme) ». | Objet contenant l'identifiant du programme. Obligatoire. | { "id" : "uy2gU8kTjF"} |
| entityQueryCriteria | Un objet représentant diverses valeurs de filtrage possibles. Voir le tableau de définition des Critères de requête d'entité ci-dessous. | |
| eventFilters | Une liste de filtres d'événements. Voir le tableau de définition des filtres d'événements ci-dessous. | [{"programStage": "eaDH9089uMp", "eventStatus": "OVERDUE", "eventCreatedPeriod": {"periodFrom": -15, "periodTo": 15}}] |
Tableau : Définition des critères de requêtes sur les entités
| Filtres de valeurs d'attributs | Une liste de filtres de valeurs d'attribut. Elle est utilisée pour spécifier des filtres pour les valeurs d'attributs lors de l'établissement de la liste des instances d'entités suivies. | "attributeValueFilters"=[{ "attribute": "abcAttributeUid", "le": "20", "ge": "10", "lt": "20", "gt": "10", "in": ["India", "Norway"], "like": "abc", "sw": "abc", "ew": "abc", "dateFilter": { "startDate": "2014-05-01", "endDate": "2019-03-20", "startBuffer": -5, "endBuffer": 5, "period": "LAST_WEEK", "type": "RELATIVE" } }] |
| Statut de l'inscription | Statut de l'inscription des TEI. Cette valeur peut être "none"(n'importe quel statut d'inscription) ou ACTIVE (active) | COMPLETED (terminée) |
| followup | Lorsque ce paramètre est définie sur "true", le filtre ne renvoie que les TEI dont le statut d'inscription est followup (suivi). | |
| organisationUnit | Utilisée pour spécifier l'identifiant de l'unité d'organisation | "organisationUnit": "a3kGcGDCuk7" |
| ou Mode | Utilisée pour spécifier le mode de sélection des unités d'organisation. Les valeurs possibles sont SELECTED | CHILDREN |
| Mode utilisateur attribué | Utilisée pour spécifier le mode de sélection de l'utilisateur pour les événements. Les valeurs possibles sont CURRENT | PROVIDED |
| assignedUser (Utilisateur assigné) | Utilisée pour spécifier une liste d'utilisateurs assignés à des événements. À utiliser avec le mode d'utilisateur assigné PROVIDED ci-dessus. | "assignedUsers": ["a3kGcGDCuk7", "a3kGcGDCuk8"] |
| Afficher l'ordre des colonnes | Utilisée pour spécifier l'ordre de sortie des colonnes | "displayOrderColumns": ["enrollmentDate", "program"] |
| Ordre | To specify ordering/sorting of fields and its directions in comma separated values. A single item in order is of the form "orderDimension:direction". Note: Supported orderDimensions are trackedEntity, created, createdAt, createdAtClient, updatedAt, updatedAtClient, enrolledAt, inactive and the tracked entity attributes | "order"="a3kGcGDCuk6:desc" |
| eventStatus (statut d'événement) | Tout statut d'événement valide | "eventStatus": "COMPLETED" |
| Étape du programme | Utilisée pour spécifier un uid d'étape de programme sur lequel effectuer le filtrage. Les TEI seront filtrés si elles disposent d'une inscription à l'étape de programme spécifiée. | "programStage"="a3kGcGDCuk6" |
| TrackedEntityType (Type d'entité suivie) | Utilisée pour spécifier un filtre de type d'entité suivie lors sur les TEI. | "trackedEntityType"="a3kGcGDCuk6" |
| trackedEntityInstances | Utilisée pour spécifier une liste d'instances d'entités suivies à utiliser lors des requêtes sur les TEI. | "trackedEntityInstances"=["a3kGcGDCuk6","b4jGcGDCuk7"] |
| enrollmentIncidentDate | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date d'incident de l'inscription. | "enrollmentIncidentDate": { "startDate": "2014-05-01", "endDate": "2019-03-20", "startBuffer": -5, "endBuffer": 5, "period": "LAST_WEEK", "type": "RELATIVE" } |
| eventDate (date de l'événement) | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date de l'événement. | "eventDate": { "startBuffer": -5, "endBuffer": 5, "type": "RELATIVE" } |
| enrollmentCreatedDate | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date de création de l'inscription. | "enrollmentCreatedDate": { "period": "LAST_WEEK", "type": "RELATIVE" } |
| lastUpdatedDate | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date de la dernière mise à jour. | "lastUpdatedDate": { "startDate": "2014-05-01", "endDate": "2019-03-20", "type": "ABSOLUTE" } |
Tableau : Définition des filtres d'événements
| Étape du programme | L'étape de programme dans laquelle la TEI a besoin d'un événement pour être renvoyée. | "eaDH9089uMp" |
| eventStatus (statut d'événement) | Le statut de l'événement ; peut être "none" (n'importe quel statut d'événement) ou ACTIVE | COMPLETED |
| eventCreatedPeriod | Objet période contenant une période au cours de laquelle l'événement doit être créé. Voir la définition de Période ci-dessous. | { "periodFrom": -15, "periodTo": 15} |
| Mode utilisateur attribué | Utilisée pour spécifier le mode de sélection des utilisateurs assignés à des événements. Les valeurs possibles sont CURRENT (événements attribués à l'utilisateur actuel) | PROVIDED (événements attribués aux utilisateurs figurant dans la liste "assignedUsers") |
| assignedUser (Utilisateur assigné) | Utilisée pour spécifier une liste d'utilisateurs assignés à des événements. À utiliser avec le mode d'utilisateur assigné PROVIDED ci-dessus. | "assignedUsers": ["a3kGcGDCuk7", "a3kGcGDCuk8"] |
Tableau : Définition de l'objet DateFilterPeriod
| type | Spécifie si le type de période "date" est ABSOLUTE (absolu) ou RELATIVE (relatif) | "type" : "RELATIVE" |
| période | Spécifie si une période relative doit être utilisée. Ceci est applicable uniquement lorsque "type" est RELATIVE. (voir la section Périodes relatives pour consulter les périodes relatives prises en charge) | "period" : "THIS_WEEK" |
| date de début | Date de début absolue ; applicable uniquement lorsque le "type" est ABSOLUTE. | "startDate":"2014-05-01" |
| date de fin | Date de fin absolue ; applicable uniquement lorsque le "type" est ABSOLUTE. | "startDate":"2014-05-01" |
| startBuffer | Date de début personnalisée relative ; applicable uniquement lorsque le "type" est RELATIVE. | "startBuffer":-10 |
| endBuffer | Date de fin personnalisée relative ; applicable uniquement lorsque le "type" est RELATIVE. | "startDate":+10 |
Tableau : Définition de la période
| periodFrom | Nombre de jours à partir du jour actuel. Il peut s'agir d'un nombre entier positif ou négatif. | -15 |
| periodTo | Nombre de jours à partir du jour actuel. Doit être supérieur à periodFrom. Peut être un nombre entier positif ou négatif. | 15 |
Requête sur les filtres d'instances d'entités suivie¶
Pour rechercher des filtres d'instances d'entités suivies dans le système, vous pouvez interagir avec la ressource /api/trackedEntityInstanceFilters.
Tableau : Paramètres de requête pour les filtres d'instances d'entités suivies
| Paramètre de requête | Description |
|---|---|
| de paludisme) ». | Identifiant du programme. Il limite le filtrage au programme donné. |
Gestion des inscriptions¶
Les inscriptions bénéficient d'une prise en charge CRUD complète dans l'API. Avec l'API des instances d'entités suivies, la plupart des opérations nécessaires pour travailler avec les instances d'entités suivies et les programmes sont prises en charge.
/api/33/enrollments
Inscription d'une instance d'entité suivie à un programme¶
Pour inscrire des personnes à un programme, vous devez d'abord obtenir l'identifiant de la personne à partir de la ressource trackedEntityInstances. Ensuite, vous devez obtenir l'identifiant du programme à partir de la ressource programs. Un modèle de charge utile est présenté ci-dessous :
{
"trackedEntityInstance": "ZRyCnJ1qUXS",
"orgUnit": "ImspTQPwCqd",
"program": "S8uo8AlvYMz",
"enrollmentDate": "2013-09-17",
"incidentDate": "2013-09-17"
}
Cette charge doit être utilisée dans une requête POST à la ressource des inscriptions identifiée par l'URL suivante :
/api/33/enrollments
Les différents statuts d'une inscription sont les suivants :
- ACTIVE : Il est utilisé lorsque lorsque l'entité suivie participe au programme.
- COMPLETED : utilisé lorsque l'entité suivie a terminé sa participation au programme.
- CANCELLED : "Désactivé" dans l'interface web. Il est utilisé lorsque l'entité suivie a annulé sa participation au programme.
Pour annuler ou terminer une inscription, vous pouvez adresser une requête PUT à la ressource enrollments, en indiquant l'identifiant de l'inscription et l'action que vous voulez réaliser. Pour annuler une inscription pour une entité suivie :
/api/33/enrollments/<enrollment-id>/cancelled
Pour terminer l'inscription d'une instance d'entité suivie, vous pouvez envoyez une requête PUT à l'URL suivante :
/api/33/enrollments/<enrollment-id>/completed
Pour supprimer une inscription, vous pouvez envoyer une requête DELETE à l'URL suivante :
/api/33/enrollments/<enrollment-id>
Requête pour l'instance d'inscription¶
Pour rechercher des inscriptions, vous pouvez interagir avec la ressource /api/enrollments.
/api/33/enrollments
Syntaxe de la requête¶
Tableau : Paramètres de la requête d'inscription
| Paramètre de requête | Description |
|---|---|
| ou | Identifiants des unités d'organisation, séparés par des " ;". |
| ou Mode | Le mode de sélection des unités d'organisation. Les différentes options sont SELECTED (sélectionnées) |
| de paludisme) ». | Identifiant du programme. Il détermine le programme auquel les instances doivent être inscrites. |
| programStatus (statut de programme) | Statut de l'instance pour le programme donné. Peut être ACTIF |
| suivi | Statut du suivi de l'instance pour le programme donné. Peut être vrai, faux ou omis. |
| programStartDate | Date de début de l'inscription au programme donné pour l'instance d'entité suivie. |
| programEndDate | Date de fin de l'inscription au programme pour l'instance d'entité suivie. |
| lastUpdatedDuration (durée de la dernière mise à jour) | Inclure uniquement les éléments qui ont été mis à jour pendant la durée spécifiée. Le format est , où les unités de temps prises en charge sont "j" (jours), "h" (heures), "m" (minutes) et "s" (secondes). |
| Entité suivie | Identifiant de l'entité suivie ; il restreint les instances au type d'instance suivie donné. |
| trackedEntityInstance | Identifiant de l'instance d'entité suivie. Il ne doit pas être utilisé en même temps que trackedEntity. |
| page | Le numéro de page. La page par défaut est 1. |
| taille de la page | La taille de la page. La taille par défaut est de 50 lignes par page. |
| totalPages (pages totales) | Indique s'il faut inclure le nombre total de pages dans la réponse de pagination (ce qui implique un temps de réponse plus long). |
| skipPaging | Indique si la pagination doit être ignorée et si toutes les lignes doivent être renvoyées. |
| includeDeleted | Indique s'il faut inclure ou non les inscriptions supprimés de manière réversible. La valeur par défaut est "false". |
Les modes de sélection d'unités d'organisation disponibles sont expliqués dans le tableau suivant.
Tableau : Modes de sélection des unités d'organisation
| Mode | Description |
|---|---|
| SELECTED | Unités d'organisation définies dans la requête (par défaut). |
| CHILDREN | Subordonnées directs, c'est-à-dire les unités d'organisation qui se trouvent au niveau directement inférieur de celles définies dans la requête. |
| DESCENDANTS | Toutes les subordonnées, c'est-à-dire toutes les unités d'organisation qui se trouvent en dessous de celles définies dans la requête, y compris les subordonnées des subordonnées. |
| ACCESSIBLE | Tous les descendants des unités d'organisation de visualisation de données associées à l'utilisateur actuel. Si ce mode n'est pas défini, les unités d'organisation de saisie de données associées à l'utilisateur actuel seront utilisées. |
| ALL | All organisation units in the system. Requires authority. |
La requête n'est pas sensible à la casse. Les règles suivantes s'appliquent aux paramètres de la requête.
-
Au moins une unité d'organisation doit être spécifiée à l'aide de l'attribut ou. (un ou plusieurs), ou ouMode=ALL doit être spécifié.
-
Un seul des paramètres program et trackedEntity peut être spécifié (zéro ou un).
-
Si programStatus est spécifié, alors program doit également être spécifiés.
-
Si followUp est spécifié, alors program doit également être spécifié.
-
Si programStartDate ou programEndDate est spécifié, alors program doit également être spécifié.
Une requête pour toutes les inscriptions associées à une unité d'organisation spécifique peut ressembler à ceci :
/api/33/enrollments.json?ou=DiszpKrYNg8
Pour limiter la réponse aux inscriptions qui font partie d'un programme spécifique, vous pouvez inclure un paramètre de requête de programme :
/api/33/enrollments.json?ou=O6uvpzGd5pu&ouMode=DESCENDANTS&program=ur1Edk5Oe2n
Pour spécifier les dates d'inscription au programme dans la requête :
/api/33/enrollments.json?&ou=O6uvpzGd5pu&program=ur1Edk5Oe2n
&programStartDate=2013-01-01&programEndDate=2013-09-01
Pour limiter la réponse aux inscriptions d'une entité suivie spécifique, vous pouvez inclure un paramètre de requête d'entité suivie :
/api/33/enrollments.json?ou=O6uvpzGd5pu&ouMode=DESCENDANTS&trackedEntity=cyl5vuJ5ETQ
Pour limiter la réponse aux inscriptions d'une entité suivie spécifique, vous pouvez inclure un paramètre de requête d'instance d'entité suivie. Dans ce cas, nous avons limité la réponse aux inscriptions disponibles pour l'utilisateur actuel :
/api/33/enrollments.json?ouMode=ACCESSIBLE&trackedEntityInstance=tphfdyIiVL6
Par défaut, les inscriptions sont renvoyées dans des pages de taille 50. Pour modifier cela, vous pouvez utiliser les paramètres de requête 'page' et 'taille de page' (pageSize) :
/api/33/enrollments.json?ou=O6uvpzGd5pu&ouMode=DESCENDANTS&page=2&pageSize=3
Format de la réponse¶
Cette ressource prend en charge les représentations JSON, JSONP, XLS et CSV.
-
json (application/json)
-
jsonp (application/javascript)
-
xml (application/xml)
La réponse en JSON/XML est au format objet et peut ressembler à ce qui suit. Le filtrage des champs est possible, donc si vous voulez un affichage complet, vous pouvez ajouter fields=* à la requête :
{
"enrollments": [
{
"lastUpdated": "2014-03-28T05:27:48.512+0000",
"trackedEntity": "cyl5vuJ5ETQ",
"created": "2014-03-28T05:27:48.500+0000",
"orgUnit": "DiszpKrYNg8",
"program": "ur1Edk5Oe2n",
"enrollment": "HLFOK0XThjr",
"trackedEntityInstance": "qv0j4JBXQX0",
"followup": false,
"enrollmentDate": "2013-05-23T05:27:48.490+0000",
"incidentDate": "2013-05-10T05:27:48.490+0000",
"status": "ACTIVE"
}
]
}
Événements¶
Cette section traite de l'envoi et de la lecture d'événements.
/api/33/events
Les différents statuts d'un événement sont les suivants :
- ACTIVE : Si un événement a le statut ACTIVE, il est possible de modifier les détails de l'événement. Les événements de statut COMPLETED peuvent devenir ACTIVE à nouveau et vice versa.
- COMPLETED : Un événement ne prend le statut COMPLETED que lorsqu'un utilisateur clique sur le bouton "Terminer". Si un événement a le statut COMPLETED, ses informations ne peuvent pas être modifiées. Les événements de statut ACTIVE peuvent devenir COMPLETED à nouveau et vice versa.
- SKIPPED : Événements programmés qui n'ont plus lieu d'être. Dans l'application Saisie Tracker, un bouton est dédié à ce paramètre.
- SCHEDULE : Si un événement n'a pas de date d'événement (mais qu'il a une date d'échéance), le statut de l'événement est sauvegardé en tant SCHEDULE.
- OVERDUE (en retard) : Si la date d'échéance d'un événement planifié (sans date d'événement) a expiré, l'événement peut être considéré comme étant en retard.
- VISITED (visité) : (Ce statut est supprimé depuis la version 2.38. Il a migré vers ACTIVE). Dans l'application Saisie Tracker, il est possible d'atteindre le statut VISITED en ajoutant un nouvel événement avec une date d'événement, puis de le quitter avant d'y ajouter des données - l'équipe du Tracker ne remarquera pas qu'un utilisateur a fait usage de ce statut pour une raison quelconque. Le statut VISITED n'est pas visible dans l'interface utilisateur et est traité de la même manière qu'un événement de statut "ACTIVE".
Envoi d'événements¶
DHIS2 prend en charge trois types d'événements : les événements uniques sans enregistrement (également appelés événements anonymes), les événements uniques avec enregistrement et les événements multiples avec enregistrement. L'enregistrement implique que les données sont rattachées à une instance d'entité suivie qui est identifiée à l'aide d'un identifiant.
Pour envoyer des événements à DHIS2, vous devez interagir avec la ressource events. L'approche utilisée pour envoyer des événements est similaire à celle utilisée pour envoyer des valeurs de données agrégées. Vous aurez besoin d'un programme qui peut être recherché à l'aide de la ressource programs, d'une unité d'organisation qui peut être recherchée à l'aide de la ressource organisationUnits, et d'une liste d'identifiants d'éléments de données valides qui peuvent être recherchés à l'aide de la ressource dataElements. Pour les événements avec enregistrement, un identifiant d'instance d'entité suivie est nécessaire. Pour savoir comment l'obtenir, consultez la section sur la ressource trackedEntityInstances. Pour envoyer des événements à des programmes comportant plusieurs étapes, il vous faudra également inclure l'identifiant programStage (étape de programme). Les identifiants des étapes de programme se trouvent dans la ressource programStages.
Voici un exemple simple d'événement unique sans enregistrement au format XML. Dans cet exemple, nous envoyons vers la base de données de démonstration, des événements du programme "Morbidité et mortalité des patients hospitalisés" pour l'établissement "Ngelehun CHC" :
<?xml version="1.0" encoding="utf-8"?>
<event program="eBAyeGv0exc" orgUnit="DiszpKrYNg8"
eventDate="2013-05-17" status="COMPLETED" storedBy="admin">
<coordinate latitude="59.8" longitude="10.9" />
<dataValues>
<dataValue dataElement="qrur9Dvnyt5" value="22" />
<dataValue dataElement="oZg33kd9taw" value="Male" />
<dataValue dataElement="msodh3rEMJa" value="2013-05-18" />
</dataValues>
</event>
Pour faire des tests, nous pouvons enregistrer la charge XML dans un fichier appelé event.xml et l'envoyer sous la forme d'une requête POST à la ressource "events" de l'API à l'aide de curl et de la commande suivante :
curl -d @event.xml "https://play.dhis2.org/demo/api/33/events"
-H "Content-Type:application/xml" -u admin:district
La même charge au format JSON se présente comme suit :
{
"program": "eBAyeGv0exc",
"orgUnit": "DiszpKrYNg8",
"eventDate": "2013-05-17",
"status": "COMPLETED",
"completedDate": "2013-05-18",
"storedBy": "admin",
"coordinate": {
"latitude": 59.8,
"longitude": 10.9
},
"dataValues": [
{
"dataElement": "qrur9Dvnyt5",
"value": "22"
},
{
"dataElement": "oZg33kd9taw",
"value": "Male"
},
{
"dataElement": "msodh3rEMJa",
"value": "2013-05-18"
}
]
}
Pour l'envoyer, vous pouvez l'enregistrer dans un fichier appelé event.json et utiliser curl comme suit :
curl -d @event.json "localhost/api/33/events" -H "Content-Type:application/json"
-u admin:district
Nous pouvons également envoyer plusieurs événements en même temps. Une charge au format XML pourrait ressembler à ceci :
<?xml version="1.0" encoding="utf-8"?>
<events>
<event program="eBAyeGv0exc" orgUnit="DiszpKrYNg8"
eventDate="2013-05-17" status="COMPLETED" storedBy="admin">
<coordinate latitude="59.8" longitude="10.9" />
<dataValues>
<dataValue dataElement="qrur9Dvnyt5" value="22" />
<dataValue dataElement="oZg33kd9taw" value="Male" />
</dataValues>
</event>
<event program="eBAyeGv0exc" orgUnit="DiszpKrYNg8"
eventDate="2013-05-17" status="COMPLETED" storedBy="admin">
<coordinate latitude="59.8" longitude="10.9" />
<dataValues>
<dataValue dataElement="qrur9Dvnyt5" value="26" />
<dataValue dataElement="oZg33kd9taw" value="Female" />
</dataValues>
</event>
</events>
Vous recevrez un récapitulatif de l'importation avec la réponse qui peut être inspecté afin d'obtenir des informations sur le résultat de la requête, par exemple le nombre de valeurs qui ont été importées avec succès. La charge au format JSON ressemble à ceci :
{
"events": [
{
"program": "eBAyeGv0exc",
"orgUnit": "DiszpKrYNg8",
"eventDate": "2013-05-17",
"status": "COMPLETED",
"storedBy": "admin",
"coordinate": {
"latitude": "59.8",
"longitude": "10.9"
},
"dataValues": [
{
"dataElement": "qrur9Dvnyt5",
"value": "22"
},
{
"dataElement": "oZg33kd9taw",
"value": "Male"
}
]
},
{
"program": "eBAyeGv0exc",
"orgUnit": "DiszpKrYNg8",
"eventDate": "2013-05-17",
"status": "COMPLETED",
"storedBy": "admin",
"coordinate": {
"latitude": "59.8",
"longitude": "10.9"
},
"dataValues": [
{
"dataElement": "qrur9Dvnyt5",
"value": "26"
},
{
"dataElement": "oZg33kd9taw",
"value": "Female"
}
]
} ]
}
Vous pouvez également utiliser GeoJson pour stocker tout type de géométrie sur votre événement. Voici un exemple de charge utilisant GeoJson et non les anciennes propriétés de latitude et de longitude :
{
"program": "eBAyeGv0exc",
"orgUnit": "DiszpKrYNg8",
"eventDate": "2013-05-17",
"status": "COMPLETED",
"storedBy": "admin",
"geometry": {
"type": "POINT",
"coordinates": [59.8, 10.9]
},
"dataValues": [
{
"dataElement": "qrur9Dvnyt5",
"value": "22"
},
{
"dataElement": "oZg33kd9taw",
"value": "Male"
},
{
"dataElement": "msodh3rEMJa",
"value": "2013-05-18"
}
]
}
Le récapitulatif de l'importation contient également l'identifiant reference de l'événement que vous venez d'envoyer, ainsi qu'un élément href qui indique l'emplacement du serveur de cet événement. Le tableau ci-dessous décrit la signification de chaque élément.
Tableau : Format de la ressource des événements
| Paramètre | Type | Obligatoire | Options (par défaut en premier) | Description |
|---|---|---|---|---|
| de paludisme) ». | chaîne | vrai | Identifiant de l'événement unique sans enregistrement | |
| orgUnit (Unité d'organisation) | chaîne | vrai | Identifiant de l'unité d'organisation où l'événement a eu lieu | |
| eventDate (date de l'événement) | date | vrai | La date à laquelle l'événement s'est produit | |
| completedDate | date | faux | La date à laquelle l'événement se termine. Si elle n'est pas fournie, la date du jour est sélectionnée comme date de fin de l'événement. | |
| statut | enum | faux | ACTIVE | COMPLETED |
| Stocké par | chaîne | faux | Par défaut, il s'agit de l'utilisateur actuel | L'utilisateur qui a stocké cet événement (peut être le nom d'utilisateur, le nom du système, etc.) |
| coordinate | double | faux | Fait référence à l'emplacement géographique où l'événement a eu lieu (latitude et longitude). | |
| élément de données | chaîne | vrai | Identifiant de l'élément de données | |
| valeur | chaîne | vrai | Valeur des données ou mesure pour cet événement |
Correspondance des unités d'organisation (paramètre orgUnit)¶
Par défaut, le paramètre orgUnit correspondra à l'identifiant. Vous pouvez également sélectionner le schéma de correspondance de l'identifiant de l'unité d'organisation en utilisant le paramètre orgUnitIdScheme=SCHEME, où les options sont : ID, UID, UUID, CODE et NAME. Il existe également le schéma ATTRIBUTE:, qui correspond à une valeur d'attribut de métadonnées unique.
Mise à jour des événements¶
Pour mettre à jour un événement existant, le format de la charge reste le même, mais il faudra ajouter l'identifiant à la fin de la chaîne de l'URL à laquelle vous adressez la requête, et la requête doit être de type PUT.
La charge doit contenir tous les attributs, même ceux qui n'ont pas été modifiés. Les attributs qui étaient présents auparavant et qui ne sont plus présents dans la charge actuelle seront supprimés par le système.
Il n'est pas autorisé de mettre à jour un événement déjà supprimé. Il en va de même pour les instances d'entité suivie et les inscriptions.
curl -X PUT -d @updated_event.xml "localhost/api/33/events/ID"
-H "Content-Type: application/xml" -u admin:district
curl -X PUT -d @updated_event.json "localhost/api/33/events/ID"
-H "Content-Type: application/json" -u admin:district
Suppression des événements¶
Pour supprimer un événement existant, il suffit d'envoyer une requête DELETE avec une référence d'identifiant au serveur que vous utilisez.
curl -X DELETE "localhost/api/33/events/ID" -u admin:district
Affectation d'un utilisateur à un événement¶
Un utilisateur peut être affecté à un événement. Pour ce faire, il suffit d'inclure la propriété appropriée dans la charge lors de la mise à jour ou de la création de l'événement.
"assignedUser": "<id>"
L'id fait référence à l'identifiant de l'utilisateur. Un seul utilisateur peut être affecté à un événement à la fois.
L'affectation des utilisateurs doit être activée dans la phase de programmation avant que les utilisateurs puissent être affectés à des événements.
Obtenir des événements¶
Pour obtenir un événement existant, vous pouvez envoyer une requête GET comprenant l'identifiant comme ceci :
curl "http://localhost/api/33/events/ID" -H "Content-Type: application/xml" -u admin:district
Interroger et lire des événements¶
Cette section explique comment lire les événements qui ont été stockés dans l'instance DHIS2. Pour pouvoir utiliser les données d'événements de manière plus avancée, veuillez consulter la section consacrée à l'analyse des événements. Le format de sortie du point d'extrémité /api/events correspondra au format utilisé pour lui envoyer des événements (ce format n'est pas pris en charge par l'api d'analyse d'événements). Les formats XML et JSON sont pris en charge. Pour pouvoir les utiliser, il suffit d'ajouter un fichier .json/.xml ou de définir l'en-tête Accept approprié. La requête est paginée par défaut et la taille de la page par défaut est de 50 événements. Le filtrage par champs fonctionne comme avec les métadonnées ; ajoutez le paramètre fields et spécifiez les propriétés que vous voulez, ce qui nous donne fields=program,status.
Tableau : Paramètres de requête de la ressource des événements
| Clé | Type | Obligatoire | Description |
|---|---|---|---|
| de paludisme) ». | identifiant | true (if not programStage is provided) | Identifiant du programme |
| Étape du programme | identifiant | faux | Identifiant de l'étape de programme |
| programStatus (statut de programme) | enum | faux | Statut de l'événement dans le programme ; peut être ACTIVE |
| suivi | booléen | faux | Détermine si l'événement est pris en compte pour le suivi dans le programme ; peut être vrai |
| trackedEntityInstance | identifiant | faux | Identifiant de l'instance d'entité suivie |
| orgUnit (Unité d'organisation) | identifiant | vrai | Identifiant de l'unité d'organisation |
| ou Mode | enum | faux | Mode de sélection de l'unité d'organisation ; peut être SELECTED |
| date de début | date | faux | Seulement les événements plus récents que cette date |
| date de fin | date | faux | Uniquement les événements antérieurs à cette date |
| statut | enum | faux | Statut de l'événement, peut être ACTIVE |
| lastUpdatedStartDate | date | faux | Filtre pour les événements qui ont été mises à jour après cette date ; ne peut être utilisé avec lastUpdatedDuration. |
| lastUpdatedEndDate | date | faux | Filtre pour les événements qui ont été mises à jour jusqu'à cette date ; ne peut être utilisé avec lastUpdatedDuration. |
| lastUpdatedDuration (durée de la dernière mise à jour) | chaîne | faux | Ce paramètre inclut uniquement les éléments qui ont été mis à jour pendant la durée spécifiée. Le format est jj-hh-mm-ss, où "j" = jours, "h" = heures, "m" = minutes et "s" = secondes. Il ne peut pas être utilisé avec lastUpdatedStartDate et/ou lastUpdatedEndDate. |
| skipMeta (ignorer les métadonnées) | booléen | faux | Exclut la partie métadonnées de la réponse (améliore les performances) |
| page | entier | faux | Numéro de page |
| taille de la page | entier | faux | Nombre d'éléments dans chaque page |
| totalPages (pages totales) | booléen | faux | Indique s'il faut inclure le nombre total de pages dans la réponse de pagination. |
| skipPaging | booléen | faux | Indique s'il faut ignorer la pagination dans la requête et renvoyer tous les événements. |
| dataElementIdScheme (Schéma d'identifiant d'élément de données) | chaîne | faux | Schéma d'identification des éléments de données à utiliser pour l'exportation. Les options valides sont UID, CODE et ATTRIBUTE :{ID} |
| categoryOptionComboIdScheme (Schéma de l'identifiant de la combinaison d'options de catégorie) | chaîne | faux | Schéma d'identification des combinaisons d'options d'attribut à utiliser pour l'exportation. Les options valides sont UID, CODE et ATTRIBUTE :{ID} |
| orgUnitIdScheme (Schéma de l'identifiant de l'unité d'organisation) | chaîne | faux | Schéma d'identification des unités d'organisation à utiliser pour l'exportation. Les options valides sont UID, CODE et ATTRIBUTE :{ID} |
| programIdScheme (Schéma d'identification du programme) | chaîne | faux | Schéma d'identification des programmes à utiliser pour l'exportation. Les options valides sont UID, CODE et ATTRIBUTE :{ID} |
| programmeStageIdScheme (Schéma d'identification de l'étape de programme) | chaîne | faux | Schéma d'identification des étapes programme à utiliser pour l'exportation. Les options valides sont UID, CODE et ATTRIBUTE :{ID} |
| idScheme | chaîne | faux | Permet de définir le schéma d'identification à la fois pour l'élément de données, la combinaison d'options de catégorie, l'unité d'organisation, le programme et l'étape de programme. |
| Ordre | chaîne | faux | Ordre dans lequel les événements doivent être extraits de l'API. Utilisation : order=<property>:asc/desc - L'ordre croissant est l'ordre par défaut. Propriétés : event |
| événement | chaîne délimitée par des virgules | faux | Filtre le résultat pour obtenir un ensemble limité d’identifiants en utilisant event=id1;id2. |
| skipEventId | booléen | faux | Ignore les identifiants d'événement dans la réponse |
| attributeCc (**) | chaîne | faux | Identifiant de la combinaison de catégories d'attribut (doit être combiné aux options de catégorie d'attribut (attributCos)) |
| attributeCos (**) | chaîne | faux | Identifiants d'options de catégorie d'attribut, séparés par ";"(cette clé doit être utilisée avec la combinaison de catégories d'attribut (attributeCc)) |
| async | faux | vrai | faux | Indique si l'importation doit être asynchrone ou synchrone. |
| includeDeleted | booléen | faux | S'il est défini sur "vrai", les événements supprimés mais pas définitivement seront inclus dans le résultat de votre requête. |
| Mode utilisateur attribué | enum | faux | Mode de sélection de l'utilisateur assigné ; peut être CURRENT |
| assignedUser (Utilisateur assigné) | chaînes délimitées par des virgules | faux | Permet de filtrer le résultat de manière à obtenir un ensemble limité d'événements attribués aux UID donnés, en utilisant ceci : assignedUser=id1;id2. Ce paramètre ne sera pris en compte que si le assignedUserMode est 'PROVIDED' ou 'null'. L'API va générer une erreur si, par exemple, assignedUserMode=CURRENT et assignedUser=someId |
Remarque
Si la requête ne contient ni
attributeCCniattributeCos, le serveur renvoie des événements pour toutes les combinaisons d'options d'attribut pour lesquelles l'utilisateur a un accès en lecture.
Exemples¶
Requête sur de tous les événements associés aux subordonnées d'une unité d'organisation donnée :
/api/29/events.json?orgUnit=YuQRtpLP10I&ouMode=CHILDREN
Requête pour tous les événements associés à tous les descendants d'une unité d'organisation donnée, c'est-à-dire toutes les unités d'organisation qui lui sont inférieurs dans la hiérarchie :
/api/33/events.json?orgUnit=O6uvpzGd5pu&ouMode=DESCENDANTS
La requête pour tous les événements disposant d'un programme et d'une unité d'organisation :
/api/33/events.json?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
Requête pour tous les événements associés à un programme et à une unité d'organisation, ordonnés par date d'échéance en ordre croissant :
/api/33/events.json?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc&order=dueDate
La requête pour les 10 événements avec la date d'événement la plus récente dans un programme et une unité d'organisation - par pagination et ordonnés par date d'échéance en ordre décroissant :
/api/33/events.json?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
&order=eventDate:desc&pageSize=10&page=1
La requête pour tous les événements avec un programme et une unité d'organisation pour une instance d'entité suivie donnée :
/api/33/events.json?orgUnit=DiszpKrYNg8
&program=eBAyeGv0exc&trackedEntityInstance=gfVxE3ALA9m
Requête pour tous les événements associés à un programme et une unité d'organisation plus ancien(ne) ou égal(e) au 03/02/2014 :
/api/33/events.json?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc&endDate=2014-02-03
La requête pour tous les événements avec une étape de programme, une unité d'organisation et une instance d'entité suivie de l'an 2014 :
/api/33/events.json?orgUnit=DiszpKrYNg8&program=eBAyeGv0exc
&trackedEntityInstance=gfVxE3ALA9m&startDate=2014-01-01&endDate=2014-12-31
Requête pour des fichiers associés aux valeurs de données d'événement. Si l'on veut récupérer un fichier image, un paramètre supplémentaire peut être fourni pour récupérer l'image dans différentes options de dimensions. Si aucune dimension n'est fournie, le système renvoie l'image originale. Le paramètre sera ignoré si les fichiers ne sont pas des images, par exemple des fichiers PDF. Les valeurs possibles pour les dimensions sont small(254 x 254), medium(512 x 512), large(1024 x 1024) ou original. Toute valeur autre que celles mentionnées sera rejetée et l'image originale sera renvoyée.
/api/33/events/files?eventUid=hcmcWlYkg9u&dataElementUid=C0W4aFuVm4P&dimension=small
Pour récupérer les événements associées à une unité d'organisation et un programme spécifiés, et utiliser Attribute:Gq0oWTf2DtN comme schéma d'identification :
/api/events?orgUnit=DiszpKrYNg8&program=lxAQ7Zs9VYR&idScheme=Attribute:Gq0oWTf2DtN
Pour récupérer les événements associés à l'unité d'organisation et au programme spécifiés, et utiliser l'UID comme schéma d'identification pour les unités d'organisation, le code comme schéma d'identification pour les étapes du programme, et Attribute:Gq0oWTf2DtN comme schéma d'identification pour le reste des métadonnées avec les attributs assignés :
api/events.json?orgUnit=DiszpKrYNg8&program=lxAQ7Zs9VYR&idScheme=Attribute:Gq0oWTf2DtN
&orgUnitIdScheme=UID&programStageIdScheme=Code
Requête pour les grilles d'événements¶
En plus du point d'extrémité des requêtes d'événements ci-dessus, il existe un point d'extrémité pour les requêtes de grilles d'événements où un format de "grille" d'événements plus compact est renvoyé. Vous pouvez le faire en interagissant avec /api/events/query.json|xml|xls|csv.
/api/33/events/query
La plupart des paramètres de requête mentionnés dans la section sur la requête et la lecture d'événements ci-dessus sont valables ici. Toutefois, étant donné que la grille à renvoyer comporte un ensemble spécifique de colonnes qui s'appliquent à toutes les lignes (événements), il est obligatoire de spécifier une étape de programme. Il n'est pas possible de combiner des événements de différents programmes ou étapes de programme dans le renvoi.
Le renvoi d'événements appartenant à une même étape de programme ouvre également la voie à de nouvelles fonctionnalités, par exemple le tri et la recherche d'événements sur la base des valeurs de leurs éléments de données. api/events/query prend en charge ces fonctionnalités. Voici quelques exemples :
Une requête pour obtenir une grille d'événements qui contient uniquement des éléments de données sélectionnés pour une étape de programme :
/api/33/events/query.json?orgUnit=DiszpKrYNg8&programStage=Zj7UnCAulEk
&dataElement=qrur9Dvnyt5,fWIAEtYVEGk,K6uUAvq500H&order=lastUpdated:desc
&pageSize=50&page=1&totalPages=true
Une requête qui renvoie une grille d'événements qui contient tous les éléments de données d'une étape de programme :
/api/33/events/query.json?orgUnit=DiszpKrYNg8&programStage=Zj7UnCAulEk
&includeAllDataElements=true
Une requête pour filtrer les événements sur la base de la valeur de l'élément de données
/api/33/events/query.json?orgUnit=DiszpKrYNg8&programStage=Zj7UnCAulEk
&filter=qrur9Dvnyt5:GT:20:LT:50
Outre le filtrage, l'exemple ci-dessus illustre également une chose : le fait qu'il n'y a pas d'éléments de données mentionnés à renvoyer dans la grille. Dans ce cas, par défaut, le système ne renvoie que les éléments de données marqués "Afficher dans le rapport" dans la configuration des étapes de programme.
Nous pouvons également étendre la requête ci-dessus pour obtenir une grille triée (par ordre ascendant ou descendant) sur la base des valeurs de l'élément de données
/api/33/events/query.json?orgUnit=DiszpKrYNg8&programStage=Zj7UnCAulEk
&filter=qrur9Dvnyt5:GT:20:LT:50&order=qrur9Dvnyt5:desc
Filtres d'événements¶
Pour créer, lire, mettre à jour et supprimer des filtres d'événements, vous pouvez interagir avec la ressource /api/eventFilters.
/api/33/eventFilters
Création et mise à jour d'une définition de filtre d'événement¶
Pour créer et mettre à jour un filtre d'événement dans le système, vous devez utiliser la ressource eventFilters. La méthode POST est utilisée pour créer et la méthode PUT est utilisée pour la mise à jour. Les définitions des filtres d'événements sont utilisées dans l'application Saisie Tracker pour afficher les "listes de tâches" prédéfinies pertinentes sur l'interface utilisateur du Tracker.
Tableau : Charge de la requête
| Propriété de requête | Description | Exemple |
|---|---|---|
| nom | Nom du filtre. | "name":"My working list" |
| Description | Une description du filtre. | "description":"for listing all events assigned to me". |
| de paludisme) ». | L'uid du programme. | "program" : "a3kGcGDCuk6" |
| Étape du programme | L'uid de l'étape de programme. | "programStage" : "a3kGcGDCuk6" |
| eventQueryCriteria | Objet contenant des paramètres pour les requêtes, le tri et le filtrage des événements. | "eventQueryCriteria": { "organisationUnit":"a3kGcGDCuk6", "status": "COMPLETED", "createdDate": { "from": "2014-05-01", "to": "2019-03-20" }, "dataElements": ["a3kGcGDCuk6:EQ:1", "a3kGcGDCuk6"], "filters": ["a3kGcGDCuk6:EQ:1"], "programStatus": "ACTIVE", "ouMode": "SELECTED", "assignedUserMode": "PROVIDED", "assignedUsers" : ["a3kGcGDCuk7", "a3kGcGDCuk8"], "followUp": false, "trackedEntityInstance": "a3kGcGDCuk6", "events": ["a3kGcGDCuk7", "a3kGcGDCuk8"], "fields": "eventDate,dueDate", "order": "dueDate:asc,createdDate:desc" } |
Tableau : Définition des critères de requêtes d'événements
| suivi | Permet de filtrer les événements en fonction de l'indicateur de suivi de l'inscription. Les valeurs possibles sont true | false. |
| organisationUnit | Utilisée pour spécifier l'identifiant de l'unité d'organisation | "organisationUnit": "a3kGcGDCuk7" |
| ou Mode | Utilisée pour spécifier le mode de sélection des unités d'organisation. Les valeurs possibles sont SELECTED | CHILDREN |
| Mode utilisateur attribué | Utilisée pour spécifier le mode de sélection de l'utilisateur pour les événements. Les valeurs possibles sont CURRENT | PROVIDED |
| assignedUser (Utilisateur assigné) | Utilisée pour spécifier une liste d'utilisateurs assignés à des événements. À utiliser avec le mode d'utilisateur assigné PROVIDED ci-dessus. | "assignedUsers": ["a3kGcGDCuk7", "a3kGcGDCuk8"] |
| displayOrderColumns | Utilisée pour spécifier l'ordre de sortie des colonnes | "displayOrderColumns": ["eventDate", "dueDate", "program"] |
| Ordre | To specify ordering/sorting of fields and its directions in comma separated values. A single item in order is of the form "dataItem:direction". | "order"="a3kGcGDCuk6:desc,eventDate:asc" |
| Filtres de données | Permet de spécifier les filtres à appliquer lors de l'établissement de la liste des événements | "dataFilters"=[{ "dataItem": "abcDataElementUid", "le": "20", "ge": "10", "lt": "20", "gt": "10", "in": ["India", "Norway"], "like": "abc", "dateFilter": { "startDate": "2014-05-01", "endDate": "2019-03-20", "startBuffer": -5, "endBuffer": 5, "period": "LAST_WEEK", "type": "RELATIVE" } }] |
| statut | Tout statut d'événement valide | "eventStatus": "COMPLETED" |
| événements | permet de spécifier une liste d'événements | "events"=["a3kGcGDCuk6"] |
| completedDate | Filtrage de la date par l'objet "DateFilterPeriod " en fonction de date de finition. | "completedDate": { "startDate": "2014-05-01", "endDate": "2019-03-20", "startBuffer": -5, "endBuffer": 5, "period": "LAST_WEEK", "type": "RELATIVE" } |
| eventDate (date de l'événement) | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date de l'événement. | "eventDate": { "startBuffer": -5, "endBuffer": 5, "type": "RELATIVE" } |
| dueDate | Filtrage de la date par l'objet "DateFilterPeriod " en fonction de date d'échéance. | "dueDate": { "period": "LAST_WEEK", "type": "RELATIVE" } |
| lastUpdatedDate | Filtrage de la date par l'objet "DateFilterPeriod " sur la base de la date de la dernière mise à jour. | "lastUpdatedDate": { "startDate": "2014-05-01", "endDate": "2019-03-20", "type": "ABSOLUTE" } |
Tableau : Définition de l'objet DateFilterPeriod
| type | Spécifie si le type de période "date" est ABSOLUTE (absolu) ou RELATIVE (relatif) | "type" : "RELATIVE" |
| période | Spécifie si une période relative doit être utilisée. Ceci est applicable uniquement lorsque "type" est RELATIVE. (voir la section Périodes relatives pour consulter les périodes relatives prises en charge) | "period" : "THIS_WEEK" |
| date de début | Date de début absolue ; applicable uniquement lorsque le "type" est ABSOLUTE. | "startDate":"2014-05-01" |
| date de fin | Date de fin absolue ; applicable uniquement lorsque le "type" est ABSOLUTE. | "startDate":"2014-05-01" |
| startBuffer | Date de début personnalisée relative ; applicable uniquement lorsque le "type" est RELATIVE. | "startBuffer":-10 |
| endBuffer | Date de fin personnalisée relative ; applicable uniquement lorsque le "type" est RELATIVE. | "startDate":+10 |
Les modes de sélection des utilisateurs assignés disponibles sont expliqués dans le tableau suivant.
Tableau : Modes de sélection des utilisateurs assignés (attribution d'événements)
| Mode | Description |
|---|---|
| ACTUEL | Attribué à l'utilisateur actuellement connecté |
| FOURNI | Attribué aux utilisateurs indiqués dans le paramètre "assignedUser". |
| AUCUNE | Attribué à aucun utilisateur. |
| TOUT | Attribué à tout utilisateur. |
Un exemple de charge pouvant être utilisée pour créer/mettre à jour un filtre d'événement est présenté ci-dessous.
{
"program": "ur1Edk5Oe2n",
"description": "Simple Filter for TB events",
"name": "TB events",
"eventQueryCriteria": {
"organisationUnit":"DiszpKrYNg8",
"eventStatus": "COMPLETED",
"eventDate": {
"startDate": "2014-05-01",
"endDate": "2019-03-20",
"startBuffer": -5,
"endBuffer": 5,
"period": "LAST_WEEK",
"type": "RELATIVE"
},
"dataFilters": [{
"dataItem": "abcDataElementUid",
"le": "20",
"ge": "10",
"lt": "20",
"gt": "10",
"in": ["India", "Norway"],
"like": "abc"
},
{
"dataItem": "dateDataElementUid",
"dateFilter": {
"startDate": "2014-05-01",
"endDate": "2019-03-20",
"type": "ABSOLUTE"
}
},
{
"dataItem": "anotherDateDataElementUid",
"dateFilter": {
"startBuffer": -5,
"endBuffer": 5,
"type": "RELATIVE"
}
},
{
"dataItem": "yetAnotherDateDataElementUid",
"dateFilter": {
"period": "LAST_WEEK",
"type": "RELATIVE"
}
}],
"programStatus": "ACTIVE"
}
}
Récupération et suppression des filtres d'événements¶
Un filtre d'événement spécifique peut être récupéré en utilisant l'API suivante
GET /api/33/eventFilters/{uid}
Tous les filtres d'événements peuvent être récupérés en utilisant l'API suivante.
GET /api/33/eventFilters?fields=*
Tous les filtres d'événements pour un programme spécifique peuvent être récupérés à l'aide de l'API suivante :
GET /api/33/eventFilters?filter=program:eq:IpHINAT79UW
Un filtre d'événement peut être supprimé à l'aide de l'API suivante
DELETE /api/33/eventFilters/{uid}
Relations¶
Les relations sont des liens entre deux entités dans le Tracker. Ces entités peuvent être des instances d'entités suivies, des inscriptions et des événements.
Il existe plusieurs points d'extrémité qui vous permettent de voir, de créer, de supprimer et de mettre à jour les relations. Le plus courant est /api/trackedEntityInstances, où vous pouvez inclure des relations dans la charge pour les créer, les mettre à jour ou les supprimer si vous les omettez - de la même manière que vous travaillez avec les inscriptions et les événements dans le même point d'extrémité. Tous les points d'extrémité du Tracker, c'est-à-dire /api/trackedEntityInstances, /api/enrollments et /api/events listent également leurs relations si une requête est spécifiée dans le filtre de champ.
Toutefois, le point d'extrémité communément utilisé pour les relations est /api/relationships. Il fournit toutes les opérations CRUD normales pour les relations.
Vous pouvez afficher une liste de relations par instance d'entité suivie, inscription ou événement :
GET /api/relationships?[tei={teiUID}|enrollment={enrollmentUID}|event={eventUID}]
Cette requête renverra une liste de toutes les relations que vous pouvez voir. Cela inclut l'instance d'entité suivie, l'inscription ou l'événement que vous avez spécifié. Chaque relation est représentée par le JSON suivant :
{
"relationshipType": "dDrh5UyCyvQ",
"relationshipName": "Mother-Child",
"relationship": "t0HIBrc65Rm",
"bidirectional": false,
"from": {
"trackedEntityInstance": {
"trackedEntityInstance": "vOxUH373fy5"
}
},
"to": {
"trackedEntityInstance": {
"trackedEntityInstance": "pybd813kIWx"
}
},
"created": "2019-04-26T09:30:56.267",
"lastUpdated": "2019-04-26T09:30:56.267"
}
Vous pouvez également visualiser les relations spécifiées en utilisant le point d'extrémité suivant :
GET /api/relationships/<id>
Pour créer ou mettre à jour une relation, vous pouvez utiliser les points d'extrémité suivants :
POST /api/relationships
PUT /api/relationships
Et utilisez la structure de charge suivante :
{
"relationshipType": "dDrh5UyCyvQ",
"from": {
"trackedEntityInstance": {
"trackedEntityInstance": "vOxUH373fy5"
}
},
"to": {
"trackedEntityInstance": {
"trackedEntityInstance": "pybd813kIWx"
}
}
}
Pour supprimer une relation, vous pouvez utiliser ce point d'extrémité :
DELETE /api/relationships/<id>
Dans nos exemples de charges, nous utilisons une relation entre instances d'entités suivies. C'est pourquoi les propriétés "from" et "to" de nos charges incluent des objets "trackedEntityInstance". Si votre relation inclut d'autres entités, vous pouvez utiliser les propriétés suivantes :
{
"enrollment": {
"enrollment": "<id>"
}
}
{
"event": {
"event": "<id>"
}
}
Relationship can be soft deleted. In that case, you can use the includeDeleted request parameter to see the relationship. GET /api/relationships?tei=pybd813kIWx?includeDeleted=true
Stratégies de mise à jour¶
Deux stratégies de mise à jour sont prises en charge pour les trois points d'extrémité du Tracker : l'inscription et la création d'événements. Ceci est utile lorsque vous avez généré un identifiant au niveau du client et que vous n'êtes pas sûr s'il a été créé ou non sur le serveur.
Tableau : Stratégies du Tracker disponibles
| Paramètre | Description |
|---|---|
| CRÉER | Permet de créer uniquement. C'est le fonctionnement par défaut. |
| CREATE_AND_UPDATE | Ce paramètre essaie de trouver une correspondance avec l'ID, s'il existe, puis de le mettre à jour. S'il n'existe pas, il le crée. |
Pour modifier ce paramètre, utilisez le paramètre de stratégie :
POST /api/33/trackedEntityInstances?strategy=CREATE_AND_UPDATE
Suppression en bloc dans le Tracker¶
La suppression en bloc d'objets Tracker fonctionne de la même manière que l'ajout et la mise à jour d'objets Tracker. La seule différence est que la stratégie d'importation (importStrategy) est DELETE.
Exemple : Suppression en bloc d'instances d'entités suivies :
{
"trackedEntityInstances": [
{
"trackedEntityInstance": "ID1"
}, {
"trackedEntityInstance": "ID2"
}, {
"trackedEntityInstance": "ID3"
}
]
}
curl -X POST -d @data.json -H "Content-Type: application/json"
"http://server/api/33/trackedEntityInstances?strategy=DELETE"
Exemple : Suppression en bloc d'inscriptions :
{
"enrollments": [
{
"enrollment": "ID1"
}, {
"enrollment": "ID2"
}, {
"enrollment": "ID3"
}
]
}
curl -X POST -d @data.json -H "Content-Type: application/json"
"http://server/api/33/enrollments?strategy=DELETE"
Exemple : Suppression en bloc d'événements:
{
"events": [
{
"event": "ID1"
}, {
"event": "ID2"
}, {
"event": "ID3"
}
]
}
curl -X POST -d @data.json -H "Content-Type: application/json"
"http://server/api/33/events?strategy=DELETE"
Réutilisation d'identifiants et suppression d'éléments via les méthodes POST et PUT¶
Les points d'extrémité du Tracker /trackedEntityInstances, /enrollments, /events prennent en charge les opérations CRUD. Le système garde la trace des identifiants utilisés. Ainsi, un élément qui a été créé puis supprimé (par exemple, un événement ou une inscription) ne peut pas être créé ou mis à jour à nouveau. Si l'on tente de supprimer un élément déjà supprimé, le système renvoie une réponse de succès, car la suppression d'un élément déjà supprimé n'implique aucun changement.
Le système ne permet pas de supprimer un élément via une méthode de mise à jour (PUT) ou de création (POST). Par conséquent, l'attribut deleted est ignoré dans les méthodes PUT et POST, et dans la méthode POST, il est défini par défaut sur false.
Paramètres d'importation¶
Le processus d'importation peut être personnalisé à l'aide d'un ensemble de paramètres d'importation :
Tableau : Paramètres d'importation
| Paramètre | Valeurs (par défaut en premier) | Description |
|---|---|---|
| dataElementIdScheme (Schéma de l'identifiant de l'élément de données) | identifiant | nom | code | attribut:ID | Propriété de l'objet d'élément de données à utiliser pour faire correspondre les données. |
| orgUnitIdScheme (Schéma de l'identifiant de l'unité d'organisation) | identifiant | nom | code | attribut:ID | Propriété de l'objet d'unité d'organisation à utiliser pour faire correspondre les données. |
| idScheme (schéma d'identifiants) | id | name |
| dryRun (essai) | faux | vrai | Pour sauvegarder les modifications sur le serveur ou pour renvoyer le résumé de l'importation. |
| strategy | CRÉER | METTRE À JOUR | CRÉER _ET_METTRE À JOUR | SUPPRIMER | Sauvegarde des objets de tous les statuts d'importation, nouveaux ou mis à jour, sur le serveur. |
| skipNotifications | vrai | faux | Indique s'il faut envoyer des notifications pour les événements terminés. |
| skipFirst | vrai | faux | Ne concerne que l'importation de fichiers CSV. Il indique si le fichier CSV contient une ligne d'en-tête qui doit être ignorée. |
| importReportMode (mode de rapport d'importation) | FULL, ERRORS, DEBUG | Définit le mode de rapport d'importation ; contrôle ce qui est rapporté après l'importation. ERRORS n'inclut que les rapports d'objets pour les objets qui contiennent des erreurs. FULL renvoie un rapport d'objet pour tous les objets importés, et DEBUG renvoie la même chose plus un nom pour l'objet (si disponible). |
Importation / exportation CSV¶
Outre les formats XML et JSON pour l'importation et l'exportation d'événements, le format CSV a été introduit dans DHIS2.17. La prise en charge de ce format s'appuie sur ce qui a été décrit dans la dernière section, nous ne parlerons donc ici que des parties spécifiques au format CSV.
Pour utiliser le format CSV, vous devez soit utiliser le point d'extrémité /api/events.csv ou ajouter content-type : text/csv pour l'importation, et accept :text/csv pour l'exportation, lorsque vous utilisez le point d'extrémité /api/events.
L'ordre des colonnes du fichier CSV qui sont utilisées pour l'exportation et l'importation est le suivant :
Tableau : Colonne CSV
| Index | Clé | Type | Description |
|---|---|---|---|
| 1 | événement | identifiant | Identifiant de l'événement |
| 2 | statut | enum | Statut de l'événement, peut être ACTIVE |
| 3 | de paludisme) ». | identifiant | Identifiant du programme |
| 4 | Étape du programme | identifiant | Identifiant de l'étape de programme |
| 5 | inscription | identifiant | Identifiant de l'inscription (instance de programme) |
| 6 | orgUnit (Unité d'organisation) | identifiant | Identifiant de l'unité d'organisation |
| 7 | eventDate (date de l'événement) | date | Date de l'événement |
| 8 | dueDate | date | Date d'échéance |
| 9 | latitude | double | Latitude à laquelle l'événement s'est produit |
| 10 | longitude | double | Longitude à laquelle l'événement s'est produit |
| 11 | élément de données | identifiant | Identifiant de l'élément de données |
| 12 | valeur | chaîne | Valeur / mesure de l'événement |
| 13 | Stocké par | chaîne | L'événement a été enregistré par (par défaut, l'utilisateur actuel) |
| 14 | Fourni ailleurs | booléen | Valable lorsque la valeur est collectée ailleurs |
| 14 | completedDate | date | Date d'achèvement de l'événement |
| 14 | completedBy (terminé par) | chaîne | Nom d'utilisateur de l'utilisateur qui a terminé l'événement |
Exemple de 2 événements avec 2 valeurs de données différentes chacun :
EJNxP3WreNP,COMPLETED,<pid>,<psid>,<enrollment-id>,<ou>,2016-01-01,2016-01-01,,,<de>,1,,
EJNxP3WreNP,COMPLETED,<pid>,<psid>,<enrollment-id>,<ou>,2016-01-01,2016-01-01,,,<de>,2,,
qPEdI1xn7k0,COMPLETED,<pid>,<psid>,<enrollment-id>,<ou>,2016-01-01,2016-01-01,,,<de>,3,,
qPEdI1xn7k0,COMPLETED,<pid>,<psid>,<enrollment-id>,<ou>,2016-01-01,2016-01-01,,,<de>,4,,
Stratégie d'importation : SYNC¶
La stratégie d'importation SYNC ne doit être utilisée que par la tâche de synchronisation interne et non pour l'importation régulière. La stratégie SYNC permet aux 3 opérations (CREATE, UPDATE, DELETE) d'être présentes dans la charge au moment moment.
Gestion de la Propriété Tracker¶
Un nouveau concept appelé "Propriété du Tracker" est introduit à partir de la version 2.30. Désormais, il n'y aura plus qu'une seule unité d'organisation propriétaire pour une instance d'entité suivie dans le cadre d'un programme. Les programmes configurés avec un niveau d'accès PROTECTED (protégé) ou CLOSED (fermé) respecteront les privilèges de propriété. Seuls les utilisateurs appartenant à l'unité d'organisation propriétaire d'une combinaison entité suivie-programme pourront accéder aux données liées à ce programme pour cette entité suivie.
Annulation de la propriété Tracker : briser le verre¶
Il est possible d'annuler temporairement ce privilège de propriété pour un programme configuré avec un niveau d'accès PROTECTED. Tout utilisateur sera en mesure d'obtenir temporairement l'accès aux données liées au programme s'il fournit une raison d'accéder aux données de la combinaison Entité suivie - Programme. Ce fait d'obtenir temporairement l'accès est appelé briser la glace. Actuellement, l'accès temporaire est accordé pour une durée de 3 heures. DHIS2 vérifie l'aspect "briser la glace" ainsi que la raison fournie par l'utilisateur. Il n'est pas possible d'obtenir un accès temporaire à un programme qui a été configuré avec un niveau d'accès CLOSED. Pour briser la glace d'une combinaison Entité suivie - Programme, la requête POST suivante peut être utilisée :
/api/33/tracker/ownership/override?trackedEntityInstance=DiszpKrYNg8
&program=eBAyeGv0exc&reason=patient+showed+up+for+emergency+care
Transfert de la propriété Tracker{ #webapi_tracker_ownership_transfer_api }¶
Il est possible de transférer la propriété d'une combinaison Entité suivie - Programme d'une unité d'organisation à une autre. Cela peut s'avérer utile en cas de transfert de patients ou de migration. Seul un propriétaire (ou un utilisateur qui a utilisé la fonction de brise glace) peut transférer la propriété. Pour transférer la propriété d'une combinaison Entité suivie - Programme à une autre unité d'organisation, vous pouvez utiliser la requête "PUT" suivante :
/api/33/tracker/ownership/transfer?trackedEntityInstance=DiszpKrYNg8
&program=eBAyeGv0exc&ou=EJNxP3WreNP
Doublons potentiels¶
Les doublons potentiels sont les enregistrements sur les lesquels nous travaillons dans le cadre de la déduplication des données. En raison de la nature de la fonction de déduplication, ce point d'extrémité d'API est quelque peu restreint.
Un doublon potentiel représente une paire d'enregistrements qui sont soupçonnés d'être des doublons.
La charge d'un doublon potentiel se présente comme suit :
{
"teiA": "<id>",
"teiB": "<id>",
"status": "OPEN|INVALID|MERGED"
}
Vous pouvez récupérer une liste de doublons potentiels en utilisant le point d'extrémité suivant :
GET /api/potentialDuplicates
| Le nom du paramètre | Description | Type | Valeurs autorisées |
|---|---|---|---|
| teis | Liste des instances d'entités suivies | Liste de chaînes (séparées par une virgule) | identifiant de l'instance d'entité suivie existante |
| statut | Statut de doublon potentiel | chaîne | OPEN <default>, INVALID, MERGED, ALL |
| Code de statut | Description |
|---|---|
| 400 | Invalid input status |
Vous pouvez inspecter des enregistrements individuels susceptibles d'être dupliqués :
GET /api/potentialDuplicates/<id>
| Code de statut | Description |
|---|---|
| 404 | Doublon potentiel non trouvé |
You can also filter potential duplicates by Tracked Entity Instance (referred as tei) :
GET /api/potentialDuplicates/tei/<tei>
| Le nom du paramètre | Description | Type | Valeurs autorisées |
|---|---|---|---|
| statut | Statut de doublon potentiel | chaîne | OPEN, INVALID, MERGED, ALL <default> |
| Code de statut | Description |
|---|---|
| 400 | Invalid input status |
| 403 | User do not have access to read tei |
| 404 | Tei not found |
Pour créer un nouveau doublon potentiel, vous pouvez utiliser ce point d'extrémité :
POST /api/potentialDuplicates
The payload you provide must include both teiA and teiB
{
"teiA": "<id>",
"teiB": "<id>"
}
| Code de statut | Description |
|---|---|
| 400 | Input teiA or teiB is null or has invalid id |
| 403 | User do not have access to read teiA or teiB |
| 404 | Tei not found |
| 409 | Pair of teiA and teiB already existing |
Pour mettre à jour un statut de doublon potentiel :
PUT /api/potentialDuplicates/<id>
| Le nom du paramètre | Description | Type | Valeurs autorisées |
|---|---|---|---|
| statut | Statut de doublon potentiel | chaîne | OPEN, INVALID, MERGED |
| Code de statut | Description |
|---|---|
| 400 | Vous ne pouvez pas mettre à jour un doublon potentiel en le faisant passer à MERGED. Pour ce faire, vous devez effectuer une requête de fusion. |
| 400 | Vous ne pouvez pas mettre à jour un doublon potentiel qui a déjà le statut MERGED. |
Flag Tracked Entity Instance as Potential Duplicate¶
To flag as potential duplicate a Tracked Entity Instance (referred as tei)
PUT /api/trackedEntityInstances/{tei}/potentialDuplicate
| Le nom du paramètre | Description | Type | Valeurs autorisées |
|---|---|---|---|
| flag | either flag or unflag a tei as potential duplicate | chaîne | true, false |
| Code de statut | Description |
|---|---|
| 400 | Invalid flag must be true of false |
| 403 | User do not have access to update tei |
| 404 | Tei not found |
Fusion des instances d'entités suivies¶
Les instances d'entités suivies peuvent désormais être fusionnées si elles sont compatibles. Pour lancer une fusion, la première étape consiste à définir deux instances d'entités suivies en tant que doublons potentiels. Le point d'extrémité de fusion déplacera les données de l'instance d'entité suivie dupliquée vers l'instance d'entité suivie originale, et supprimera les données restantes de l'instance dupliquée.
Pour fusionner un doublon potentiel ou les deux instances d'entités suivies que le doublon potentiel représente, le point d'extrémité suivant peut être utilisé :
POST /potentialDuplicates/<id>/merge
| Le nom du paramètre | Description | Type | Valeurs autorisées |
|---|---|---|---|
| mergeStrategy | Stratégie à utiliser pour fusionner le doublon potentiel | enum | AUTO(default) or MANUAL |
Le point d'extrémité accepte un seul paramètre, "mergeStrategy", qui détermine la stratégie à utiliser lors de la fusion. Avec la stratégie AUTO, le serveur tentera de fusionner les deux entités suivies automatiquement, sans aucune intervention de l'utilisateur. Cette stratégie permet uniquement de fusionner des entités suivies qui n'ont pas de données incompatibles (voir les exemples ci-dessous). L'autre stratégie, MANUAL, exige que l'utilisateur envoie une charge décrivant la manière dont la fusion doit être effectuée. Pour voir des exemples et des règles pour chaque stratégie, consultez leurs sections respectives ci-dessous.
Stratégie de fusion AUTO¶
La fusion automatique évalue la possibilité de fusionner les deux instances d'entités suivies et les fusionne si elles sont jugées fusionnables. La fusion est basée sur l'existence ou non de divergences entre les deux instances d'entités suivies. Les divergences concernent les données qui ne peuvent pas être fusionnées automatiquement. Voici quelques exemples de divergences possibles : - Le même attribut a des valeurs différentes dans chaque instance d'entité suivie - Les deux instances d'entités suivies sont inscrites au même programme - Les instances d'entités suivies sont de différents types
En cas de conflit, un message d'erreur est renvoyé à l'utilisateur.
Si aucun conflit n'est détecté, toutes les données du doublon qui ne se trouvent pas déjà dans l'instance originale seront déplacées vers cette dernière. Il s'agit notamment des valeurs d'attributs, des inscriptions (y compris les événements) et des relations. Une fois la fusion terminée, le doublon est supprimé et le doublon potentiel est marqué MERGED.
Lorsque vous effectuez une requête de fusion automatique comme celle-ci, une charge n'est pas nécessaire et cette partie sera ignorée.
Stratégie de fusion MANUAL¶
La fusion manuelle peut être utilisée lorsque des conflits peuvent être résolus ou lorsque toutes les données ne doivent pas être transférées au cours de la fusion. Par exemple, si un attribut a des valeurs différentes dans les deux instances d'entité suivies, l'utilisateur peut spécifier s'il souhaite conserver la valeur originale ou déplacer la valeur du doublon. Étant donné que, dans le cas d'une fusion manuelle, c'est l'utilisateur lui-même qui configure le transfert des données, les vérifications effectuées sont différentes : - La relation ne peut pas être entre l'original et le doublon (ceci résulte en une relation d'autoréférencement invalide). - La relation ne peut pas être du même type et concerner le même objet dans les deux instances d'entités suivies (par exemple, entre l'original et un autre, et entre le doublon et un autre ; il en résulterait une relation dupliquée).
Il existe deux façons d'effectuer une fusion manuelle : Avec et sans charge.
Lorsqu'une requête pour une fusion manuelle est effectuée sans charge, il est demandé à l'API de fusionner les deux instances d'entités suivies sans déplacer de données. En d'autres termes, nous supprimons simplement le doublon et marquons le doublon potentiel MERGED. Cela peut être valable dans de nombreux cas où l'instance d'entité suivie vient d'être créée, mais qu'elle n'a pas été inscrite, par exemple.
Dans le cas contraire, si une requête de fusion manuelle est effectuée avec une charge, celle-ci indique les données qui doivent être transférées du doublon vers l'original. La charge se présente comme suit :
{
"trackedEntityAttributes": ["B58KFJ45L9D"],
"enrollments": ["F61SJ2DhINO"],
"relationships": ["ETkkZVSNSVw"]
}
Cette charge contient trois listes, une pour chaque type de données qui peuvent être déplacées. trackedEntityAttributes est une liste d'uids pour les attributs des entités suivies, enrollments est une liste d'uids pour les inscriptions et relationships une liste d'uids pour les relations. Les uids de cette charge doivent faire référence à des données qui existent réellement sur le doublon. Il est impossible d'ajouter de nouvelles données ou de modifier des données à l'aide du point d'extrémité de fusion - il ne sert qu'à déplacer des données.
Informations complémentaires sur la fusion¶
Actuellement, il n'est pas possible de fusionner les instances d'entités suivies qui sont inscrites à un même programme, en raison de la complexité accrue. Une alternative consiste à supprimer manuellement les inscriptions de l'une des instances avant de commencer la fusion.
Toutes les fusions sont basées sur des données déjà conservées dans la base de données ; le service de fusion actuel ne valide donc pas ces données à nouveau. Cela signifie que si des données étaient déjà invalides, elles ne seront pas signalées lors de la fusion. La seule validation effectuée dans le service concerne les relations, tel qu'indiqué dans la section précédente.
Modèle de notification de programme¶
Program Notification Template lets you create message templates which can be sent as a result of different type of events. Message and Subject templates will be translated into actual values and can be sent to the configured destination. Each program notification template will be transformed to either MessageConversation object or ProgramMessage object based on external or internal notificationRecipient. These intermediate objects will only contain translated message and subject text. There are multiple configuraiton parameters in Program Notification Tempalte which are critical for correct working of notifications. All those are explained in the table below.
POST /api/programNotificationTemplates
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
Les champs sont expliqués dans le tableau suivant.
Tableau : Charge du Modèle de notification de programme
| Champ | Obligatoire | Description | Valeurs |
|---|---|---|---|
| nom | Oui | name of Program Notification Tempalte | case-notification-alert |
| notificationTrigger | Oui | Définit le moment où la notification doit être déclenchée. Les valeurs possibles sont ENROLLMENT, COMPLETION, PROGRAM_RULE, SCHEDULED_DAYS_DUE_DATE. | INSCRIPTION |
| subjectTemplate | Non | Subject template string | Case notification V{org_unit_name} |
| messageTemplate | Oui | Chaîne du modèle de message | Case notification A{h5FuguPFF2j} |
| notificationRecipient | OUI | Destinataire de la notification. Les valeurs possibles sont USER_GROUP, ORGANISATION_UNIT_CONTACT, TRACKED_ENTITY_INSTANCE, USERS_AT_ORGANISATION_UNIT, DATA_ELEMENT, PROGRAM_ATTRIBUTE, WEB_HOOK. | USER_GROUP |
| deliveryChannels | Non | Le canal qui doit être utilisé pour envoyer cette notification. Les différentes options sont SMS, EMAIL et HTTP. | SMS |
| sendRepeatable | Non | Détermine si la notification doit être envoyée plusieurs fois | faux |
NOTE : WEB_HOOK notificationRecipient est utilisé uniquement pour envoyer (POST) des requêtes http à un système externe. Assurez-vous de choisir le canal HTTP lorsque vous utilisez WEB_HOOK.
Récupération et suppression du Modèle de notification de programme¶
La liste des modèles de notification de programme peut être récupérée à l'aide de la méthode GET.
GET /api/programNotificationTemplates
Pour un modèle particulier de notification de programme.
GET /api/33/programNotificationTemplates/{uid}
Pour obtenir une liste filtrée des Modèles de notification de programme
GET /api/programNotificationTemplates/filter?program=<uid>
GET /api/programNotificationTemplates/filter?programStage=<uid>
Le Modèle de notification de programme peut être supprimé à l'aide de la méthode DELETE.
DELETE /api/33/programNotificationTemplates/{uid}
Messages de programme¶
"Message de programme" vous permet d'envoyer des messages à des instances d'entités suivies, à des adresses associées à des unités d'organisation, à des numéros de téléphone et à des adresses électroniques. Vous pouvez envoyer des messages via la ressource messages.
/api/33/messages
Envoi de messages de programme¶
Les messages de programme peuvent être envoyés à l'aide de deux canaux :
-
SMS (SMS)
-
Adresse électronique (EMAIL)
Les messages de programme peuvent être envoyés à différents destinataires :
-
Instance d'entité suivie : Le système recherchera les attributs de type PHONE_NUMBER ou EMAIL (en fonction des canaux spécifiés) et utilisera les valeurs d'attribut correspondantes. spécifiés) et utilisera les valeurs d'attribut correspondantes.
-
Unité d'organisation : Le système utilisera le numéro de téléphone ou l'adresse électronique enregistrés pour l'unité d'organisation.
-
Liste de numéros de téléphone : Le système utilisera les numéros de téléphone définis.
-
Liste d'adresses électroniques : Le système utilisera les adresses électroniques définies.
Vous trouverez ci-dessous un exemple de charge JSON pour l'envoi de messages à l'aide de requêtes POST. Notez que la ressource "message" accepte un objet enveloppeur nommé programMessages qui peut contenir un nombre quelconque de messages de programme.
POST /api/33/messages
{
"programMessages": [{
"recipients": {
"trackedEntityInstance": {
"id": "UN810PwyVYO"
},
"organisationUnit": {
"id": "Rp268JB6Ne4"
},
"phoneNumbers": [
"55512345",
"55545678"
],
"emailAddresses": [
"johndoe@mail.com",
"markdoe@mail.com"
]
},
"programInstance": {
"id": "f3rg8gFag8j"
},
"programStageInstance": {
"id": "pSllsjpfLH2"
},
"deliveryChannels": [
"SMS", "EMAIL"
],
"notificationTemplate": "Zp268JB6Ne5",
"subject": "Outbreak alert",
"text": "An outbreak has been detected",
"storeCopy": false
}]
}
Les champs sont expliqués dans le tableau suivant.
Tableau : Charge du message de programme
| Champ | Obligatoire | Description | Valeurs |
|---|---|---|---|
| recipients² | Oui | Destinataires du message du programme. Au moins un destinataire doit être spécifié. Un nombre quelconque de destinataires/types peut être spécifié pour un message. | Il peut s'agir d'une instance d'entité suivie, d'une unité d'organisation, d'un tableau de numéros de téléphone ou d'un tableau d'adresses électroniques. |
| programInstance | Soit ceci, soit programStageInstance (instance d'étape de programme) est requis. | L'instance du programme ou l'inscription au programme | ID de l'inscription. |
| programStageInstance | Soit ceci, soit programInstance (instance de programme) est requis. | L'instance ou l'événement de l'étape de programme. | ID de l'événement. |
| deliveryChannels | Oui | Tableau des canaux d'envoi de messages. | SMS |
| subject | Non | L'objet du message. Ne s'applique pas au canal SMS. | Text. |
| texte | Oui | Le texte du message. | Text. |
| storeCopy | Non | Indique si une copie du message doit être stockée dans DHIS2. | false (par défaut) |
Un exemple minimaliste d'envoi de message par SMS à une instance d'entité suivie ressemble à ceci :
curl -d @message.json "https://play.dhis2.org/demo/api/33/messages"
-H "Content-Type:application/json" -u admin:district
{
"programMessages": [{
"recipients": {
"trackedEntityInstance": {
"id": "PQfMcpmXeFE"
}
},
"programInstance": {
"id": "JMgRZyeLWOo"
},
"deliveryChannels": [
"SMS"
],
"text": "Please make a visit on Thursday"
}]
}
Récupération et suppression des messages de programme¶
La liste des messages peut être récupérée à l'aide de la fonction GET.
GET /api/33/messages
Pour obtenir la liste des messages Tracker envoyés, le point d'extrémité ci-dessous peut être utilisé. L'uid de l'instance de programme ou de l'instance d'étape de programme doit être fourni.
GET /api/33/messages/scheduled/sent?programInstance={uid}
GET /api/33/messages/scheduled/sent?programStageInstance={uid}
Pour obtenir la liste de tous les messages planifiés
GET /api/33/messages/scheduled
GET /api/33/messages/scheduled?scheduledAt=2020-12-12
Un message spécifique peut également être récupéré à l'aide de la méthode GET.
GET /api/33/messages/{uid}
Un message peut être supprimé à l'aide de la méthode DELETE.
DELETE /api/33/messages/{uid}
Requête pour des messages de programme¶
L'API des messages de programme prend en charge les requêtes de messages de programme en utilisant des paramètres de requête. Les messages peuvent être filtrés en fonction des paramètres de requête mentionnés ci-dessous. Toutes les requêtes doivent utiliser la méthode GET HTTP pour récupérer les informations.
| Paramètre | URL |
|---|---|
| programInstance | /api/33/messages?programInstance=6yWDMa0LP7 |
| programStageInstance | /api/33/messages?programStageInstance=SllsjpfLH2 |
| trackedEntityInstance | /api/33/messages?trackedEntityInstance=xdfejpfLH2 |
| organisationUnit | /api/33/messages?ou=Sllsjdhoe3 |
| processedDate | /api/33/messages?processedDate=2016-02-01 |