# My Fellowship Journey : Cliff Gita

**URL:** <https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148>\
**Category:** Community\
**Tags:** fellow2020-2021, fellowship\
**Created:** [November 26, 2020, 8:26pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148 "2020-11-26T20:26:50Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [November 26, 2020, 8:26pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/1 "2020-11-26T20:26:50Z")

</div>

I am Cliff Gita , from Uganda ,Kampala, and i have been involved with the OpenMRS community since January 2019 acting as a developer and am currently volunteering as a platform release of` 2.4.0`.

Am very excited and happy to join the first OpenMRS felowship 2020/2021 as a fellow in the area of development ,focusing on the PLIR ,FHIR ,Analytics Engine Projects for OpenMRS. I will be working directly with @mozzy as my fellow mentor.

In the first Month (November) of the fellowship.

- I was learning and reading about the project , getting more familiar with the various frameworks used in the PLIR and analytics work.

- Contributed to the analtics engine, FHIR and PLIR repos.

- Attended the calls with my mentor and fellow partner and the best way to pool off the proof of concept for PLIR.

- Attend weekly calls of the FHIR/PLIR and analytics meetings.

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [December 18, 2020, 6:12am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/2 "2020-12-18T06:12:20Z")

</div>

Hello everyone

I the past few weeks as a fellow i continued getting more familiar with the analytics engine streaming modes plus the openHIM framework, currently working on shifting debezium specific settings to a json config file.

I also worked on the HAPI FHIR JPA server to enable it support basic authentication for any clients apps making requests . I have been engaged in weekly calls and holding sessions with colleagues ,thanks to @akimaina

I came up with a blog post on the modes used in the analytics engine.

> **[OpenMRS anlaytics engine atomfeed and debezium-binlog streaming.](https://medium.com/@gitacliff48/openmrs-anlaytics-engine-atomfeed-and-debezium-binlog-streaming-fa4ae262d242)**
>
> The patient level indicator reporting project works closely with the analytics engine work with the aim of being able to query and stream…

@mozzy @k.joseph @jennifer@ayesh

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [January 8, 2021, 2:37pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/3 "2021-01-08T14:37:26Z")

</div>

Hello community

In the past three weeks, i have been working mainly on the analytics engine ie

1. Fixing Debezium events to FHIR mapping where uuid is missing for specific tables
2. Adding code formatting in the analytics xml files
3. Finishing up with moving debezium configs to a json config file
4. Added the necessary javadoc to util methods

Also been holding personal calls with my mentor(@mozzy ) and @akimaina

The next tasks are;

- Start working on tasks related to contributing to the development of the OpenHIM mediator for intergration with OpenCR

- Getting up to speed and helping out in contributing to defining Fhir measure resources and integrating of QA into the analytics work

@k.joseph @jennifer @grace

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [February 8, 2021, 5:11am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/4 "2021-02-08T05:11:49Z")

</div>

Hello community

In the past few weeks been finnishing up tasks in the [analytics engine](https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics) related to the PLIR work and focusing more on the [collect\_data\_operation](https://www.hl7.org/fhir/measure-operation-collect-data.html) with in the HAPI-SERVER which can process the [Measure](https://wiki.openmrs.org/display/projects/FHIR+Measure+Resources+For+PLIR) resource to extract the data that would be necessary for the calculation of the [TX\_PVLS](https://wiki.openmrs.org/display/projects/Concepts+for++Calculation+of++TX_PVLS) indicator

Am currently working on the integration tests for the recently implemented collect data operation to test different behaviors and making sure the respective data is being returned firom the server as per the defined measure expression.

Also working on implementing read hard coded Basic Auth credentials from a properties files in [Hapi Fhir](https://github.com/openmrs/openmrs-contrib-plm-fhir-server) and having mentorship session with my mentors @mozzy and @k.joseph .

The tasks will be working on tasks emerging from possible CQL intergrations into PLIR from other teams like Intra-health plus also spiking on e2e testing for the debezium bin-log streaming in the analytics engine.

@jennifer @grace

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [February 17, 2021, 11:44am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/5 "2021-02-17T11:44:03Z")

</div>

Hello community;

In the previous days i finished up with some tasks in the analytics engine and hapi fhir JPA server ie the intergrations tests for the collect data operation. Debugging some issue related to reading hard coded basic auth credentials from a yaml file

Started work in the analytics engine about the end to end integration testing for the debezium-binlog streaming and also finalizing other tasks related to PLIR work in the analytics engine .

Also contnued attendance of weekly PLIR and FHIR squard calls and having fellowship sessions with my mentor @mozzy

---

<div class="post-metadata">

**Author:** ![mozzy](https://talk.openmrs.org/user_avatar/talk.openmrs.org/mozzy/32/11815_2.png) [@mozzy](https://talk.openmrs.org/u/mozzy)\
**Post date:** [February 17, 2021, 11:44am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/6 "2021-02-17T11:44:58Z")

</div>

great work @gcliff

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [March 3, 2021, 9:08am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/7 "2021-03-03T09:08:43Z")

</div>

In the past two weeks.

I started working on the end to end testing of the stream mode pipeline processing of the [analytics engine](https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics) and also finishing up on other issues in the analytics engine needed for the Ampath deployment.

Also continuing to have weekly fellowship sessions with @mozzy & @k.joseph plus the analytics & FHIR/PLIR weekly calls

---

<div class="post-metadata">

**Author:** ![mozzy](https://talk.openmrs.org/user_avatar/talk.openmrs.org/mozzy/32/11815_2.png) [@mozzy](https://talk.openmrs.org/u/mozzy)\
**Post date:** [March 3, 2021, 9:14am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/8 "2021-03-03T09:14:23Z")

</div>

great work @gcliff

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [March 21, 2021, 7:06am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/9 "2021-03-21T07:06:11Z")

</div>

Hello everyone

In the past two weeks i have been working on the finishing up some issues in the anyltics engine particularly for the e2e testing of the binlog pipeline.

Also started on some tasks in the fhir2 module and holding sessions with my mentor @mozzy

For the next week , ill focus creating a qa-framework for the PLIR integration setup.

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [April 2, 2021, 12:52pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/10 "2021-04-02T12:52:49Z")

</div>

Hello everyone,

In the last two weeks of March i have been working on developing a script for the end-to-end test of the stream pipeline of the [analytics engine](https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics) with [bash shell](https://www.linux.com/training-tutorials/writing-simple-bash-script/), the task also involved making some refactoring in the end-to-end batch script to factor out the common pieces in both scripts ie setting up the test environment(spin-up the openemrs and fhir docker containers),this has given me a frist time exposure to script programming , getting a deep dive scripts and becoming familiar with how they work.

I have also been doing some work in the [fhir2 module](https://github.com/openmrs/openmrs-module-fhir2) which is basically to implement the [has search parameter](https://www.hl7.org/fhir/search.html#has) on the [service request](https://www.hl7.org/fhir/servicerequest.html) resource referring to the [Observation](https://www.hl7.org/fhir/observation.html), this issue has tasked me to dig into the [fhir2 module DAO code](https://github.com/openmrs/openmrs-module-fhir2/tree/master/api/src/main/java/org/openmrs/module/fhir2/api/dao) to learn how the patterns of java code are being used to write code that generates sql queries that stored and retrieve data from the openmrs DB(thanks to @ibacher for the motoring). During this process i got to learn and appreciate more the beauty of the [hibernate framework](https://hibernate.org/) plus the [criteria API](https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/Criteria.html#createAlias-java.lang.String-java.lang.String-) in mapping java classes to database tables and from java data types to SQL data types, i also got learn more about java 8 [stream](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html) and [optional](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html) API plus [lambda expressions](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) which provides a clear and concise way to represent one method interface using an expression in the collections library .

I have also been doing more personal studies on the analytics batch mode code to better understand how the segmentation between the batch fhir and batch jdbc is done using the [search segment descriptor](https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics/blob/master/batch/src/main/java/org/openmrs/analytics/SearchSegmentDescriptor.java), also took a look into some concepts ie the [parquet files](https://parquet.apache.org/) and the beauty they bring to the table of storing data in columnar format for easy storing and querying plus [flattening of tables](https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AnalyzingData/FlattenedTables/FlattenedTables.htm) in DBs .

Having sessions with my mentor @mozzy and weekly check-ins with @k.joseph & @jennifer

Planning to continue with work in analytics and fhir2 plus dockerizing the [plir-widget](https://github.com/mozzy11/plir-widget), focussing on QA with in the FHIR/PLIR project

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [April 19, 2021, 4:18pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/11 "2021-04-19T16:18:39Z")

</div>

Hello folks

For the past 17 days , i have been working on setting up setting up a remote instance of openmrs with the debezium running pipeline since this is needed to have a full remote set-up for the [PLIR project](https://wiki.openmrs.org/display/projects/Architectural+Design+Approach+to+support+an+integrated+approach+to+patient-level+indicator+reporting+for+OpenMRS) to easily to tests remotely, currently we only have [openHIM](http://openhim.org/) and [hapifhir](https://hapifhir.openmrs.org/#) remotely as seen [here](https://wiki.openmrs.org/display/projects/PLIR+Project+Components+Logins)… This has helped me learn more about [docker containerization](https://docs.docker.com/) and how to configure [docker files](https://docs.docker.com/engine/reference/builder/#:~:text=A%20Dockerfile%20is%20a%20text,command%2Dline%20instructions%20in%20succession.) ie mapping [volumes,](https://docs.docker.com/storage/volumes/) setting up a dependency hierarchy for the execution on different services in a single docker file forexample for this use-case i hade to come up with a single docker file containing the mysql, openmrs reff-app and streaming -binlog services. Also got insights into the deploying of openrms docker-compose files used to set-up the [OpenMRS infrastructure](https://github.com/openmrs/openmrs-contrib-ansible-docker-compose) forexample how the [proxy servers](https://www.jscape.com/blog/bid/87783/forward-proxy-vs-reverse-proxy#:) are used here to plus the configuration of various DNS names for different applications and how the proxy server restricts all this to port 443 for https client requests and port 80 for http client requests.

Continued work in the [analytics engine](https://github.com/GoogleCloudPlatform/openmrs-fhir-analytics) ie getting more familiar with how the indicator calculation is done on the stream data in the [datawarehouse](https://en.wikipedia.org/wiki/Data_warehouse) which in our case is the data in form of [parquet files](https://databricks.com/glossary/what-is-parquet#:~:text=Back%20to%20glossary,like%20CSV%20or%20TSV%20files.) . This has helped learn more about [spark api](https://spark.apache.org/docs/latest/) and its [fundamental cluster architecture](https://spark.apache.org/docs/latest/cluster-overview.html) plus the [python api for spark](https://spark.apache.org/docs/latest/api/python/index.html) and [pyspark.sql](https://spark.apache.org/docs/2.4.0/api/python/pyspark.sql.html#) which are the tools being used for report and PEPFA indicator calculation to generate reports for analysis as part of the MVP for the analytics work.

Next tasks:

Continuing work in analytics mainly around indicator definition library and learning about tools and frameworks used in big-data processing .

Start working on issues related to e2e testign for the PLIR work, we are looking into the possibility of using [HIE Automation testing framework](https://github.com/CDCgov/hie-automation-tests)

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [May 10, 2021, 6:01pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/12 "2021-05-10T18:01:13Z")

</div>

hello everyone ,

I the past 3 weeks i have been working on the analytics engine around the reporting side of it to introduce the time based of data in the indicator library because currently we only have age based and gender aggregation which has helped me learn more about pyspark api and the [pyspark sql module](https://spark.apache.org/docs/2.4.0/api/python/pyspark.sql.html#) with doing pivots, flattening of data in parquet files for better aggregations, also had sessions with @akimaina from Ampath about the best structural approach to implement the time based aggregation in the sample TX-PVLS indicator that was implemented in the analytics engine

Leaning more about the fhir2 module and its DAO level workings of how the joins are being done between various tables to generate the necessary pseudo-SQL to extract needed data from openmrs using the hibernate criteria API. Looking into taking up more tasks around [HIE automation](https://github.com/openmrs/hie-automation-tests) testing framework for the PLIR work.

Finished work on the end to end for stream mode and refactoring in the batch model script (pending review), also implemented the time based aggregation in the library(pending some review ), about the infrastructure for the remote openmrs and debezium pipeline for our e2e testing for PLIR we are still seeing if we can leverage the amazon credits allocated to openmrs to have these instances up and running. cc @jennifer & @k.joseph

Having weekly sessions with my mentor @mozzy to continue on the work in fhir and analytics engine

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [May 31, 2021, 7:34am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/13 "2021-05-31T07:34:25Z")

</div>

Hello everyone

I have been reading more and getting familiar [CQL](https://cql.hl7.org/2020May/01-introduction.html) that we are going to use to build the TX\_CURR ( Number of adults and children currently receiving antiretroviral therapy )as an extra POC CQL based indicator calculation in addition to TX\_PVLS. Using cql we shall define the CQL logic and all the CQL related resources for TX\_CURR Calculation in a typical HIE setup.

I have also learnt more about the data model domains, how to query the different data in tables using HQL and the hibernate criteria api to write sql statements while implementing the basedOn and the has search parameter task in fhir. Also continued work in the analytics engine and in regards to the time based dis-aggregation tasks is was implementing on top of the age based dis-aggregation i was advised by Bashir to halt work on it until the ETL reporting module is more mature and we know exactly how we want to use it for PEPFAR reporting.

In addition to my main fellowship tasks and goals in deep personal side extra studying in other arears around concepts, how they work around and the concept domain.

I have also had fellowship evaluations with my mentor @mozzy and continuing to have more sessions and weekly fellowship check-ins .

Next task:

This coming month am going to be focusing on the epic sprint for building the TX-CURR indicator and all the related sub-tasks around it as my final work for the PLIR project.

Thanks

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [June 13, 2021, 5:02pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/14 "2021-06-13T17:02:56Z")

</div>

hello folks,

As we are winding the fellowship journey for the PLIR work, i am working on a mini epic sprint for TX-CURR indicator through which i have implemented the CQL logic for calculation the [TX-CURR indicator](https://mer.amfar.org/Manual/TX_CURR#:~:text=This%20indicator%20measures%20the%20ongoing,to%20be%20eligible%20for%20treatment.) as a second POC for PLIR In addition to the TX-PVLS indicator. The has helped me learn more about the [CQL frame work](https://cql.hl7.org/01-introduction.html) and how it can be used to develop logic for various indicators.

Through the sprint i have implemented the TX-CURR measure resource with the expression targeting coded concepts for **CIEL: 160119 (Currently taking ARV )** and **CIEL:1065** (yes), this measure resource references the needed TX-CURR library resource having the embedded cql logic encoded with base64 for calculating the indicator, this library resource also depends on [CIEL](https://openconceptlab.org/orgs/CIEL/sources/CIEL) and [FHIRHelpers](http://hl7.org/fhir/Library/FHIRHelpers%7C4.0.1) to do the calculation.

Currently working automation tests for the TX-CURR indicator using the [openmrs hie automation framework](https://github.com/openmrs/hie-automation-tests). Adding the TX-CURR measure and library resources to the [plir dockerised set-up](https://github.com/openmrs/openmrs-plir-dockerized-setup), also finishing up on the pending tasks in the analytics engine(pending review) plus FHIR2.

Continuing to have sessions with my mentor @mozzy and also doing final evaluations

Added the wiki page setup for the new indicator (TX\_CURR)

The next task :-

```
   Integrate a CI build pipeline for the PLIR Automation Tests
```

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [June 29, 2021, 7:19am UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/15 "2021-06-29T07:19:11Z")

</div>

Hello community

# **Final Reflections**

As we are wrapping up the PLIR fellowship project at the end of this month, i have completed all the pending tasks which were to finish up with the TX\_CURR indicator calculation sprint, add the automation testing bit of it using HIE automation framework plus integrating a CI build pipeline for the PLIR automation tests as the second proof of concept.

Special thanks thanks to my mentors @mozzy and @k.joseph for their wonderful technical guidance. Allow me to extend sincere thanks to @jennifer and @grace for their incredible PLIR project management.

I have created the Slide deck and Video Presentation Below Summarizing all My work during My Fellowship Journey .

[Slide Deck](https://docs.google.com/presentation/d/1-fE3ig7Gj21TQ8Sv8FKSshKBXDWIHjDG9VjCINpNNuk/edit?ts=60d0ad8a#slide=id.p)

[Final Video Presentation](https://www.youtube.com/watch?v=sOgGgo5_hdM)

Take care, Cliff

---

<div class="post-metadata">

**Author:** ![k.joseph](https://talk.openmrs.org/user_avatar/talk.openmrs.org/k.joseph/32/8097_2.png) [@k.joseph](https://talk.openmrs.org/u/k.joseph)\
**Post date:** [June 29, 2021, 4:11pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/16 "2021-06-29T16:11:23Z")

</div>

Thanks a lot @gcliff for this update, could you please share the Slide Deck for the public to have access to it

---

<div class="post-metadata">

**Author:** ![gcliff](https://talk.openmrs.org/user_avatar/talk.openmrs.org/gcliff/32/8783_2.png) [@gcliff](https://talk.openmrs.org/u/gcliff)\
**Post date:** [June 29, 2021, 5:35pm UTC](https://talk.openmrs.org/t/my-fellowship-journey-cliff-gita/31148/17 "2021-06-29T17:35:43Z")

</div>

thanks @k.joseph ,

should be clear now
