package Ġorg . simple . clin ic . medical history Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . room . Column Info Ċ import Ġandroidx . room . Dao Ċ import Ġandroidx . room . Entity Ċ import Ġandroidx . room . Insert Ċ import Ġandroidx . room . On Conflict Strategy Ċ import Ġandroidx . room . PrimaryKey Ċ import Ġandroidx . room . Query Ċ import Ġio . reactivex . Flow able Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ import Ġorg . simple . clin ic . medical history . Answer . Un answer ed Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . DIAG NO SED _ WITH _ DI AB ET ES Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . DIAG NO SED _ WITH _ HY PER T ENSION Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . HAS _ H AD _ A _ HE ART _ ATT ACK Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . HAS _ H AD _ A _ K ID NE Y _ DI SE ASE Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . HAS _ H AD _ A _ ST RO KE Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . IS _ ON _ DI AB ET ES _ TRE AT MENT Ċ import Ġorg . simple . clin ic . medical history . Medical History Question . IS _ ON _ HY PER T ENSION _ TRE AT MENT Ċ import Ġorg . simple . clin ic . patient . Patient Uuid Ċ import Ġorg . simple . clin ic . patient . Sync Status Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ Ċ @ Parcel ize Ċ @ Entity ( tableName Ġ= Ġ" Medical History ") Ċ data Ġclass ĠMedical History ( ĊĠĠĠ Ġ@ PrimaryKey ĊĠĠĠ Ġval Ġuuid : ĠUUID , ĊĊĠĠĠ Ġval Ġpatient Uuid : ĠUUID , ĊĊĠĠĠ Ġval Ġdiag no sed With Hy pert ension : ĠAnswer , ĊĊĠĠĠ Ġval Ġis On Hy pert ension T reatment : ĠAnswer , ĊĊĠĠĠ Ġval Ġis On Di abet es T reatment : ĠAnswer , ĊĊĠĠĠ Ġval Ġhas H ad Heart Attack : ĠAnswer , ĊĊĠĠĠ Ġval Ġhas H ad Stroke : ĠAnswer , ĊĊĠĠĠ Ġval Ġhas H ad K id ney D isease : ĠAnswer , ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" has Di abet es ") ĊĠĠĠ Ġval Ġdiag no sed With Di abet es : ĠAnswer , ĊĊĠĠĠ Ġval Ġsync Status : ĠSync Status , ĊĊĠĠĠ Ġval ĠcreatedAt : ĠInstant , ĊĊĠĠĠ Ġval ĠupdatedAt : ĠInstant , ĊĊĠĠĠ Ġval Ġdeleted At : ĠInstant ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĠ Ġval Ġdi agnosis Re corded : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġdiag no sed With Hy pert ension Ġ!= ĠUn answer ed Ġ&& Ġdiag no sed With Di abet es Ġ!= ĠUn answer ed ĊĊĠ Ġfun Ġanswered ( question : ĠMedical History Question , Ġanswer : ĠAnswer ): ĠMedical History Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( question ) Ġ{ ĊĠĠĠĠĠ ĠDI AG NO SED _ WITH _ HY PER T ENSION Ġ-> Ġcopy ( diag no sed With Hy pert ension Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠHAS _ H AD _ A _ HE ART _ ATT ACK Ġ-> Ġcopy ( has H ad Heart Attack Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠHAS _ H AD _ A _ ST RO KE Ġ-> Ġcopy ( has H ad Stroke Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠHAS _ H AD _ A _ K ID NE Y _ DI SE ASE Ġ-> Ġcopy ( has H ad K id ney D isease Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠDI AG NO SED _ WITH _ DI AB ET ES Ġ-> Ġcopy ( diag no sed With Di abet es Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠIS _ ON _ HY PER T ENSION _ TRE AT MENT Ġ-> Ġcopy ( is On Hy pert ension T reatment Ġ= Ġanswer ) ĊĠĠĠĠĠ ĠIS _ ON _ DI AB ET ES _ TRE AT MENT Ġ-> Ġcopy ( is On Di abet es T reatment Ġ= Ġanswer ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Dao ĊĠ Ġinterface ĠRoom Dao Ġ{ ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠMedical History ĠWHERE Ġsync Status Ġ= Ġ: status ") ĊĠĠĠ Ġfun Ġrecord sWith Sync Status ( status : ĠSync Status ): ĠList < Medical History > ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠ ĠSELECT Ġ* ĠFROM ĠMedical History ĊĠĠĠĠĠ ĠWHERE Ġsync Status Ġ= Ġ: sync Status ĊĠĠĠĠĠ ĠLIMIT Ġ: limit Ġoffset Ġ: offset ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġrecord sWith Sync Status B atched ( ĊĠĠĠĠĠĠĠ Ġsync Status : ĠSync Status , ĊĠĠĠĠĠĠĠ Ġlimit : ĠInt , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt ĊĠĠĠ Ġ): ĠList < Medical History > ĊĊĠĠĠ Ġ@ Query (" UPDATE ĠMedical History ĠSET Ġsync Status Ġ= Ġ: to ĠWHERE Ġsync Status Ġ= Ġ: from ") ĊĠĠĠ Ġfun Ġupdate Sync Status ( from : ĠSync Status , Ġto : ĠSync Status ) ĊĊĠĠĠ Ġ@ Query (" UPDATE ĠMedical History ĠSET Ġsync Status Ġ= Ġ: to ĠWHERE Ġuuid ĠIN Ġ(: ids )") ĊĠĠĠ Ġfun Ġupdate Sync Status For Ids ( ids : ĠList < UUID >, Ġto : ĠSync Status ) ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠMedical History ĠWHERE Ġuuid Ġ= Ġ: id ĠLIMIT Ġ 1 ") ĊĠĠĠ Ġfun Ġget One ( id : ĠUUID ): ĠMedical History ? ĊĊĠĠĠ Ġ@ Query (" SELECT Ġuuid ĠFROM ĠMedical History ĠWHERE Ġsync Status Ġ= Ġ: sync Status ") ĊĠĠĠ Ġfun Ġrecord Ids With Sync Status ( sync Status : ĠSync Status ): ĠList < UUID > ĊĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġfun Ġsave ( history : ĠMedical History ) ĊĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġfun Ġsave Hist ories ( hist ories : ĠList < Medical History >) ĊĊĠĠĠ Ġ@ Query (" SELECT ĠCOUNT ( uuid ) ĠFROM ĠMedical History ") ĊĠĠĠ Ġfun Ġcount (): ĠFlow able < Int > ĊĊĠĠĠ Ġ@ Query (" SELECT ĠCOUNT ( uuid ) ĠFROM ĠMedical History ĠWHERE Ġsync Status Ġ= Ġ: sync Status ") ĊĠĠĠ Ġfun Ġcount With Status ( sync Status : ĠSync Status ): ĠFlow able < Int > ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM ĠMedical History ") ĊĠĠĠ Ġfun Ġclear () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlast Ġupdated Ġmedical Ġhistory Ġis Ġreturned Ġbecause Ġit 's Ġpossible ĊĠĠĠĠ Ġ* Ġto Ġhave Ġmultiple Ġmedical Ġhist ories Ġpresent Ġfor Ġthe Ġsame Ġpatient . ĊĠĠĠĠ Ġ* ĠSee Ġ[ Medical History Repository . history For Patient OrDefault ] Ġto ĊĠĠĠĠ Ġ* Ġunderstand Ġwhen Ġthis Ġwill Ġhappen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠ ĠSELECT Ġ* ĠFROM ĠMedical History ĊĠĠĠĠĠ ĠWHERE Ġpatient Uuid Ġ= Ġ: patient Uuid ĊĠĠĠĠĠ ĠORDER ĠBY ĠupdatedAt ĠDESC ĊĠĠĠĠĠ ĠLIMIT Ġ 1 ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġhistory For Patient ( patient Uuid : ĠPatient Uuid ): ĠFlow able < List < Medical History >> ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠ ĠSELECT Ġ* ĠFROM ĠMedical History ĊĠĠĠĠĠ ĠWHERE Ġpatient Uuid Ġ= Ġ: patient Uuid ĠAND Ġdeleted At ĠIS ĠNULL ĊĠĠĠĠĠ ĠORDER ĠBY ĠupdatedAt ĠDESC ĊĠĠĠĠĠ ĠLIMIT Ġ 1 ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġhistory For Patient Immediate ( patient Uuid : ĠPatient Uuid ): ĠMedical History ? ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠĠĠ ĠSELECT Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHEN Ġ( COUNT ( uuid ) Ġ> Ġ 0 ) ĠTHEN Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠELSE Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEND ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠFROM ĠMedical History ĊĠĠĠĠĠĠĠ ĠWHERE ĠupdatedAt Ġ> Ġ: instant To Compare ĠAND Ġsync Status Ġ= Ġ: pending Status ĠAND Ġpatient Uuid Ġ= Ġ: patient Uuid ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġhas Medical History For Patient Changed Since ( ĊĠĠĠĠĠĠĠ Ġpatient Uuid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġinstant To Compare : ĠInstant , ĊĠĠĠĠĠĠĠ Ġpending Status : ĠSync Status ĊĠĠĠ Ġ): ĠBoolean ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠ ĠDELETE ĠFROM ĠMedical History ĊĠĠĠĠĠ ĠWHERE Ġdeleted At ĠIS ĠNOT ĠNULL ĠAND Ġsync Status Ġ== Ġ' DONE ' ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġpurge Deleted () ĊĊĠĠĠ Ġ@ Query (""" ĠSELECT Ġ* ĠFROM ĠMedical History Ġ"" ") ĊĠĠĠ Ġfun ĠgetAll Medical Hist ories (): ĠList < Medical History > ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠĠĠ ĠDELETE ĠFROM ĠMedical History ĊĠĠĠĠĠĠĠ ĠWHERE ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid ĠNOT ĠIN Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ĠM H . uuid ĠFROM ĠMedical History ĠM H ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN ĠPatient ĠP ĠON ĠP . uuid Ġ== ĠM H . patient Uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠAND ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync Status Ġ== Ġ' DONE ' ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġdelete Without Linked Patient () ĊĊĠĠĠ Ġ@ Query (""" ĊĠĠĠĠĠĠĠ ĠDELETE ĠFROM ĠMedical History ĊĠĠĠĠĠĠĠ ĠWHERE Ġpatient Uuid ĠIN Ġ( ĊĉĉĠĠĠĠĠĠĠ ĠSELECT ĠM H . patient Uuid ĠĊĉĉĉ ĠĠĠĠĠ ĠFROM ĠMedical History ĠM H ĊĉĉĉĠĠĠĠĠ ĠLEFT ĠJOIN ĠPatient ĠP ĠON ĠP . uuid Ġ== ĠM H . patient Uuid ĊĉĉĉĠĠĠĠĠ ĠWHERE ĠP . uuid ĠIS ĠNULL ĠAND ĠM H . sync Status Ġ== Ġ' DONE ' ĊĉĉĠĠĠ Ġ) ĊĠĠĠ Ġ"" ") ĊĠĠĠ Ġfun Ġpurge Medical History When Patient IsNull () ĊĠ Ġ} Ċ } Ċ