package Ġcom . example . my di agnosis . use case Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . example . my di agnosis . database . Di agnosis Room Database Ċ import Ġcom . example . my di agnosis . model . Condition Ċ import Ġcom . example . my di agnosis . ret rofit . Ret rofit Client Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . JsonObject Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . json . JSONArray Ċ Ċ class ĠDiag nose UseCase ( val Ġcontext : ĠContext , Ġval Ġuser Age Ġ: ĠInt ?, Ġval Ġuser Gender Ġ: ĠString ?) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġrun () Ġ: ĠList < Condition > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġwant Ġto Ġget Ġall Ġdata Ġfrom Ġevidence Ġtable Ġand Ġadd Ġit Ġto Ġa ĠJson Ġobject Ġwhere Ġeach ĊĠĠĠĠĠĠĠ Ġ// Ġentry Ġin Ġthe ĠJSON Ġobject Ġis Ġa ĠJSON Ġobject ĊĊĠĠĠĠĠĠĠ Ġ// Ġfor Ġnow Ġlet 's Ġset Ġthe Ġage Ġand Ġsex Ġof Ġthe Ġuser ĊĊĠĠĠĠĠĠĠ Ġvar Ġconditions Ġ= ĠlistOf < Condition >() ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest JsonObject Ġ= ĠJsonObject () ĊĊĠĠĠĠĠĠĠ Ġvar Ġe vid ences JsonObject Ġ= ĠJson Array () ĊĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠDi agnosis Room Database . get Database ( context ) ĊĊĠĠĠĠĠĠĠ Ġdatabase ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe vid ences Ġ= Ġit . e vid ences Dao (). getAll E vid ences () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġe vid ences ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJsonObject () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . addProperty (" id ", Ġitem . getId ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . addProperty (" choice _ id ", Ġitem . get Choice Id ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe vid ences JsonObject . add ( jsonObject ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġuser Age ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest JsonObject . addProperty (" age ", Ġuser Age ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġuser Gender ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest JsonObject . addProperty (" sex ", Ġuser Gender ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequest JsonObject . add (" evidence ", Ġe vid ences JsonObject ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRet rofit Client . get ApiService (). diag nose ( request JsonObject ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconditions Response Ġ= Ġrequest . await (). body () ĊĊĠĠĠĠĠĠĠ Ġconditions Response ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . conditions Dao (). delete All () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . conditions Dao (). insert Conditions ( conditions Response . get Conditions ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconditions Ġ= Ġconditions Response . get Conditions () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconditions ĊĠĠĠ Ġ} Ċ Ċ }