package Ġco . t ala . example . api . im mun ization _ dec ider . business . resolver Ċ Ċ import Ġco . t ala . example . specs . core . lib . minus Days Ċ import Ġco . t ala . example . http . client . lib . service . im mun ization _ history . model . Imm un ization History Response Ċ import Ġco . t ala . example . http . client . lib . service . im mun ization _ history . model . Imm un ization Type Ċ import Ġco . t ala . example . http . client . lib . service . user . model . User Response Ċ import Ġjava . time . Instant Ċ Ċ interface ĠII mm un ization Type Resolver Ġ{ ĊĠĠĠ Ġfun ĠII mm un ization Type Resolver . minimum Age (): ĠLong ĊĠĠĠ Ġfun ĠII mm un ization Type Resolver . days Between Injection s (): ĠLong ĊĠĠĠ Ġfun ĠII mm un ization Type Resolver . injection s Per Period (): ĠInt ĊĠĠĠ Ġfun ĠII mm un ization Type Resolver . days Until Expiration (): ĠLong ĊĠĠĠ Ġfun ĠII mm un ization Type Resolver . getType (): ĠImm un ization Type ĊĠĠĠ Ġfun Ġresolve ( user Response : ĠUser Response , Ġhistory Response : ĠImm un ization History Response ): ĠImm un ization Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user Response . date OfBirth Ġ== Ġnull Ġ|| Ġhistory Response . occ urrences Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġim mun ization Type Ġ= ĠgetType () ĊĠĠĠĠĠĠĠ Ġval Ġat Minimum Age : ĠBoolean Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus Days ( minimum Age () Ġ* Ġ 3 6 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is After ( user Response . date OfBirth ) ĊĠĠĠĠĠĠĠ Ġval Ġdays Between Injection s : ĠLong Ġ= Ġdays Between Injection s () ĊĠĠĠĠĠĠĠ Ġval Ġinjection s Per Period : ĠInt Ġ= Ġinjection s Per Period () ĊĠĠĠĠĠĠĠ Ġval Ġdays Until Expiration : ĠLong Ġ= Ġdays Until Expiration () ĊĠĠĠĠĠĠĠ Ġval Ġinjection s Day Ago : ĠList < Long > Ġ= Ġhistory Response . occ urrences ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFilter Ġby ĠImm un ization Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . type Ġ== Ġim mun ization Type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Descending Ġ{ Ġit . date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConvert Ġdate Ġto Ġdays Ġago ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠInstant . now (). minus Millis ( it . to Epoch Milli ()). to Epoch Milli () Ġ/ Ġ 8 6 4 0 0 Ġ/ Ġ 1 0 0 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġhistory Ġthat Ġis Ġexpired ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ< Ġdays Until Expiration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( injection s Per Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! at Minimum Age Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinjection s Day Ago . isEmpty () Ġ-> Ġim mun ization Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinjection s Day Ago . size Ġ>= Ġinjection s Per Period Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinjection s Day Ago . first () Ġ> Ġdays Between Injection s Ġ-> Ġim mun ization Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠC ov id 1 9 Imm un ization Type Resolver Ġ: ĠII mm un ization Type Resolver Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . minimum Age (): ĠLong Ġ= Ġ 1 8 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Between Injection s (): ĠLong Ġ= Ġ 2 8 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . injection s Per Period (): ĠInt Ġ= Ġ 2 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Until Expiration (): ĠLong Ġ= Ġ 3 6 5 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . getType (): ĠImm un ization Type Ġ= ĠImm un ization Type . CO VID 1 9 Ċ } Ċ Ċ class ĠT dap Imm un ization Type Resolver Ġ: ĠII mm un ization Type Resolver Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . minimum Age (): ĠLong Ġ= Ġ 1 0 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Between Injection s (): ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . injection s Per Period (): ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Until Expiration (): ĠLong Ġ= Ġ 3 6 5 Ġ* Ġ 1 0 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . getType (): ĠImm un ization Type Ġ= ĠImm un ization Type . TD AP Ċ } Ċ Ċ class ĠIn flu enza Imm un ization Type Resolver Ġ: ĠII mm un ization Type Resolver Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . minimum Age (): ĠLong Ġ= Ġ 1 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Between Injection s (): ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . injection s Per Period (): ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . days Until Expiration (): ĠLong Ġ= Ġ 3 6 5 ĊĠĠĠ Ġoverride Ġfun ĠII mm un ization Type Resolver . getType (): ĠImm un ization Type Ġ= ĠImm un ization Type . IN FL U EN ZA Ċ } Ċ