/* Ċ Ġ* Ġ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 . engine . util . extension Ċ Ċ import Ġcom . google . android . fhir . datac apt ure . common . datatype . as StringValue Ċ import Ġcom . google . android . fhir . datac apt ure . target Structure Map Ċ import Ġjava . util . Locale Ċ import Ġorg . hl 7 . fhir . r 4 . model . Questionnaire Ċ import Ġorg . hl 7 . fhir . r 4 . model . Questionnaire Response Ċ Ċ fun ĠQuestion naire Response . Questionnaire Response Item Component . as Label () Ġ= ĊĠ Ġthis . link Id ĊĠĠĠ Ġ. replace ("_ ", Ġ" Ġ") ĊĠĠĠ Ġ. replace First Char Ġ{ Ġif Ġ( it . is LowerCase ()) Ġit . title case ( Locale . EN GL ISH ) Ġelse Ġit . toString () Ġ} ĊĠĠĠ Ġ. plus (": Ġ") Ċ Ċ fun ĠQuestion naire . is Extraction Candidate () Ġ= ĊĠ Ġthis . target Structure Map Ġ!= Ġnull Ġ|| ĊĠĠĠ Ġthis . extension . any Ġ{ Ġit . url . contains (" sd c - question naire - item Extraction Context ") Ġ} Ċ Ċ fun ĠQuestion naire . cq f Library Ids () Ġ= ĊĠ Ġthis . extension . filter Ġ{ Ġit . url . contains (" cq f - library ") Ġ}. map NotNull Ġ{ ĊĠĠĠ Ġit . value ?. as StringValue ()?. replace (" Library /", Ġ"") ĊĠ Ġ} Ċ Ċ fun ĠQuestion naire . find ( link Id : ĠString ): ĠQuestion naire . Questionnaire Item Component ? Ġ{ ĊĠ Ġval Ġresult Ġ= Ġmutable ListOf < Questionnaire . Questionnaire Item Component >() ĊĠ Ġitem . find ( FieldType . LINK _ ID , Ġlink Id , Ġresult ) ĊĠ Ġreturn Ġresult . first OrNull () Ċ } Ċ Ċ fun ĠQuestion naire Response . find ( ĊĠ Ġlink Id : ĠString Ċ ): ĠQuestion naire Response . Questionnaire Response Item Component ? Ġ{ ĊĠ Ġreturn Ġitem . find ( link Id , Ġnull ) Ċ } Ċ Ċ fun ĠList < Questionnaire Response . Questionnaire Response Item Component >. find ( ĊĠ Ġlink Id : ĠString , ĊĠ Ġdefault : ĠQuestion naire Response . Questionnaire Response Item Component ? Ċ ): ĠQuestion naire Response . Questionnaire Response Item Component ? Ġ{ ĊĠ Ġvar Ġresult Ġ= Ġdefault ĊĠ Ġrun Ġloop @{ ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠ Ġif Ġ( it . link Id Ġ== Ġlink Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġreturn @ loop ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . item . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġit . item . find ( link Id , Ġresult ) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . has Answer ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . answer . forEach Ġ{ Ġresult Ġ= Ġit . item . find ( link Id , Ġresult ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġreturn Ġresult Ċ } Ċ Ċ enum Ġclass ĠFieldType Ġ{ ĊĠ ĠDEFIN ITION , ĊĠ ĠLINK _ ID , ĊĠ ĠTYPE Ċ } Ċ Ċ fun ĠQuestion naire . find ( ĊĠ ĠfieldType : ĠFieldType , ĊĠ Ġvalue : ĠString Ċ ): ĠList < Questionnaire . Questionnaire Item Component > Ġ{ ĊĠ Ġval Ġresult Ġ= Ġmutable ListOf < Questionnaire . Questionnaire Item Component >() ĊĠ Ġitem . find ( fieldType , Ġvalue , Ġresult ) ĊĠ Ġreturn Ġresult Ċ } Ċ Ċ fun ĠList < Questionnaire . Questionnaire Item Component >. find ( ĊĠ ĠfieldType : ĠFieldType , ĊĠ Ġvalue : ĠString , ĊĠ Ġtarget : ĠMutable List < Questionnaire . Questionnaire Item Component > Ċ ) Ġ{ ĊĠ ĠforEach Ġ{ ĊĠĠĠ Ġwhen Ġ( fieldType ) Ġ{ ĊĠĠĠĠĠ ĠFieldType . DEFINITION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . definition ?. content Equals ( value , Ġtrue ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtarget . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠFieldType . LINK _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . link Id Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtarget . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠFieldType . TYPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . type Ġ== ĠQuestion naire . Questionnaire ItemType . valueOf ( value )) Ġtarget . add ( it ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( it . item . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġit . item . find ( fieldType , Ġvalue , Ġtarget ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ