/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠOn a ĠSystems , ĠInc Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . smart register . fhir core . anc . util Ċ Ċ import Ġca . u hn . fhir . rest . g client . Reference Client Param Ċ import Ġca . u hn . fhir . rest . g client . String Client Param Ċ import Ġca . u hn . fhir . rest . g client . Token Client Param Ċ import Ġcom . google . android . fhir . search . Search Ċ import Ġcom . google . android . fhir . search . String Filter Modifier Ċ import Ġorg . hl 7 . fhir . r 4 . model . Code able Concept Ċ import Ġorg . hl 7 . fhir . r 4 . model . Coding Ċ import Ġorg . hl 7 . fhir . r 4 . model . Enumer ations Ċ import Ġorg . hl 7 . fhir . r 4 . model . Patient Ċ import Ġorg . hl 7 . fhir . r 4 . model . ResourceType Ċ Ċ fun ĠCoding . as Code able Concept () Ġ= ĊĠ ĠCode able Concept (). apply Ġ{ ĊĠĠĠ Ġadd Coding ( this @ as Code able Concept ) ĊĠĠĠ Ġtext Ġ= Ġthis @ as Code able Concept . display ĊĠ Ġ} Ċ Ċ fun ĠSearch . filter By Patient ( reference : ĠReference Client Param , Ġpatient Id : ĠString ) Ġ{ ĊĠ Ġfilter ( reference ) Ġ{ Ġthis . value Ġ= Ġ"${ ResourceType . Patient . name }/ $ patient Id " Ġ} Ċ } Ċ Ċ fun ĠSearch . filter By Patient Name ( name : ĠString ?) Ġ{ ĊĠ Ġif Ġ( name ?. isNotBlank () Ġ== Ġtrue ) Ġ{ ĊĠĠĠ Ġfilter ( Patient . NAME ) Ġ{ ĊĠĠĠĠĠ Ġvalue Ġ= Ġname . trim () ĊĠĠĠĠĠ Ġmodifier Ġ= ĠString Filter Modifier . CONTAIN S ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun ĠSearch . filter By ( filter : ĠSearch Filter ) Ġ{ ĊĠ Ġwhen Ġ( filter . filter Type ) Ġ{ ĊĠĠĠ ĠEnum er ations . Search Param Type . TOKEN Ġ-> Ġfilter Token ( filter ) ĊĠĠĠ ĠEnum er ations . Search Param Type . STRING Ġ-> ĊĠĠĠĠĠ Ġfilter ( String Client Param ( filter . key )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . modifier Ġ= ĠString Filter Modifier . MATCH ES _ EX ACT LY ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġfilter . value String !! ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Can Ġnot Ġapply Ġ${ filter . filter Type } Ġas Ġsearch Ġfilter ") ĊĠ Ġ} Ċ } Ċ Ċ fun ĠSearch . filter Token ( filter : ĠSearch Filter ) Ġ{ ĊĠ Ġ// ĠTODO ĠToken Filter Ġin ĠSDK Ġis Ġnot Ġfully Ġimplemented Ġand Ġignores Ġall Ġtypes Ġbut ĠCoding ĊĠ Ġwhen Ġ( filter . valueType ) Ġ{ ĊĠĠĠ ĠEnum er ations . DataType . CODING Ġ-> Ġfilter ( Token Client Param ( filter . key ), Ġfilter . value Coding !! ) ĊĠĠĠ ĠEnum er ations . DataType . CODE ABLE CONCEPT Ġ-> ĊĠĠĠĠĠ Ġfilter ( Token Client Param ( filter . key ), Ġfilter . value Coding !!. as Code able Concept () !! ) ĊĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" SDK Ġdoes Ġnot Ġsupport Ġvalue Ġtype Ġ${ filter . valueType }") ĊĠ Ġ} Ċ } Ċ