participant HW participant "mHero initiator" participant "mHero datacollector" participant "OpenHIE" note over "mHero initiator", "mHero datacollector": mHero "POS actor" loop periodic refresh of mHero POS content mHero datacollector -> OpenHIE: request HW contact info \nITI-73 OpenHIE -> mHero datacollector: ITI-73 response mHero datacollector -> mHero datacollector: import HW content into local database end loop alt if mHero acts as a HW directory loop periodic refresh of HWR cache OpenHIE -> mHero datacollector: refresh ILR cache \nITI-74 mHero datacollector -> OpenHIE: ITI-74 response end loop end alt loop for each questionnaire mHero initiator -> mHero initiator: develop target HW cohort alt if local database needs refresh note over "mHero datacollector", OpenHIE: refresh of mHero POS content end alt mHero initiator -> mHero datacollector: request list of HW cohort members \nFHIR mHero datacollector -> mHero initiator: FHIR response mHero initiator -> mHero datacollector: request list of data collection workflows \nFHIR mHero datacollector -> mHero initiator: FHIR resposne mHero initiator -> mHero initiator: develop questionnaire mHero initiator -> mHero datacollector: execute questionnaire against HW cohort \nproprietary (e.g. RapidPro, CommCare, ODK, etc.) mHero datacollector -> mHero initiator: ACK loop for each HW loop for each question in questionnaire mHero datacollector -> HW: question HW -> mHero datacollector: response end loop questionnaire end loop HW mHero initiator -> mHero datacollector: collect responses \nFHIR mHero datacollector -> mHero initiator: return responses \nFHIR mHero initiator -> mHero initiator: analyse responses \ndevelop actions based on analyses end loop questionnaire