2026-09-09 21:00:42 +02:00
2026-09-09 21:00:42 +02:00
2026-09-09 21:00:42 +02:00
2026-09-09 21:00:42 +02:00
2026-09-09 21:00:42 +02:00

Interactive Medical Data App

Version: 0.0.1


Authors

  • Tom Gebhardt
  • Sarah Braun
  • Christian Draeger
  • Lea Michaelis
  • Sherry Freiesleben
  • Dagmar Waltemath
  • Matthias Löbe
  • Judith Wodke

Abstract

This Shiny application provides an interactive platform for uploading, integrating, visualizing, and summarizing heterogeneous medical datasets (CSV, JSON, FHIR). Built on state-of-the-art R packages (e.g., shiny, fhircrackr, ggplot2, leaflet), it enables researchers and clinical IT teams to explore data quality, distributions, and shared categories across multiple sources with full reproducibility and modularity.


Background

  • Heterogeneous Data Sources Clinical and research data often exist in disparate formats: CSV exports, JSON-formatted histograms, and HL7 FHIR APIs.

  • Need for Integration Comparative analyses require harmonization of these diverse formats into a unified view.

  • Interactive Dashboards Shiny apps facilitate real-time exploration for non-technical users.


Features

Category Description
Data Import • Upload multiple CSV, JSON, or FHIR® bundle JSON files (e.g. pre-fetched from a HAPI Test Server)
• Live FHIR server connection code exists (fhircrackr/httr) but is currently not wired into the UI — no immediate use case was found, so it's unused for now
Column Mapping • Dynamically map Category and Count columns when CSV headers differ
Visual Exploration • Draggable mini-plots (Histogram, Pie Chart, Line Chart) with adjustable transparency
• “Stack All” and “Stack Selected” controls
Data Combination & Intersection • Stacked-bar combination of selected categories across datasets
• Identify and export category intersections as JSON
Statistical Overview • Auto-generated tables: dataset sizes, mean counts
• Color-coded summary of category prevalence (all/multiple/single sources)
Geospatial Visualization Currently disabled: code for an interactive map of German Data Integration Centers (leaflet + geodata) exists but is commented out and not part of the running app
FHIR Bin Reports • Bin FHIR attribute values (text, numeric, boolean) and export as a FHIR MeasureReport (separate or composite stratifier format)

System Architecture

This application adopts a modular Shiny framework for clarity, testability, and maintainability:

  1. UI Layer Defined via fluidPage() and navbarPage(), grouping functionality into:

    • Data Upload
    • Census Data
    • FHIR in bins
    • Visualization
    • Combined Data
    • Statistics
  2. Server Layer

    • Reactivity: reactive(), eventReactive() ensure immediate UI updates
    • Observers: observe(), observeEvent() handle user-driven events
  3. Helper Modules

    • loadJsonData(), loadCsvData(), make_safe_id() encapsulate parsing, validation, sanitization
  4. Plotting Components

    • ggplot2 charts via separate render functions (renderPlot()); a leaflet map render function exists but is currently commented out (see Geospatial Visualization above)
  5. Data Integration Pipeline Central reactive allData unifies datasets from uploads, powering both visualization and statistics without redundant computations.

  6. Extensibility & Testing

    • Modular structure allows adding new data sources or plot types
    • Supports unit testing of individual functions independent of UI

Requirements

  • R ≥ 4.2

  • OS: Linux, macOS, Windows

  • Packages (installed automatically via ensure_pkg()):

    install.packages(c(
      "shiny", "shinythemes", "shinyjqui",
      "jsonlite", "readr", "fhircrackr", "httr",
      "dplyr", "tidyr", "ggplot2", "leaflet",
      "DT"
    ))
    

Installation

  1. Clone repository

    git clone https://git.uni-greifswald.de/MILA_public/DQ-App.git
    cd DQ-App
    
  2. Install & Run

    source("app.R")  # ensure_pkg() installs missing dependencies
    runApp("app.R")
    

Need a ready-made R environment? If you don't have a suitable R installation, use a container image from the Rocker Project. The rocker/shiny or rocker/tidyverse images provide R with Shiny preinstalled and give you a reproducible environment for running the app.


Usage

  1. Run the app (see Installation above) — Shiny will open it automatically in a browser window/tab.

  2. Navigate tabs:

    • Data Upload: Upload CSV/JSON/FHIR bundle files
    • Census Data: Visualize census population data and uploaded FHIR patient data
    • FHIR in bins: Bin FHIR attribute values and export as a FHIR MeasureReport
    • Visualization: Arrange & filter mini-plots
    • Combined Data: Combine categories, download JSON
    • Statistics: View summaries & category presence

Quality Assurance & Reproducibility

  • Version Control: Git with feature branches & peer review
  • Unit Testing: Planned testthat coverage for core functions
  • Documentation: Inline comments + precise README ensure transparency

Future Directions

  • Extended FHIR Support: Add Observations, Conditions
  • Automated Testing: Full testthat suite integration

License & Citation


Note

: A live FHIR-server connection was implemented and works, but is currently not exposed in the UI — no immediate use case was found for it. FHIR data is currently provided via uploading pre-fetched bundle JSON files instead.

S
Description
No description provided
Readme MIT
97 KiB
Languages
R 100%