{"version": 1, "updated_at": "2026-10-17T10:06:39", "kpis": {"facilities": 15, "products": 30, "available_units": 159120.35, "monthly_consumption_units": 137805.0, "stock_coverage_months": 1.15, "in_transit_units": 10143.0, "consumption_units": 5292521.6, "replenishment_units": 5251143.77, "positions": 450, "snapshots": 1, "stockouts": 23, "critical": 67, "quarantine": 10, "demands": 59, "allocations": 31, "shipped_allocations": 12, "delivered_allocations": 19, "quality": 40, "pv": 10, "pv_serious": 6, "integrations": 6, "fleet_vehicles": 4, "vehicles_geolocated": 4, "product_master": 30, "posted_movements": 72, "open_alerts": 31, "inventory_variances": 28}, "transit": {"in_transit_units": 10143.0, "shipped_count": 12, "delivered_count": 19, "shipments": [{"id": 83, "name": "SIM-DEMO-ALLOC-3-5", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Thiès", "region": "Thiès", "date_shipped": "2026-10-14", "planned_delivery": "2026-10-24", "actual_delivery": "", "delay_planned_days": 10, "delay_actual_days": 3, "carrier": "Transport régional de démonstration", "tracking_ref": "SIM-DEMO-TRK-3-5", "temperature_ok": true, "total_allocated": 186.0, "total_delivered": 0.0, "fulfillment_rate": 0.0, "items_count": 1, "products": [{"name": "[120210] INDOMETACINE 25MG CP.", "qty_allocated": 186.0, "qty_delivered": 0.0, "lot": "N/A"}]}, {"id": 82, "name": "SIM-DEMO-ALLOC-2-12", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Dakar", "region": "Dakar", "date_shipped": "2026-10-14", "planned_delivery": "2026-10-24", "actual_delivery": "", "delay_planned_days": 10, "delay_actual_days": 3, "carrier": "Transport régional de démonstration", "tracking_ref": "SIM-DEMO-TRK-2-12", "temperature_ok": true, "total_allocated": 246.0, "total_delivered": 0.0, "fulfillment_rate": 0.0, "items_count": 1, "products": [{"name": "[120840] TRAMADOL 100MG/2ML", "qty_allocated": 246.0, "qty_delivered": 0.0, "lot": "N/A"}]}, {"id": 81, "name": "SIM-DEMO-ALLOC-1-19", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "PNA — Magasin central de Diamniadio", "region": "Dakar", "date_shipped": "2026-10-14", "planned_delivery": "2026-10-24", "actual_delivery": "", "delay_planned_days": 10, "delay_actual_days": 3, "carrier": "Transport régional de démonstration", "tracking_ref": "SIM-DEMO-TRK-1-19", "temperature_ok": true, "total_allocated": 306.0, "total_delivered": 0.0, "fulfillment_rate": 0.0, "items_count": 1, "products": [{"name": "[120341] PARACETAMOL 0.5G INJ.", "qty_allocated": 306.0, "qty_delivered": 0.0, "lot": "N/A"}]}, {"id": 14, "name": "ALLOC/2026-Q2/PNA-SR-DAK", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Dakar", "region": "Dakar", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-04", "delay_planned_days": 14, "delay_actual_days": 12, "carrier": "Camions PNA", "tracking_ref": "TRK-0014-62772", "temperature_ok": true, "total_allocated": 29526.0, "total_delivered": 27688.0, "fulfillment_rate": 93.8, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3503.0, "qty_delivered": 3237.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1769.0, "qty_delivered": 1695.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 775.0, "qty_delivered": 701.0, "lot": "N/A"}]}, {"id": 13, "name": "ALLOC/2026-Q2/PNA-SR-THI", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Thiès", "region": "Thiès", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-11", "delay_planned_days": 14, "delay_actual_days": 19, "carrier": "DHL Express", "tracking_ref": "TRK-0013-21508", "temperature_ok": true, "total_allocated": 26716.0, "total_delivered": 25354.0, "fulfillment_rate": 94.9, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2909.0, "qty_delivered": 2828.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3680.0, "qty_delivered": 3382.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 2189.0, "qty_delivered": 2005.0, "lot": "N/A"}]}, {"id": 12, "name": "ALLOC/2026-Q2/PNA-SR-SL", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "", "delay_planned_days": 14, "delay_actual_days": 178, "carrier": "DHL Logistics Dakar", "tracking_ref": "TRK-0012-79299", "temperature_ok": true, "total_allocated": 19194.0, "total_delivered": 18385.0, "fulfillment_rate": 95.8, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1157.0, "qty_delivered": 1093.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2306.0, "qty_delivered": 2108.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3197.0, "qty_delivered": 2893.0, "lot": "N/A"}]}, {"id": 11, "name": "ALLOC/2026-Q2/PNA-SR-DL", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Diourbel", "region": "Diourbel", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-09", "delay_planned_days": 14, "delay_actual_days": 17, "carrier": "DHL Express", "tracking_ref": "TRK-0011-33462", "temperature_ok": true, "total_allocated": 26246.0, "total_delivered": 24679.0, "fulfillment_rate": 94.0, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1617.0, "qty_delivered": 1595.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 734.0, "qty_delivered": 684.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 2071.0, "qty_delivered": 2069.0, "lot": "N/A"}]}, {"id": 10, "name": "ALLOC/2026-Q2/PNA-SR-FK", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Fatick", "region": "Fatick", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-11", "delay_planned_days": 14, "delay_actual_days": 19, "carrier": "TRANSDIAGNE", "tracking_ref": "TRK-0010-29959", "temperature_ok": true, "total_allocated": 26261.0, "total_delivered": 24784.0, "fulfillment_rate": 94.4, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2011.0, "qty_delivered": 1859.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2111.0, "qty_delivered": 2070.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3262.0, "qty_delivered": 3068.0, "lot": "N/A"}]}, {"id": 9, "name": "ALLOC/2026-Q2/PNA-SR-KL", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Kaolack", "region": "Kaolack", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "", "delay_planned_days": 14, "delay_actual_days": 178, "carrier": "Prestataire régional", "tracking_ref": "TRK-0009-99439", "temperature_ok": true, "total_allocated": 23827.0, "total_delivered": 22398.0, "fulfillment_rate": 94.0, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1956.0, "qty_delivered": 1911.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3332.0, "qty_delivered": 3087.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3812.0, "qty_delivered": 3511.0, "lot": "N/A"}]}, {"id": 8, "name": "ALLOC/2026-Q2/PNA-SR-LG", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Louga", "region": "Louga", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-10", "delay_planned_days": 14, "delay_actual_days": 18, "carrier": "Prestataire régional", "tracking_ref": "TRK-0008-59018", "temperature_ok": true, "total_allocated": 23899.0, "total_delivered": 22654.0, "fulfillment_rate": 94.8, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1815.0, "qty_delivered": 1739.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3873.0, "qty_delivered": 3552.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 1288.0, "qty_delivered": 1240.0, "lot": "N/A"}]}, {"id": 7, "name": "ALLOC/2026-Q2/PNA-SR-MT", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Matam", "region": "Matam", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-07", "delay_planned_days": 14, "delay_actual_days": 15, "carrier": "TRANSDIAGNE", "tracking_ref": "TRK-0007-65265", "temperature_ok": true, "total_allocated": 25339.0, "total_delivered": 23969.0, "fulfillment_rate": 94.6, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3115.0, "qty_delivered": 2892.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2748.0, "qty_delivered": 2495.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3335.0, "qty_delivered": 3067.0, "lot": "N/A"}]}, {"id": 6, "name": "ALLOC/2026-Q2/PNA-SR-TC", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Tambacounda", "region": "Tambacounda", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "", "delay_planned_days": 14, "delay_actual_days": 178, "carrier": "GIE Transport Santé", "tracking_ref": "TRK-0006-74130", "temperature_ok": true, "total_allocated": 25006.0, "total_delivered": 24053.0, "fulfillment_rate": 96.2, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 845.0, "qty_delivered": 803.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2500.0, "qty_delivered": 2467.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3180.0, "qty_delivered": 3126.0, "lot": "N/A"}]}, {"id": 5, "name": "ALLOC/2026-Q2/PNA-SR-KD", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Kédougou", "region": "Kédougou", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-05", "delay_planned_days": 14, "delay_actual_days": 13, "carrier": "DHL Express", "tracking_ref": "TRK-0005-60209", "temperature_ok": true, "total_allocated": 19395.0, "total_delivered": 18319.0, "fulfillment_rate": 94.5, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1611.0, "qty_delivered": 1501.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1553.0, "qty_delivered": 1409.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 1510.0, "qty_delivered": 1429.0, "lot": "N/A"}]}, {"id": 4, "name": "ALLOC/2026-Q2/PNA-SR-KZ", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Kolda", "region": "Kolda", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-08", "delay_planned_days": 14, "delay_actual_days": 16, "carrier": "Prestataire régional", "tracking_ref": "TRK-0004-21348", "temperature_ok": true, "total_allocated": 19627.0, "total_delivered": 18489.0, "fulfillment_rate": 94.2, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1407.0, "qty_delivered": 1285.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1823.0, "qty_delivered": 1802.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 2045.0, "qty_delivered": 1854.0, "lot": "N/A"}]}, {"id": 3, "name": "ALLOC/2026-Q2/PNA-SR-ZG", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "", "delay_planned_days": 14, "delay_actual_days": 178, "carrier": "TRANSDIAGNE", "tracking_ref": "TRK-0003-27464", "temperature_ok": true, "total_allocated": 21629.0, "total_delivered": 20532.0, "fulfillment_rate": 94.9, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3368.0, "qty_delivered": 3153.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 4624.0, "qty_delivered": 4265.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 1423.0, "qty_delivered": 1421.0, "lot": "N/A"}]}, {"id": 2, "name": "ALLOC/2026-Q2/PNA-SR-SD", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Sédhiou", "region": "Sédhiou", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-07", "delay_planned_days": 14, "delay_actual_days": 15, "carrier": "GIE Transport Santé", "tracking_ref": "TRK-0002-33435", "temperature_ok": true, "total_allocated": 22927.0, "total_delivered": 21932.0, "fulfillment_rate": 95.7, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3577.0, "qty_delivered": 3572.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3021.0, "qty_delivered": 2921.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 653.0, "qty_delivered": 634.0, "lot": "N/A"}]}, {"id": 1, "name": "ALLOC/2026-Q2/PNA-SR-KF", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Kaffrine", "region": "Kaffrine", "date_shipped": "2026-04-22", "planned_delivery": "2026-05-06", "actual_delivery": "2026-05-07", "delay_planned_days": 14, "delay_actual_days": 15, "carrier": "SOTRAC Fret", "tracking_ref": "TRK-0001-59906", "temperature_ok": true, "total_allocated": 15623.0, "total_delivered": 15060.0, "fulfillment_rate": 96.4, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1573.0, "qty_delivered": 1525.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2063.0, "qty_delivered": 2063.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 760.0, "qty_delivered": 699.0, "lot": "N/A"}]}, {"id": 28, "name": "ALLOC/2026-Q1/PNA-SR-DAK", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Dakar", "region": "Dakar", "date_shipped": "2026-01-22", "planned_delivery": "2026-02-05", "actual_delivery": "2026-02-07", "delay_planned_days": 14, "delay_actual_days": 16, "carrier": "DHL Logistics Dakar", "tracking_ref": "TRK-0028-28731", "temperature_ok": true, "total_allocated": 28789.0, "total_delivered": 27303.0, "fulfillment_rate": 94.8, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1159.0, "qty_delivered": 1069.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2069.0, "qty_delivered": 1910.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 3550.0, "qty_delivered": 3231.0, "lot": "N/A"}]}, {"id": 27, "name": "ALLOC/2026-Q1/PNA-SR-THI", "state": "shipped", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Thiès", "region": "Thiès", "date_shipped": "2026-01-22", "planned_delivery": "2026-02-05", "actual_delivery": "", "delay_planned_days": 14, "delay_actual_days": 268, "carrier": "SOTRAC Fret", "tracking_ref": "TRK-0027-92839", "temperature_ok": true, "total_allocated": 18800.0, "total_delivered": 17750.0, "fulfillment_rate": 94.4, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 2750.0, "qty_delivered": 2534.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3675.0, "qty_delivered": 3612.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 1087.0, "qty_delivered": 1008.0, "lot": "N/A"}]}, {"id": 26, "name": "ALLOC/2026-Q1/PNA-SR-SL", "state": "delivered", "source": "PNA — Magasin central de Diamniadio", "destination": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "date_shipped": "2026-01-22", "planned_delivery": "2026-02-05", "actual_delivery": "2026-02-04", "delay_planned_days": 14, "delay_actual_days": 13, "carrier": "DHL Express", "tracking_ref": "TRK-0026-64922", "temperature_ok": true, "total_allocated": 20821.0, "total_delivered": 19710.0, "fulfillment_rate": 94.7, "items_count": 10, "products": [{"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 3808.0, "qty_delivered": 3577.0, "lot": "N/A"}, {"name": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "qty_allocated": 1299.0, "qty_delivered": 1214.0, "lot": "N/A"}, {"name": "[050120] METRONIDAZOLE 200MG/5ML SP.", "qty_allocated": 1593.0, "qty_delivered": 1557.0, "lot": "N/A"}]}]}, "workflow": {"demand_states": {"approved": 31, "draft": 14, "submitted": 14}, "allocation_states": {"delivered": 19, "shipped": 12}, "quality_states": {"quarantine": 8, "rejected": 8, "released": 24}, "inventory_states": {"closed": 4, "in_progress": 2, "planned": 1, "validated": 3}, "movement_types": {"adjustment": 24, "transfer_in": 24, "transfer_out": 24}, "alert_types": {"data": 1, "delivery": 3, "low_stock": 2, "quality": 2, "stockout": 23}, "pv_states": {"closed": 2, "investigation": 2, "new": 2, "reported": 2, "triage": 2}, "pv_event_types": {"adverse": 5, "medication_error": 2, "quality": 3}, "integration_states": {"duplicate": 1, "processed": 1, "received": 1, "rejected": 1, "retry": 1, "validated": 1}, "fleet_states": {"assigned": 1, "available": 1, "immobilized": 1, "maintenance": 1}, "product_criticality": {"high": 6, "medium": 24}}, "status": [{"label": "critical", "value": 67}, {"label": "healthy", "value": 270}, {"label": "low", "value": 67}, {"label": "overstock", "value": 13}, {"label": "quarantine", "value": 10}, {"label": "stockout", "value": 23}], "regions": [{"region": "Dakar", "available": 18734.350000000002, "consumption": 16560.0, "positions": 60, "risk": 12}, {"region": "Diourbel", "available": 11368.5, "consumption": 10065.0, "positions": 30, "risk": 8}, {"region": "Saint-Louis", "available": 10760.65, "consumption": 9555.0, "positions": 30, "risk": 8}, {"region": "Fatick", "available": 11182.150000000001, "consumption": 9735.0, "positions": 30, "risk": 7}, {"region": "Kaolack", "available": 10460.699999999999, "consumption": 9825.0, "positions": 30, "risk": 7}, {"region": "Kédougou", "available": 11284.65, "consumption": 9345.0, "positions": 30, "risk": 7}, {"region": "Louga", "available": 9925.0, "consumption": 9495.0, "positions": 30, "risk": 7}, {"region": "Tambacounda", "available": 11358.700000000003, "consumption": 9255.0, "positions": 30, "risk": 7}, {"region": "Thiès", "available": 10960.55, "consumption": 9045.0, "positions": 30, "risk": 7}, {"region": "Kaffrine", "available": 10621.799999999997, "consumption": 8445.0, "positions": 30, "risk": 6}, {"region": "Kolda", "available": 10794.4, "consumption": 9015.0, "positions": 30, "risk": 6}, {"region": "Matam", "available": 11820.200000000003, "consumption": 9585.0, "positions": 30, "risk": 6}, {"region": "Sédhiou", "available": 9415.1, "consumption": 8775.0, "positions": 30, "risk": 6}, {"region": "Ziguinchor", "available": 10433.6, "consumption": 9105.0, "positions": 30, "risk": 6}], "trend": [{"date": "2023-11-01", "ending_stock": 255001.22999999998, "consumption": 123483.85999999997, "replenishment": 125768.16000000005, "stockouts": 0, "risk": 0}, {"date": "2023-12-01", "ending_stock": 254026.1299999999, "consumption": 130012.75, "replenishment": 129492.66000000003, "stockouts": 0, "risk": 0}, {"date": "2024-01-01", "ending_stock": 252984.95999999988, "consumption": 138819.7, "replenishment": 138264.85000000006, "stockouts": 0, "risk": 0}, {"date": "2024-02-01", "ending_stock": 255200.33000000016, "consumption": 147689.62000000002, "replenishment": 150421.73000000004, "stockouts": 0, "risk": 0}, {"date": "2024-03-01", "ending_stock": 254042.50000000003, "consumption": 154374.60000000006, "replenishment": 153756.88, "stockouts": 0, "risk": 0}, {"date": "2024-04-01", "ending_stock": 252863.5100000001, "consumption": 157198.37000000002, "replenishment": 156569.5999999999, "stockouts": 0, "risk": 0}, {"date": "2024-05-01", "ending_stock": 255196.19000000006, "consumption": 155511.30000000002, "replenishment": 158388.67000000016, "stockouts": 0, "risk": 0}, {"date": "2024-06-01", "ending_stock": 254072.1700000001, "consumption": 149872.51999999996, "replenishment": 149272.95999999982, "stockouts": 0, "risk": 0}, {"date": "2024-07-01", "ending_stock": 242004.2699999998, "consumption": 141908.72999999998, "replenishment": 130337.30999999998, "stockouts": 0, "risk": 26}, {"date": "2024-08-01", "ending_stock": 236250.93999999992, "consumption": 133884.40999999995, "replenishment": 125746.79999999999, "stockouts": 26, "risk": 34}, {"date": "2024-09-01", "ending_stock": 250288.27999999997, "consumption": 128097.43999999997, "replenishment": 142583.43, "stockouts": 0, "risk": 0}, {"date": "2024-10-01", "ending_stock": 249341.32000000007, "consumption": 126261.47000000007, "replenishment": 125756.21999999997, "stockouts": 0, "risk": 0}, {"date": "2024-11-01", "ending_stock": 251276.90999999995, "consumption": 129040.65000000002, "replenishment": 131427.73999999996, "stockouts": 0, "risk": 0}, {"date": "2024-12-01", "ending_stock": 250257.87000000002, "consumption": 135863.20999999996, "replenishment": 135319.70999999993, "stockouts": 0, "risk": 0}, {"date": "2025-01-01", "ending_stock": 249169.82000000007, "consumption": 145066.55000000005, "replenishment": 144486.72000000012, "stockouts": 0, "risk": 0}, {"date": "2025-02-01", "ending_stock": 251484.93999999983, "consumption": 154335.4900000001, "replenishment": 157190.59999999983, "stockouts": 0, "risk": 0}, {"date": "2025-03-01", "ending_stock": 250275.11, "consumption": 161321.45999999996, "replenishment": 160675.87999999992, "stockouts": 0, "risk": 0}, {"date": "2025-04-01", "ending_stock": 249043.0700000001, "consumption": 164272.30000000005, "replenishment": 163615.16999999995, "stockouts": 0, "risk": 0}, {"date": "2025-05-01", "ending_stock": 251480.57999999993, "consumption": 162509.3100000001, "replenishment": 165516.10000000003, "stockouts": 0, "risk": 0}, {"date": "2025-06-01", "ending_stock": 245204.2300000001, "consumption": 156616.80000000013, "replenishment": 150888.32999999993, "stockouts": 0, "risk": 19}, {"date": "2025-07-01", "ending_stock": 239259.7900000002, "consumption": 148294.65, "replenishment": 142868.96999999994, "stockouts": 0, "risk": 27}, {"date": "2025-08-01", "ending_stock": 236570.42000000007, "consumption": 139909.19999999992, "replenishment": 137709.65000000002, "stockouts": 0, "risk": 29}, {"date": "2025-09-01", "ending_stock": 249295.3899999998, "consumption": 133861.84999999998, "replenishment": 147055.67999999996, "stockouts": 0, "risk": 0}, {"date": "2025-10-01", "ending_stock": 248305.83999999985, "consumption": 131943.25, "replenishment": 131415.28999999995, "stockouts": 0, "risk": 0}, {"date": "2025-11-01", "ending_stock": 250328.52, "consumption": 134847.4899999999, "replenishment": 137341.94999999995, "stockouts": 0, "risk": 0}, {"date": "2025-12-01", "ending_stock": 249263.74000000002, "consumption": 141977.13999999987, "replenishment": 141409.32000000004, "stockouts": 0, "risk": 0}, {"date": "2026-01-01", "ending_stock": 248126.73, "consumption": 151594.64999999997, "replenishment": 150988.61999999988, "stockouts": 0, "risk": 0}, {"date": "2026-02-01", "ending_stock": 250545.9900000001, "consumption": 161280.7400000001, "replenishment": 164264.27000000005, "stockouts": 0, "risk": 0}, {"date": "2026-03-01", "ending_stock": 249281.5999999999, "consumption": 168581.25000000017, "replenishment": 167906.69000000018, "stockouts": 0, "risk": 0}, {"date": "2026-04-01", "ending_stock": 247994.09999999986, "consumption": 171664.56999999992, "replenishment": 170977.90000000008, "stockouts": 0, "risk": 0}, {"date": "2026-05-01", "ending_stock": 245205.73999999987, "consumption": 169822.21999999986, "replenishment": 167628.5300000001, "stockouts": 0, "risk": 0}, {"date": "2026-06-01", "ending_stock": 239362.58999999997, "consumption": 163664.5799999999, "replenishment": 158394.16, "stockouts": 0, "risk": 42}, {"date": "2026-07-01", "ending_stock": 226032.42999999996, "consumption": 154968.02, "replenishment": 142180.11999999994, "stockouts": 0, "risk": 65}, {"date": "2026-08-01", "ending_stock": 218462.8299999998, "consumption": 146205.13999999993, "replenishment": 136791.18999999994, "stockouts": 18, "risk": 74}, {"date": "2026-09-01", "ending_stock": 212901.7499999999, "consumption": 139885.60999999996, "replenishment": 128343.74000000005, "stockouts": 23, "risk": 79}, {"date": "2026-10-01", "ending_stock": 211919.8400000001, "consumption": 137880.70000000004, "replenishment": 130388.17000000006, "stockouts": 23, "risk": 79}], "period_trends": {"stocks": {"labels": ["2023-11", "2023-12", "2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06", "2024-07", "2024-08", "2024-09", "2024-10", "2024-11", "2024-12", "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Ruptures", "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 23, 23]}, {"label": "Situations critiques", "data": [0, 0, 0, 0, 0, 0, 0, 0, 26, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 27, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 65, 56, 56, 56]}]}, "demand": {"labels": ["2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Demandes enregistrées", "data": [14, 0, 0, 14, 0, 0, 14, 0, 0, 17]}, {"label": "Demandes approuvées", "data": [14, 0, 0, 14, 0, 0, 0, 0, 0, 3]}]}, "transit": {"labels": ["2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Allocations expédiées", "data": [14, 0, 0, 14, 0, 0, 0, 0, 0, 3]}, {"label": "Allocations livrées", "data": [0, 9, 0, 0, 10, 0, 0, 0, 0, 0]}]}, "quality": {"labels": ["2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Contrôles qualité", "data": [3, 4, 5, 4, 4, 5, 4, 5, 4, 2]}, {"label": "Rejets et quarantaines", "data": [2, 2, 2, 1, 1, 2, 2, 2, 2, 0]}, {"label": "Inventaires", "data": [0, 0, 0, 0, 1, 2, 2, 2, 2, 1]}]}, "pv": {"labels": ["2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Signalements", "data": [1, 2, 3, 3, 1]}, {"label": "Cas graves", "data": [0, 2, 2, 2, 0]}]}, "fleet": {"labels": ["2023-02", "2023-03", "2023-04", "2023-05", "2023-06", "2023-07", "2023-08", "2023-09", "2023-10", "2023-11", "2023-12", "2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06", "2024-07", "2024-08", "2024-09", "2024-10", "2024-11", "2024-12", "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Relevés de position", "data": [8, 0, 0, 8, 0, 0, 8, 0, 4, 4, 0, 0, 8, 0, 0, 8, 0, 0, 8, 0, 4, 4, 0, 0, 8, 0, 0, 8, 0, 0, 8, 0, 4, 4, 0, 0, 8, 0, 0, 8, 0, 0, 8, 0, 4]}, {"label": "Relevés à précision dégradée", "data": [2, 0, 0, 2, 0, 0, 2, 0, 1, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 1, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 1, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 1]}]}, "integration": {"labels": ["2023-02", "2023-03", "2023-04", "2023-05", "2023-06", "2023-07", "2023-08", "2023-09", "2023-10", "2023-11", "2023-12", "2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06", "2024-07", "2024-08", "2024-09", "2024-10", "2024-11", "2024-12", "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Événements reçus", "data": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, {"label": "Événements rejetés", "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}]}, "referential": {"labels": ["2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06", "2026-07", "2026-08", "2026-09", "2026-10"], "datasets": [{"label": "Versions publiées", "data": [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, {"label": "Versions en revue", "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}]}}, "risks": [{"product": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "facility": "SR/PRA — Sédhiou", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "facility": "SR/PRA — Louga", "coverage": 0.0, "status": "quarantine", "available": 0.0}, {"product": "[100390] HALOTHANE SOL", "facility": "SR/PRA — Kolda", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100390] HALOTHANE SOL", "facility": "SR/PRA — Fatick", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100391] HALOTHANE SOL FL/100ML", "facility": "SR/PRA — Matam", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100391] HALOTHANE SOL FL/100ML", "facility": "SR/PRA — Thiès", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100640] BUPIVACAÏNE 0.5% /20ML ISOBARE AMP INJ", "facility": "SR/PRA — Ziguinchor", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100640] BUPIVACAÏNE 0.5% /20ML ISOBARE AMP INJ", "facility": "SR/PRA — Kaolack", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[100640] BUPIVACAÏNE 0.5% /20ML ISOBARE AMP INJ", "facility": "PNA — Magasin central de Diamniadio", "coverage": 0.0, "status": "quarantine", "available": 0.0}, {"product": "[110140] LIDOCAÏNE 2% INJ.", "facility": "SR/PRA — Louga", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[110140] LIDOCAÏNE 2% INJ.", "facility": "SR/PRA — Dakar", "coverage": 0.0, "status": "stockout", "available": 0.0}, {"product": "[110142] LIDOCAÏNE 2% INJ. ADRENALINE INJ", "facility": "SR/PRA — Kaffrine", "coverage": 0.0, "status": "quarantine", "available": 0.0}], "latest": [{"date": "2026-10-01", "ending_stock": 211919.8400000001, "consumption": 137880.70000000004, "replenishment": 130388.17000000006, "stockouts": 23, "risk": 79}], "facility_map": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "available": 9292.55, "in_transit": 306.0, "risk": 6, "coverage": 1.19}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "available": 9441.8, "in_transit": 246.0, "risk": 6, "coverage": 1.19}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "available": 11368.5, "in_transit": 0.0, "risk": 8, "coverage": 1.14}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "available": 11182.15, "in_transit": 626.0, "risk": 7, "coverage": 1.16}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "available": 10621.8, "in_transit": 1617.0, "risk": 6, "coverage": 1.19}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "available": 10460.7, "in_transit": 1429.0, "risk": 7, "coverage": 1.06}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "available": 10794.4, "in_transit": 962.0, "risk": 6, "coverage": 1.19}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "available": 11284.65, "in_transit": 0.0, "risk": 7, "coverage": 1.17}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "available": 9925.0, "in_transit": 0.0, "risk": 7, "coverage": 1.04}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "available": 11820.2, "in_transit": 862.0, "risk": 6, "coverage": 1.19}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "available": 10760.65, "in_transit": 809.0, "risk": 8, "coverage": 1.12}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "available": 9415.1, "in_transit": 0.0, "risk": 6, "coverage": 1.19}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "available": 11358.7, "in_transit": 953.0, "risk": 7, "coverage": 1.15}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "available": 10960.55, "in_transit": 1236.0, "risk": 7, "coverage": 1.17}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "available": 10433.6, "in_transit": 1097.0, "risk": 6, "coverage": 1.19}], "vehicle_map": [{"id": 20, "name": "Toyota/Camion SEN-PNA/SIM-SEN-01", "lat": 14.7158, "lng": -17.1958, "updated_at": "2026-10-10 09:30:00", "status": "available", "region": "Dakar", "facility_id": 1}, {"id": 21, "name": "Toyota/Camion SEN-PNA/SIM-SEN-02", "lat": 14.7167, "lng": -17.4677, "updated_at": "2026-10-10 10:30:00", "status": "assigned", "region": "Dakar", "facility_id": 2}, {"id": 22, "name": "Toyota/Camion SEN-PNA/SIM-SEN-03", "lat": 14.7898, "lng": -16.9272, "updated_at": "2026-10-10 11:30:00", "status": "maintenance", "region": "Thiès", "facility_id": 3}, {"id": 23, "name": "Toyota/Camion SEN-PNA/SIM-SEN-04", "lat": 16.0314, "lng": -16.4806, "updated_at": "2026-10-10 12:30:00", "status": "immobilized", "region": "Saint-Louis", "facility_id": 4}], "adr_map": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "reports": 1, "adverse_events": 1, "serious_reports": 0}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "reports": 1, "adverse_events": 1, "serious_reports": 1}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "reports": 1, "adverse_events": 0, "serious_reports": 0}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "reports": 1, "adverse_events": 1, "serious_reports": 1}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "reports": 1, "adverse_events": 1, "serious_reports": 0}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "reports": 1, "adverse_events": 1, "serious_reports": 0}], "workflow_maps": {"overview": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "available": 9292.55, "in_transit": 306.0, "risk": 6, "coverage": 1.19}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "available": 9441.8, "in_transit": 246.0, "risk": 6, "coverage": 1.19}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "available": 11368.5, "in_transit": 0.0, "risk": 8, "coverage": 1.14}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "available": 11182.15, "in_transit": 626.0, "risk": 7, "coverage": 1.16}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "available": 10621.8, "in_transit": 1617.0, "risk": 6, "coverage": 1.19}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "available": 10460.7, "in_transit": 1429.0, "risk": 7, "coverage": 1.06}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "available": 10794.4, "in_transit": 962.0, "risk": 6, "coverage": 1.19}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "available": 11284.65, "in_transit": 0.0, "risk": 7, "coverage": 1.17}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "available": 9925.0, "in_transit": 0.0, "risk": 7, "coverage": 1.04}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "available": 11820.2, "in_transit": 862.0, "risk": 6, "coverage": 1.19}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "available": 10760.65, "in_transit": 809.0, "risk": 8, "coverage": 1.12}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "available": 9415.1, "in_transit": 0.0, "risk": 6, "coverage": 1.19}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "available": 11358.7, "in_transit": 953.0, "risk": 7, "coverage": 1.15}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "available": 10960.55, "in_transit": 1236.0, "risk": 7, "coverage": 1.17}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "available": 10433.6, "in_transit": 1097.0, "risk": 6, "coverage": 1.19}], "stocks": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "available": 9292.55, "in_transit": 306.0, "risk": 6, "coverage": 1.19}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "available": 9441.8, "in_transit": 246.0, "risk": 6, "coverage": 1.19}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "available": 11368.5, "in_transit": 0.0, "risk": 8, "coverage": 1.14}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "available": 11182.15, "in_transit": 626.0, "risk": 7, "coverage": 1.16}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "available": 10621.8, "in_transit": 1617.0, "risk": 6, "coverage": 1.19}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "available": 10460.7, "in_transit": 1429.0, "risk": 7, "coverage": 1.06}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "available": 10794.4, "in_transit": 962.0, "risk": 6, "coverage": 1.19}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "available": 11284.65, "in_transit": 0.0, "risk": 7, "coverage": 1.17}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "available": 9925.0, "in_transit": 0.0, "risk": 7, "coverage": 1.04}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "available": 11820.2, "in_transit": 862.0, "risk": 6, "coverage": 1.19}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "available": 10760.65, "in_transit": 809.0, "risk": 8, "coverage": 1.12}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "available": 9415.1, "in_transit": 0.0, "risk": 6, "coverage": 1.19}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "available": 11358.7, "in_transit": 953.0, "risk": 7, "coverage": 1.15}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "available": 10960.55, "in_transit": 1236.0, "risk": 7, "coverage": 1.17}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "available": 10433.6, "in_transit": 1097.0, "risk": 6, "coverage": 1.19}], "demand": [{"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "demands": 5}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "demands": 5}, {"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "demands": 1}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "demands": 4}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "demands": 4}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "demands": 4}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "demands": 4}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "demands": 4}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "demands": 4}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "demands": 4}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "demands": 4}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "demands": 4}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "demands": 4}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "demands": 4}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "demands": 4}], "transit": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "inbound": 1, "outbound": 31}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "inbound": 3, "outbound": 0}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "inbound": 3, "outbound": 0}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "inbound": 2, "outbound": 0}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "inbound": 2, "outbound": 0}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "inbound": 2, "outbound": 0}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "inbound": 2, "outbound": 0}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "inbound": 2, "outbound": 0}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "inbound": 2, "outbound": 0}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "inbound": 2, "outbound": 0}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "inbound": 2, "outbound": 0}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "inbound": 2, "outbound": 0}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "inbound": 2, "outbound": 0}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "inbound": 2, "outbound": 0}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "inbound": 2, "outbound": 0}], "quality": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "quality_controls": 3, "inventories": 1}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "quality_controls": 3, "inventories": 1}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "quality_controls": 3, "inventories": 1}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "quality_controls": 3, "inventories": 1}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "quality_controls": 3, "inventories": 1}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "quality_controls": 3, "inventories": 1}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "quality_controls": 3, "inventories": 1}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "quality_controls": 3, "inventories": 1}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "quality_controls": 3, "inventories": 1}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "quality_controls": 3, "inventories": 1}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "quality_controls": 2}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "quality_controls": 2}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "quality_controls": 2}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "quality_controls": 2}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "quality_controls": 2}], "pv": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "reports": 1, "adverse_events": 1, "serious_reports": 0}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "reports": 1, "adverse_events": 1, "serious_reports": 1}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "reports": 1, "adverse_events": 0, "serious_reports": 0}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "reports": 1, "adverse_events": 1, "serious_reports": 1}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "reports": 1, "adverse_events": 1, "serious_reports": 0}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "reports": 1, "adverse_events": 0, "serious_reports": 1}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "reports": 1, "adverse_events": 1, "serious_reports": 0}], "fleet": [{"id": 20, "name": "Toyota/Camion SEN-PNA/SIM-SEN-01", "lat": 14.7158, "lng": -17.1958, "updated_at": "2026-10-10 09:30:00", "status": "available", "region": "Dakar", "facility_id": 1}, {"id": 21, "name": "Toyota/Camion SEN-PNA/SIM-SEN-02", "lat": 14.7167, "lng": -17.4677, "updated_at": "2026-10-10 10:30:00", "status": "assigned", "region": "Dakar", "facility_id": 2}, {"id": 22, "name": "Toyota/Camion SEN-PNA/SIM-SEN-03", "lat": 14.7898, "lng": -16.9272, "updated_at": "2026-10-10 11:30:00", "status": "maintenance", "region": "Thiès", "facility_id": 3}, {"id": 23, "name": "Toyota/Camion SEN-PNA/SIM-SEN-04", "lat": 16.0314, "lng": -16.4806, "updated_at": "2026-10-10 12:30:00", "status": "immobilized", "region": "Saint-Louis", "facility_id": 4}], "integration": [{"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "events": 1, "rejected": 0}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "events": 1, "rejected": 1}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "events": 1, "rejected": 0}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "events": 1, "rejected": 0}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "events": 1, "rejected": 0}, {"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "events": 1, "rejected": 0}], "referential": [{"id": 1, "name": "PNA — Magasin central de Diamniadio", "region": "Dakar", "lat": 14.717, "lng": -17.197, "available": 9292.55, "in_transit": 306.0, "risk": 6, "coverage": 1.19}, {"id": 2, "name": "SR/PRA — Dakar", "region": "Dakar", "lat": 14.7167, "lng": -17.4677, "available": 9441.8, "in_transit": 246.0, "risk": 6, "coverage": 1.19}, {"id": 5, "name": "SR/PRA — Diourbel", "region": "Diourbel", "lat": 14.656, "lng": -16.234, "available": 11368.5, "in_transit": 0.0, "risk": 8, "coverage": 1.14}, {"id": 6, "name": "SR/PRA — Fatick", "region": "Fatick", "lat": 14.339, "lng": -16.416, "available": 11182.15, "in_transit": 626.0, "risk": 7, "coverage": 1.16}, {"id": 15, "name": "SR/PRA — Kaffrine", "region": "Kaffrine", "lat": 14.1059, "lng": -15.5508, "available": 10621.8, "in_transit": 1617.0, "risk": 6, "coverage": 1.19}, {"id": 7, "name": "SR/PRA — Kaolack", "region": "Kaolack", "lat": 14.151, "lng": -16.072, "available": 10460.7, "in_transit": 1429.0, "risk": 7, "coverage": 1.06}, {"id": 12, "name": "SR/PRA — Kolda", "region": "Kolda", "lat": 12.8939, "lng": -14.9414, "available": 10794.4, "in_transit": 962.0, "risk": 6, "coverage": 1.19}, {"id": 11, "name": "SR/PRA — Kédougou", "region": "Kédougou", "lat": 12.5605, "lng": -12.1747, "available": 11284.65, "in_transit": 0.0, "risk": 7, "coverage": 1.17}, {"id": 8, "name": "SR/PRA — Louga", "region": "Louga", "lat": 15.614, "lng": -16.224, "available": 9925.0, "in_transit": 0.0, "risk": 7, "coverage": 1.04}, {"id": 9, "name": "SR/PRA — Matam", "region": "Matam", "lat": 15.6559, "lng": -13.2554, "available": 11820.2, "in_transit": 862.0, "risk": 6, "coverage": 1.19}, {"id": 4, "name": "SR/PRA — Saint-Louis", "region": "Saint-Louis", "lat": 16.0326, "lng": -16.4818, "available": 10760.65, "in_transit": 809.0, "risk": 8, "coverage": 1.12}, {"id": 14, "name": "SR/PRA — Sédhiou", "region": "Sédhiou", "lat": 12.7081, "lng": -15.5569, "available": 9415.1, "in_transit": 0.0, "risk": 6, "coverage": 1.19}, {"id": 10, "name": "SR/PRA — Tambacounda", "region": "Tambacounda", "lat": 13.7707, "lng": -13.6673, "available": 11358.7, "in_transit": 953.0, "risk": 7, "coverage": 1.15}, {"id": 3, "name": "SR/PRA — Thiès", "region": "Thiès", "lat": 14.7886, "lng": -16.926, "available": 10960.55, "in_transit": 1236.0, "risk": 7, "coverage": 1.17}, {"id": 13, "name": "SR/PRA — Ziguinchor", "region": "Ziguinchor", "lat": 12.5833, "lng": -16.2719, "available": 10433.6, "in_transit": 1097.0, "risk": 6, "coverage": 1.19}]}, "filters": {"q": "", "region": "", "status": "", "date_from": "", "date_to": "2026-10-17", "regions": ["Dakar", "Diourbel", "Fatick", "Kaffrine", "Kaolack", "Kolda", "Kédougou", "Louga", "Matam", "Saint-Louis", "Sédhiou", "Tambacounda", "Thiès", "Ziguinchor"], "products": ["[010640] AMOXICILLINE+AC. CLAVULANIQUE (1000+200)MG INJ.", "[050120] METRONIDAZOLE 200MG/5ML SP.", "[100390] HALOTHANE SOL", "[100391] HALOTHANE SOL FL/100ML", "[100640] BUPIVACAÏNE 0.5% /20ML ISOBARE AMP INJ", "[110140] LIDOCAÏNE 2% INJ.", "[110142] LIDOCAÏNE 2% INJ. ADRENALINE INJ", "[110241] ROPIVACAINE 7.5 MG/ML AMP", "[110341] BUPIVACAÏNE 5MG/ML RACHI HYPERBARE AMP. INJ.F/4ML", "[110360] BUPIVACAINE 5MG/ML ISOBARE AMP. INJ. (10ML)", "[110441] SUXAMETHONIUM 100MG/2ML AMP. INJ.", "[110540] NORADRENALINE BP 0.5% INJ.", "[120140] ACETYL SALICYLATE DE LYSINE 1.8G AMP. INJ.", "[120190] ACETYL SALICYLATE DE LYSINE 100MG SACHET", "[120210] INDOMETACINE 25MG CP.", "[120310] PARACETAMOL 500MG CP.", "[120311] PARACETAMOL 1G CP.", "[120320] PARACETAMOL 120MG/5ML SP.", "[120340] PARACETAMOL 1G/100ML INJ.", "[120341] PARACETAMOL 0.5G INJ.", "[120540] KETOPROFENE 100MG AMP. INJ.", "[120610] AC MEFENAMIQUE 250MG CP.", "[120710] IBUPROFENE 400MG CP.", "[120720] IBUPROFENE 100MG/5ML SP. FL/100", "[120810] DICLOFENAC 50MG CP.", "[120840] TRAMADOL 100MG/2ML", "[120960] AC. NIFLUMIQUE PDE", "[130141] FENTANYL 0.50MG/10ML AMP. INJ.", "[Delivery_007] Standard delivery"]}, "modules": [{"code": "LNPME", "title": "Référentiel thérapeutique", "text": "Versions approuvées, priorités, DCI, formes et produits essentiels."}, {"code": "DEMAND", "title": "Prévision et demande", "text": "Besoins des structures, priorisation, revue, approbation et taux de satisfaction."}, {"code": "DISTRIBUTION", "title": "Allocation et dernier kilomètre", "text": "Allocation, préparation, expédition, suivi, livraison, retours et preuves."}, {"code": "QUALITY", "title": "Qualité pharmaceutique", "text": "Quarantaine, échantillonnage, contrôles, déviations, CAPA et libération."}, {"code": "PV", "title": "Pharmacovigilance", "text": "Signalement, triage, investigation, imputabilité et transmission réglementaire."}, {"code": "INTEGRATION", "title": "Interopérabilité", "text": "Événements entrants et sortants, idempotence, corrélation, erreurs et reprises."}, {"code": "OPERATIONS", "title": "Opérations et audit", "text": "Référentiel produit, mouvements audités, inventaires tournants, alertes assignées et dictionnaire des KPI."}, {"code": "CORE", "title": "Référentiel et gouvernance", "text": "Socle partagé des produits, structures, programmes, règles métier et indicateurs."}, {"code": "FLEET", "title": "Flotte et transport", "text": "Véhicules, conducteurs, maintenance, tournées, incidents et performance du dernier kilomètre."}]}