Maintenance¶
Tableaux de ressources et d'analyse¶
DHIS2 comporte un ensemble de tableaux de base de données générés qui sont utilisés comme base pour diverses fonctionnalités du système. Ces tableaux peuvent être exécutés immédiatement ou programmés à intervalles réguliers via l'interface utilisateur. Ils peuvent également être générés via l'API Web, comme expliqué dans cette section. Cette tâche incombe généralement à un administrateur système et non aux clients consommateurs.
Les tables de ressources sont utilisées en interne par l'application DHIS2 pour diverses fonctions d'analyse. Ces tables sont également utiles aux utilisateurs qui rédigent des rapports SQL avancés. Elles peuvent être générées par une requête POST ou PUT à l'URL suivante :
/api/33/resourceTables
Les tableaux analytiques sont optimisés pour l'agrégation des données et sont actuellement utilisés dans DHIS2 pour le module de tableau croisé dynamique. Les tableaux d'analyse peuvent être générés à l'aide d'une requête POST ou PUT à :
/api/33/resourceTables/analytics
Tableau : Paramètres de requête facultatifs des tableaux d'analyse
| Paramètre de requête | Options | Description ; |
|---|---|---|
| Ignorer les tableaux de ressources | faux | vrai | Ignorer la génération des tableaux de ressources |
| Ignorer l'agrégat | faux | vrai | Ignorer la génération de données agrégées et de données exhaustives |
| Ignorer les événements | faux | vrai | Ignorer la génération de données d'événement |
| Ignorer les événements | faux | vrai | Ignorer la génération des données d'inscription |
| Ignorer la propriété de l'unité d'Organisation | faux | vrai | Ignorer la génération des données de propriété de l'unité d'organisation |
| années précédentes | entier | Nombre de dernières années de données à inclure |
Note
lastYears=0 désigne les analyses les plus récentes ou les analyses en continu, telles que définies dans Continuous analytics table (Tableau d'analyse en continu).
Les tâches « Qualité des données “ et ” Surveillance des données » peuvent être exécutées via la tâche de surveillance, déclenchée avec le endpoint
/api/33/resourceTables/monitoring
Cette tâche analyse vos règles de validation, détecte les violations et les conserve en tant que résultats de validation.
Ces demandes sont renvoyées immédiatement et déclenchent un processus côté serveur.
Maintenance¶
Pour effectuer la maintenance, vous pouvez interagir avec la ressource maintenance. Vous devez utiliser POST ou PUT comme méthode pour les requêtes. Les méthodes suivantes sont disponibles.
La suppression des tables d'analyse entraîne la disparition de toutes les tables d'analyse.
POST PUT /api/maintenance/analyticsTablesClear
L'analyse des tables d'analyse permet de collecter des statistiques sur le contenu des tables d'analyse de la base de données.
POST PUT /api/maintenance/analyticsTablesAnalyze
La suppression des invitations expirées permet de supprimer toutes les invitations de comptes d'utilisateurs qui ont expiré.
POST PUT /api/maintenance/expiredInvitationsClear
L'élagage des périodes permet de supprimer les périodes qui ne sont liées à aucune valeur de données.
POST PUT /api/maintenance/periodPruning
La suppression des valeurs de données nulles permet de supprimer les valeurs de données nulles liées à des éléments de données où les données nulles sont définies comme non significatives :
POST PUT /api/maintenance/zeroDataValueRemoval
La suppression des valeurs de données supprimées de façon réversible supprime définitivement les valeurs de données supprimées de façon réversible.
POST PUT /api/maintenance/softDeletedDataValueRemoval
La suppression de l'instance de l'étape du programme supprimé de façon réversible supprime de façon permanente les événements supprimés de façon réversible.
POST PUT /api/maintenance/softDeletedProgramStageInstanceRemoval
La suppression de l'instance de programme supprimée de façon réversible supprime définitivement les inscriptions supprimées de façon réversible.
POST PUT /api/maintenance/softDeletedProgramInstanceRemoval
La suppression des instances d'entités suivies supprimées de façon réversible supprime définitivement les instances d'entités suivies supprimées de façon réversible.
POST PUT /api/maintenance/softDeletedTrackedEntityInstanceRemoval
Supprimer les vues SQL supprime toutes les vues SQL de la base de données. Notez qu'il ne supprime pas les entités de la vue SQL de DHIS2.
POST PUT /api/maintenance/sqlViewsDrop
Créer des vues SQL va recréer toutes les vues SQL dans la base de données.
POST PUT /api/maintenance/sqlViewsCreate
La mise à jour des combinaisons d'options de catégories supprimera les combinaisons d'options de catégories obsolètes et générera les combinaisons d'options de catégories manquantes pour toutes les combinaisons de catégories.
POST PUT /api/maintenance/categoryOptionComboUpdate
Il est également possible de mettre à jour les combinaisons d'options de catégorie pour une seule combinaison de catégorie en utilisant le point d'extrémité suivant.
POST PUT /api/maintenance/categoryOptionComboUpdate/categoryCombo/<category-combo-uid>
Le nettoyage du cache efface le cache d'hibernation de l'application et les caches de la partition analytique.
POST PUT /api/maintenance/cacheClear
La mise à jour des chemins des unités d'organisation va regénérer la propriété du chemin de l'unité d'organisation. Cela peut être utile, par exemple, si vous avez importé des unités d'organisation avec SQL.
POST PUT /api/maintenance/ouPathsUpdate
L'élagage des données permet de supprimer des enregistrements complets d'ensembles de données, des approbations de données, des audits de valeurs de données et des valeurs de données, dans ce cas pour une unité d'organisation.
POST PUT /api/maintenance/dataPruning/organisationUnits/<org-unit-id>
L'élagage des données pour les éléments de données, qui supprime les audits de valeurs de données et les valeurs de données.
POST PUT /api/maintenance/dataPruning/dataElement/<data-element-uid>
La validation des métadonnées appliquera toutes les règles de validation des métadonnées et renverra le résultat de l'opération.
POST PUT /api/metadataValidation
Le rechargement d'applications actualise le cache des applications installées géré par DHIS2 en lisant le système de fichiers.
POST PUT /api/appReload
Les opérations de maintenance sont prises en charge par lots au moyen d'une requête POST à la ressource api/maintenance, où les opérations sont fournies en tant que paramètres de requête :
POST PUT /api/maintenance?analyticsTablesClear=true&expiredInvitationsClear=true
&periodPruning=true&zeroDataValueRemoval=true&sqlViewsDrop=true&sqlViewsCreate=true
&categoryOptionComboUpdate=true&cacheClear=true&ouPathsUpdate=true
Informations sur le système¶
La ressource système vous fournit des informations et des fonctions pratiques. La ressource système se trouve à l'adresse /api/system.
Générer des identifiants¶
Pour générer des identifiants DHIS2 valides et aléatoires, vous pouvez effectuer une requête GET à cette ressource :
/api/33/system/id?limit=3
Le paramètre de requête limit est facultatif et indique le nombre d'identifiants à renvoyer avec la réponse. La valeur par défaut est de renvoyer un seul identifiant. La réponse contiendra un objet JSON avec un tableau nommé codes, similaire à ceci :
{
"codes": [
"Y0moqFplrX4",
"WI0VHXuWQuV",
"BRJNBBpu4ki"
]
}
Le format DHIS2 UID répond à ces critères :
-
Long de 11 caractères.
-
Caractères alphanumériques uniquement, c'est-à-dire caractères alphabétiques ou numériques (A-Za-z0-9).
-
Commencez par un caractère alphabétique (A-Za-z).
Visualiser les informations du système¶
Pour obtenir des informations sur le système actuel, vous pouvez envoyer une requête GET à cette URL :
/api/33/system/info
Les formats de réponse JSON et JSONP sont pris en charge. La réponse info système comprend actuellement les propriétés suivantes.
{
"contextPath": "http://yourdomain.com",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/29.0.1547.62",
"calendar": "iso8601",
"dateFormat": "yyyy-mm-dd",
"serverDate": "2021-01-05T09:16:03.548",
"serverTimeZoneId": "Etc/UTC",
"serverTimeZoneDisplayName": "Coordinated Universal Time",
"version": "2.13-SNAPSHOT",
"revision": "11852",
"buildTime": "2013-09-01T21:36:21.000+0000",
"serverDate": "2013-09-02T12:35:54.311+0000",
"environmentVariable": "DHIS2_HOME",
"javaVersion": "1.7.0_06",
"javaVendor": "Oracle Corporation",
"javaIoTmpDir": "/tmp",
"javaOpts": "-Xms600m -Xmx1500m -XX:PermSize=400m -XX:MaxPermSize=500m",
"osName": "Linux",
"osArchitecture": "amd64",
"osVersion": "3.2.0-52-generic",
"externalDirectory": "/home/dhis/config/dhis2",
"databaseInfo": {
"type": "PostgreSQL",
"name": "dhis2",
"user": "dhis",
"spatialSupport": false
},
"memoryInfo": "Mem Total in JVM: 848 Free in JVM: 581 Max Limit: 1333",
"cpuCores": 8
}
Remarque
Si l'utilisateur qui demande cette ressource n'a pas toute l'autorité nécessaire, seules les propriétés qui ne sont pas considérées comme sensibles seront incluses.
Pour obtenir des informations sur le contexte du système uniquement, c'est-à-dire contextPath et userAgent, vous pouvez faire une requête GET à l'URL ci-dessous. Les formats de réponse JSON et JSONP sont supportés :
/api/33/system/context
Vérifier si la combinaison du nom d'utilisateur et du mot de passe est correcte¶
Pour vérifier si les informations d'identification d'un utilisateur (combinaison d'un nom d'utilisateur et d'un mot de passe) est correcte, vous pouvez envoyer une requête GET à la ressource suivante en utilisant l'option authentification de base :
/api/33/system/ping
Vous pouvez détecter le résultat de l'authentification en inspectant le code du statut HTTP de l'en-tête de la réponse. La signification des codes de statut possibles sont énumérés ci-dessous. Notez que cela s'applique aux demandes d'API Web en général.
Tableau : Codes de statut HTTP
| Code de statut HTTP | Description ; | Résultat |
|---|---|---|
| 200 | OK | L'authentification a réussi |
| 302 | Trouvé | Aucune information d'identification n'a été fournie avec la requête - aucune authentification n'a eu lieu. |
| 401 | Non autorisé | La combinaison du nom d'utilisateur et du mot de passe est incorrecte - l'authentification a échoué. |
Consulter le statut d'une tâche asynchrone¶
Les tâches qui prennent souvent beaucoup de temps peuvent être exécutées de manière asynchrone. Après avoir initié une tâche asynchrone, vous pouvez interroger son statut via la ressource system/tasks en fournissant la catégorie de tâche et l'identifiant de la tâche qui vous intéresse.
Lorsque vous demandez le statut d'une tâche, vous devez vous authentifier en tant qu'utilisateur ayant initié la tâche. Les catégories de tâches suivantes sont prises en charge :
Tableau : Catégories de tâches
| Identificateur | Description ; |
|---|---|
| TABLE_ANALYTIQUE | Génération des tableaux analytiques. |
| TABLE_DE RESSOURCES | Génération des tableaux de ressources. |
| SURVEILLANCE | Traitement des règles de validation des données de surveillance/contrôle. |
| IMPORTATION_DE DONNÉES | Importation de données. |
| IMPORTATION_D'ÉVÉNEMENTS | Importation d'événements. |
| IMPORTATION_D'INSCRIPTION | Importation des inscriptions. |
| IMPORTATION_D'IES | Importation d'instances d'entités suivies. |
| IMPORTATION_DE MÉTADONNÉES | Importation de métadonnées. |
| INTÉGRITÉ_DES DONNÉES | Traitement des contrôles d'intégrité des données. |
Chaque tâche asynchrone se voit automatiquement attribuer un identifiant qui peut être utilisé pour contrôler le statut de la tâche. Cet identifiant de tâche est renvoyé par l'API lorsque vous lancez une tâche asynchrone via les différents endpoints activés asynchrones.
Surveillance d'une tâche¶
Vous pouvez consulter l'état des tâches par le biais d'une requête GET à la ressource des tâches du système, comme suit :
/api/33/system/tasks/{task-category-id}/{task-id}
Un exemple de requête peut ressembler à ceci :
/api/33/system/tasks/DATAVALUE_IMPORT/j8Ki6TgreFw
La réponse fournira des informations sur le statut, telles que le niveau de notification, la catégorie, l'heure et le statut. La propriété terminé indique si le processus est considéré comme terminé.
[{
"uid": "hpiaeMy7wFX",
"level": "INFO",
"category": "DATAVALUE_IMPORT",
"time": "2015-09-02T07:43:14.595+0000",
"message": "Import done",
"completed": true
}]
Suivre toutes les tâches d'une catégorie¶
Vous pouvez consulter toutes les tâches d'une catégorie spécifique par le biais d'une requête GET vers la ressource des tâches du système :
/api/33/system/tasks/{task-category-id}
Un exemple de requête pour consulter le statut des tâches d'importation de données ressemble à ceci :
/api/33/system/tasks/DATAVALUE_IMPORT
Suivre toutes les tâches¶
Vous pouvez demander une liste de toutes les tâches en cours d'exécution dans le système avec une requête GET à la ressource tâches du système :
/api/33/system/tasks
La réponse ressemblera à ceci :
[{
"EVENT_IMPORT": {},
"DATA_STATISTICS": {},
"RESOURCE_TABLE": {},
"FILE_RESOURCE_CLEANUP": {},
"METADATA_IMPORT": {},
"CREDENTIALS_EXPIRY_ALERT": {},
"SMS_SEND": {},
"MOCK": {},
"ANALYTICSTABLE_UPDATE": {},
"COMPLETE_DATA_SET_REGISTRATION_IMPORT": {},
"DATAVALUE_IMPORT": {},
"DATA_SET_NOTIFICATION": {},
"DATA_INTEGRITY": {
"OB1qGRlCzap": [{
"uid": "LdHQK0PXZyF",
"level": "INFO",
"category": "DATA_INTEGRITY",
"time": "2018-03-26T15:02:32.171",
"message": "Data integrity checks completed in 38.31 seconds.",
"completed": true
}]
},
"PUSH_ANALYSIS": {},
"MONITORING": {},
"VALIDATION_RESULTS_NOTIFICATION": {},
"REMOVE_EXPIRED_RESERVED_VALUES": {},
"DATA_SYNC": {},
"SEND_SCHEDULED_MESSAGE": {},
"DATAVALUE_IMPORT_INTERNAL": {},
"PROGRAM_NOTIFICATIONS": {},
"META_DATA_SYNC": {},
"ANALYTICS_TABLE": {},
"PREDICTOR": {}
}]
Visualiser les résumés des tâches asynchrones¶
La ressource résumés de tâches vous permet de récupérer un résumé d'une invocation d'une tâche asynchrone. Vous devez spécifier la catégorie et, éventuellement l'identifiant de la tâche. L'identifiant de la tâche peut être récupéré à partir de la réponse de la requête API qui a initié la tâche asynchrone.
Pour récupérer le résumé d'une tâche spécifique, vous pouvez envoyer une requête à :
/api/33/system/taskSummaries/{task-category-id}/{task-id}
Un exemple de requête pourrait ressembler à ceci :
/api/33/system/taskSummaries/DATAVALUE_IMPORT/k72jHfF13J1
La réponse ressemblera à ceci :
{
"responseType": "ImportSummary",
"status": "SUCCESS",
"importOptions": {
"idSchemes": {},
"dryRun": false,
"async": true,
"importStrategy": "CREATE_AND_UPDATE",
"reportMode": "FULL",
"skipExistingCheck": false,
"sharing": false,
"skipNotifications": false,
"datasetAllowsPeriods": false,
"strictPeriods": false,
"strictCategoryOptionCombos": false,
"strictAttributeOptionCombos": false,
"strictOrganisationUnits": false,
"requireCategoryOptionCombo": false,
"requireAttributeOptionCombo": false,
"skipPatternValidation": false
},
"description": "Import process completed successfully",
"importCount": {
"imported": 0,
"updated": 431,
"ignored": 0,
"deleted": 0
},
"dataSetComplete": "false"
}
Vous pouvez également récupérer des résumés d'importation pour plusieurs tâches d'une catégorie spécifique avec une requête comme celle-ci :
/api/33/system/taskSummaries/{task-category-id}
Obtenir des informations sur la présentation¶
Vous pouvez récupérer les icônes de drapeaux disponibles au format JSON à l'aide d'une requête GET :
/api/33/system/flags
Vous pouvez récupérer les styles d'interface utilisateur disponibles au format JSON à l'aide d'une requête GET :
/api/33/system/styles
Résumé de l'indice Trigram¶
Les index de trigrammes peuvent être créés à l'aide des tâches d'optimisation de la recherche des trackers. Il est utile de savoir quels attributs des entités suivies sont indexés et lesquels ne le sont pas. L'API suivante peut être utilisée pour obtenir un résumé de l'état de l'index des trigrammes. L'API prend en charge la sélection et le filtrage des champs à l'aide du paramètre de requête de champ.
Les attributs correspondant à la propriété « indexedAttributes » sont actuellement indexés dans le système. Les attributs correspondant à la propriété « indexableAttributes » ne sont pas indexés actuellement mais sont candidats à la création d'index si nécessaire. Les attributs correspondant à la propriété « obsoleteIndexedAttributes » sont indexés dans le système, mais ces index sont obsolètes en raison de changements dans la configuration des attributs qui ne les rendent plus indexables.
GET /api/39/trigramSummary
Un exemple de réponse JSON ressemble à ceci :
{
"indexedAttributes": [{
"displayName": "First name",
"id": "w75KJ2mc4zz"
}, {
"displayName": "Last name",
"id": "zDhUuAYrxNC"
}],
"indexableAttributes": [{
"displayName": "Phone number",
"id": "P2cwLGskgxn"
}],
"obsoleteIndexedAttributes": [{
"displayName": "TB identifier",
"id": "xs8A6tQJY0s"
}, {
"displayName": "Provider ID",
"id": "DODgdr5Oo2v"
}]
}
Informations sur le cluster¶
Lorsque DHIS 2 est configuré en cluster, il est utile de savoir quel nœud du cluster agit en tant que principal nœud du cluster. L'API suivante peut être utilisée pour obtenir les détails de l'instance du nœud principal. L'API prend en charge les formats JSON et XML.
GET /api/36/cluster/leader
Un exemple de réponse JSON ressemble à ceci :
{
"leaderNodeId": "play-dhis2-org-dev",
"leaderNodeUuid": "d386e46b-26d4-4937-915c-025eb99c8cad",
"currentNodeId": "play-dhis2-org-dev",
"currentNodeUuid": "d386e46b-26d4-4937-915c-025eb99c8cad",
"leader": true
}
Éléments de données min-max¶
La ressource éléments de données min-max vous permet de définir des plages de valeurs minimales et maximales pour les éléments de données. Elle est unique en raison de la combinaison de l'unité d'organisation, de l'élément de données et de l'option de catégorie.
/api/minMaxDataElements
Tableau : Structure des données de l'élément Min-max
| Élément | Description ; | Type de données |
|---|---|---|
| source | Identifiant de l'unité d'organisation | Chaîne |
| élément de données | Identifiant de l'élément de données | Chaîne |
| Combinaison d'options | Identifiant de la combinaison d'options de catégorie de l'élément de données | Chaîne |
| min | Valeur minimale | Entier |
| max | Valeur maximale | Entier |
| généré | Indique si cet objet est généré par le système (et non défini manuellement). | Booléen |
Vous pouvez obtenir une liste de tous les éléments de données min-max à partir de la ressource suivante :
GET /api/minMaxDataElements.json
Vous pouvez filtrer la réponse comme suit :
GET /api/minMaxDataElements.json?filter=dataElement.id:eq:UOlfIjgN8X6
GET /api/minMaxDataElements.json?filter=dataElement.id:in:[UOlfIjgN8X6,xc8gmAKfO95]
Le paramètre de filtrage des éléments de données min-max prend en charge deux opérateurs : eq et in. Vous pouvez également utiliser le paramètre de requête fields.
GET /api/minMaxDataElements.json?fields=:all,dataElement[id,name]
Ajouter/mettre à jour l'élément de données min-max¶
Pour ajouter un nouvel élément de données min-max, utilisez la requête POST à :
POST /api/minMaxDataElements.json
Le format de contenu JSON se présente comme suit :
{
"min": 1,
"generated": false,
"max": 100,
"dataElement": {
"id": "UOlfIjgN8X6"
},
"source": {
"id": "DiszpKrYNg8"
},
"optionCombo": {
"id": "psbwp3CQEhs"
}
}
Si la combinaison de l'élément de données, de l'unité d'organisation et de la catégorie existe, la valeur min-max sera mise à jour.
Supprimer l'élément de données min-max¶
Pour supprimer un élément de données min-max, envoyez une requête avec la méthode DELETE :
DELETE /api/minMaxDataElements.json
Le contenu JSON est dans le même format que ci-dessus :
{
"min": 1,
"generated": false,
"max": 100,
"dataElement": {
"id": "UOlfIjgN8X6"
},
"source": {
"id": "DiszpKrYNg8"
},
"optionCombo": {
"id": "psbwp3CQEhs"
}
}
Exceptions de verrouillage¶
La ressource exceptions de blocage vous permet d'ouvrir des ensembles de données verrouillés pour la saisie de données pour un ensemble de données, une période et une unité d'organisation spécifiques. Vous pouvez lire les exceptions de verrouillage à partir de la ressource suivante :
/api/lockExceptions
Pour créer une nouvelle exception de verrouillage, vous pouvez utiliser une requête POST et spécifier l'ensemble de données, la période et l'unité d'organisation :
POST /api/lockExceptions?ds=BfMAe6Itzgt&pe=201709&ou=DiszpKrYNg8
Pour supprimer une exception de verrouillage, vous pouvez utiliser une syntaxe de demande similaire avec une requête DELETE :
DELETE /api/lockExceptions?ds=BfMAe6Itzgt&pe=201709&ou=DiszpKrYNg8