We’ve just completed our final working sprint, consisting of six primary objectives.
1. Maintain communication and collaboration with all other teams. 2. Create a mock diagram demonstrating our implementation ideas. 3. Capture the specific data requested by the AMPATH team. 4. Store this specific data into the PouchDB database. 5. Write tests for our existing code. 6. Develop an offline GUI to display specific offline data.
Maintaining communication and collaboration:
Sprint 6 involved substantial communication between ourselves and the other teams. Since this was our last working sprint, our team knew it was imperative to keep up to date on what everyone is working on. Each team is working on a critical part of the offline AMPATH implementation. I like to think of these critical parts as pieces to a puzzle. Eventually we’re all going to have to put these pieces together, and they all have to fit right. Our team agreed that communication is the best way to ensure how the pieces will fit in our final stages of implementation.
Based on our cross-team discussions during this sprint, we began brainstorming how to connect all teams’ implementations as a whole. We’re in the process of designing a mock-up that demonstrates the idea. This ought to be done in time for our final presentation next week.
Creating a mock-up demonstrating our implementation ideas:
We felt that designing a mock diagram was important for the AMPATH team (and our classmates) to see exactly what we envision our final implementation to look like.
We would like to give credit to the offline-storage team for designing the original mock-up above. Small changes were made to reflect the specific information we plan on capturing. After receiving approval from JJ, we began working to implement this overall design.
Capturing the specific data requested by the AMPATH team:
This refers to capturing five specific categories of information to be stored in a PouchDB database:
1. Basic Patient Information 2. Patient Visits 3. Vitals 4. Lab Results 5. HIV Summary
We were able to accomplish updating our offline-data-capture component to include functions that capture the aforementioned data. We were able to accomplish this by using existing OpenMRS services located within the AMPATH app. We made functions where each focuses on capturing and storing one specific category.
Storing the aforementioned categories into PouchDB:
The AMPATH team suggested that we separate the different categories when storing them into PouchDB. This makes a lot of sense; we noticed the original data we were capturing tended to exceed over 3000 lines per patient. The larger the file, the longer it takes to load. We want our offline implementation to load as quickly as possible for the convenience of those using it.
Now that we’re only capturing specific data and storing each category separate, the file sizes are significantly smaller. We opted to store them by name of the category, followed by a given patient’s UUID. For example:
patient-064e419c-ff4e-4a6f-b83f-e1df48e80723 vitals-064e419c-ff4e-4a6f-b83f-e1df48e80723 visits-064e419c-ff4e-4a6f-b83f-e1df48e80723 labs-064e419c-ff4e-4a6f-b83f-e1df48e80723 hivSummary-064e419c-ff4e-4a6f-b83f-e1df48e80723
Writing tests for our existing code:
Ideally, we should have written our tests prior to any actual implementation. Then we could have written our code in a specific fashion to make our tests pass. I am still new to unit testing; this is something I need to work on in future projects (writing tests before implementation). On a positive note, the offline-storage team has made substantial progress writing tests for their component and service. Since they’re using PouchDB as well, our team should be able to easily revise their tests to suit our needs.
Developing a GUI to display specific offline data:
This concerns designing a component with the overall look of the aforementioned mock-up we came up with. We are in the process of implementing this GUI, but we’re having issues getting anything to display to the user. Everything I’ve tried so far hasn’t been working, and it’s pretty frustrating. Here’s the type of errors I am getting:
I think it has something to do with losing the result once leaving the promise. I am hoping to get this working by our project presentation. If anyone wants to see my most recent attempt at getting this working, the commit can be found here.
Overall
I think this was a very eventful sprint. We’ve all done a good job communicating not only with each other, but with other teams as well. Personally, I believe many of my contributions would not have been possible without the communication and support from my teammates, AMPATH, the other teams, and my professor.
From the blog CS@Worcester – Jason Knowles by Jason Knowles and used with permission of the author. All other rights reserved by the author.