socialappslab / denguechat

Using mobile phones and gaming tactics to engage citizens in reporting public health risks
https://www.denguechat.org/
Other
0 stars 0 forks source link

Detect inspections that correspond to the same breeding site #895

Open cdparra opened 5 years ago

cdparra commented 5 years ago

Lo que tenemos que hacer es enlazar inspections entre si, automáticamente detectar cuando un inspection en realidad representa el mismo criadero, pero en una nueva fecha. Entonces, lo que creo que tenemos que hacer es agregarle a cada inspection una referencia a su ancestro por llamarlo de algún modo, o previous_same_breeding_site_inspection o previous_similar_inspection si queremos darle un nombre completo.

El algoritmo creo que debe funcionar así: (1) Si se crea una nueva inspección con br_site_id = br1, asociado al locations.address = l1 con visits.visited_at = d1, buscar la última inspection creada con el mismo código br1, asociado al mismo location l1, pero creado en visitas cuya fecha visited _at < d1,

(2) si en el paso 1 encontramos inspecciones similares, relacionar la nueva inspección a la última de las encontradas a través de un campo especial que podemos llamar previous_similar_inspection,

(3) en la página de reports, mostrar el estado actual del inspection así como ahora, pero también el estado que tenían los últimos 3 o 4 inspections asociados como similares (siguiendo el árbol que se crea a través del campo previous_similar_inspection de cada inspección,

(4) Supongamos que la nueva inspección es i2 y encontramos que la inspección similar que le corresponde es i1. Si i2.protected == 1 y i1.eliminated_at == null y i1.protected == 0, setear i2.eliminated_at con a fecha actual. Si i2.eliminated_at no es null y tiene fecha válida, setear i1.eliminated_at == i2.eliminated_at.

Cómo parte del este feature, necesitaríamos entonces: (1) implementar el algoritmo de detección de inspecciones asociadas al mismo criadero (descripta arriba), (2) ejecutar el algoritmo cada vez que se crea una nueva insepcción, (3) crear un script que evalúe todos los inspections existentes y complete el campo de la inspección previa siguiendo el mismo algoritmo, (4) modificar el reports page para que incluya el estado que tenía un criadero en inspecciones previas, (5) agregar un botón a la tarjeta de cada inspección que permita eliminar la asociación si es que el usuario cree que estaba mal

jamesholston commented 7 months ago

unique identifers for each breeding site? Breteau concept? Positivity at house level or individual breeding sites?