epiDonate [code] [Documentation] [YouTube Tutorial] [API]


Almeida JS, Patel B, Russ DE, Bhawsar P, Maurice PFS, Matthews C, Anand A, Ferguson M, Johnson D, Brotzman M, Gerlanc N, Chanock S, de Gonzalez AB, Gaudet M, Garcia-Closas M. (2023). epiDonate - distributed serverless data infrastructure for epidemiological studies. AMIA Jt Summits Transl Sci Proc. Jun 16;2023:25-31. [PMID 37350888]

Problem - Many cohort studies require mechanisms for data donation. Typical examples are the donation of consumer genomics and wearable sensor data.

It is, however, not reasonable to expect participants to have the computational skills, or the patience, to handle the data extraction and submission on their own. It is also not reasonable that epidemiologists are taken hostage by the IT budgets of customized closed-source software development. Instead, we argue, the data donnation should be orchestrated by cohort study Web Applications that operate a core of open-source managed services (ideally zero-idle, with a serverless cloud execution model).

Solution - A minimalist public open-source web service was developed to manage individual invitation tokens that the study participant associates with an OAuth2 identity.

The epiDonate web service is a minimalist implementation of the data infrastructure design we identified for NIH Connect for Cancer Prevention Study (CONNECT). This Minimal infrastructure for data donation uses the modern Web Stack operating a single HTTP REST API that handles transactions on behalf and withing the governance of the participant. Specifically, it relies on a tabulation of HTTP GET and POST methods with user-defined read/write permissions. The service, in the public domain and with open-source at GitHub, automatically creates user and admin tokens stored in a gitignored data folder.

EpiDonate was already loaded in this page, by
dona = await import('https://episphere.github.io/donate/methods.js')

As illustrated in the tutorial and documentation, opening your browser DevTools will provide you with a console, a network tab, and a full fledged IDE where to experiment with epiDonate's SDK. Maybe start with the this public deployment.


epiVerse - Juggling multiple epiDonate backends at the same time, as described in the documentation.