Google Summer of Code 2021

Peter Lubell-Doughtie
October 07, 2021

Ona and Google have been collaborating to bring to life code and API-driven healthcare guidelines based on the FHIR (Fast Health Interoperability Resources) standard. This collaboration involves aligning Google’s Android FHIR SDK, Ona’s FHIR Core, and the WHO’s Antenatal Care Smart Guidelines to enable FHIR-native care guidance, which allows our partners to deliver healthcare services to those who need them most with consistently structured data. We participated in Google Summer of Code (GSoC) to work with four students interested in extending the Android FHIR SDK code base through four projects: peer-to-peer data transfer, using FHIRPath for FHIR Protocol Buffers, a HAPI Struct to FHIR Protocol Buffers conversion tool, and creating custom styles in the Structured Data Capture library. We will go through these below.

Peer to peer data transfer with Anubhav Sharma

In healthcare settings that are completely offline, peer to peer (p2p) data transfer allows different healthcare workers to share data and provide coordinated care. p2p transfer also allows completely offline devices to communicate with a device that may be intermittently online, perhaps after traveling to a location with WiFi or cellular data service. In his work, Anubhav Sharma implemented proof of concepts for p2p data transfer using the WiFi Direct protocol and the Nearby Connections API.

The p2p proofs of concept included demo apps with both of the above approaches and a cogent discussion of the pros and cons of each approach. We continued this work with architecture discussions and are now building out the scope and implementation plan to add p2p sync to the Android FHIR SDK using WiFi direct. Anubhav contributed a wealth of code and information we will build upon to support the offline healthcare use cases commonplace in much of the world

FHIRPath for FHIRProto Library with Deepro Choudhury

The most common data serialization formats are JSON and XML, both of which are used by FHIR to encode data. FHIR currently only supports JSON, XML and RDF (Turtle). However, Google has applied its own serialization format, protocol buffers, to create FHIRProto. FHIRProto provides a type-safe, strongly validated FHIR format with cross-language support at a fraction of the size on disk.

One of the limitations of FHIRProto is that it is incompatible with the path-based graph-traversal extraction language FHIRPath. In his GSoC project, Deepro Choudhury implemented a library that allows FHIRPath to be used with protocol buffers and FHIRProto. With this work we can extend the Android FHIR SDK and the HAPI FHIR server to communicate in FHIRProto and support FHIRPath queries.

HAPI Struct to/from FHIRProto Conversion Tool with Aditya Kurkure

Related to the FHIRProto project above, what if FHIRProto is supported on the mobile app but not supported on the server where we sync data? If we are using a HAPI FHIR server, this would not be a problem as long as we have a reliable way to convert between HAPI Struct and FHIRProto. Aditya Kurkure built a tool to do exactly this in his GSoC project.

The HAPI Struct <> Proto Conversion Tool implemented two comparative approaches to conversion — the first using JSON serialization as an intermediary and the second using Kotlin code generation.

Custom Styles in the SDC Gallery with Fikri Yurcel Milano

The Structured Data Capture (SDC) library within the Android FHIR SDK renders FHIR Questionnaires as native forms on Android. However, in the current implementation there is no built in support to customize the look and feel of that rendering. In his work, Fikri Yurcel Milano extended the render so that implementers can customize the color, style, and other aspects of appearance to match their application.

These customization extensions use attributes in  an app’s XML styles file to override the default style with a custom style. We are extending this by storing styles in a FHIR resource that can be dynamically loaded to vary styles without hardcoding.

Wrapping Up

We had a great time collaborating with Google on these Android FHIR SDK GSoC projects. A big thank you to the mentors Ephraim Kigamba, Martin Ndegwa, Richard Kareko, Ronald Kudoyi, Simon Njoroge, and Steve Ng who worked with our GSoC students. And of course none of this would be possible without the amazing work of the students Aditya Kurkure, Anubhav Sharma, Deepro Choudhury, and Fikri Yurcel Milano. We are thrilled to integrate their work into the Android FHIR SDK and FHIR Core, enabling our partners to deliver high quality healthcare services to those who need them most. We are looking forward to participating in next year’s GSoC.