Skip to content

A blazing-fast multi-FHIR, multi-tenant, multi-database, data streaming reference implementation FHIR Server built in dotnet.

License

Notifications You must be signed in to change notification settings

brendankowitz/ignixa-fhir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ignixa Logo

Ignixa FHIR Server

High-Performance, Multi-Tenant, Cloud-Native FHIR Server for dotnet

dotnet FHIR NuGet Docker License Docs


Project Status: Advanced Research / Reference Implementation. This is a personal project exploring "next-gen" architecture. It implements and pushes the advanced parts of the FHIR specification but is not a supported production product. This project heavily uses the most advanced coding AI agents (with a lot of manual validation and code-reviews) to implement and iterate quickly.


Overview

Ignixa is a modular, high-performance FHIR ecosystem built on .NET. It serves as both a Reference Server and a suite of Standalone Tools offering a robust foundation for healthcare data interoperability.

Designed for the cloud, Ignixa supports multi-tenancy out of the box, with data isolation and configurable storage backends (currently SQL Server) and bulk operations supporting Azure Blob Storage.

✨ Key Features

πŸ₯ Core FHIR Capabilities

  • Multi-Version Support: Seamlessly handles R4, R4B, R5, R6-Ballot2, and STU3.
  • Comprehensive API: Full CRUD, Search, History, Batch/Transaction Bundles, and Patch (FHIRPath Patch).
  • Advanced Validation: Three-tier validation engine (Fast, Spec, Profile) ensuring data integrity.
  • Extensive Search: Support for standard and advanced search parameters, including chaining and includes.

⚑ Performance & Scalability

  • Streaming-First: Zero-copy serialization and response streaming minimize memory footprint, even for large datasets.
  • High Throughput: Built on ASP.NET Core Minimal APIs for the lowest overhead.
  • Background Processing: Integrated DurableTask framework for reliable, asynchronous bulk $export and $import operations.

🏒 Enterprise Ready

  • Multi-Tenancy: Built-in tenant isolation (Physical partitioning).
  • Production Storage: robust SQL Server (EF Core) provider with optimized indexing.
  • Cloud Native: Container-ready with Azure integration (App Service, SQL Database, Storage).
  • Clean Architecture: Strict separation of concerns (Domain, Application, Infrastructure, API) facilitates maintenance and extension.

πŸ“¦ Deployment

Azure

Ignixa can be deployed to Azure using Bicep (Infrastructure as Code). This provisions a complete, secure environment with:

  • App Service (Linux) for hosting the container.
  • SQL Server with auto-provisioned tenant databases.
  • Storage Accounts for FHIR data and DurableTask orchestration.
  • Managed Identity for zero-trust, passwordless security.

Single-Tenant Deployment (One-Click):

Deploy to Azure

Or use the CLI:

az deployment group create \
  --resource-group ignixa-dev \
  --template-file deploy/azure/azuredeploy.json \
  --parameters appName=ignixa-demo

Advanced: Bicep Templates for Multi-Tenant Deployment (e.g., 10 tenants):

az deployment group create \
  --resource-group ignixa-prod \
  --template-file deploy/azure/main.bicep \
  --parameters appName=ignixa-prod tenantCount=10

πŸ“š View Complete Azure Deployment Guide

Docker

The official image is available on GitHub Container Registry:

docker pull ghcr.io/brendankowitz/ignixa-fhir:release

Production Mode (SQL Server) πŸš€

For a complete, high-performance experience with SQL Server, use Docker Compose. This enables full ACID transactions, advanced indexing, and concurrency support.

docker compose up -d

The server will be available at http://localhost:8080/metadata.

Configuration: You must create a .env file (see .env.example) to set the SQL_SA_PASSWORD and optionally the image tag.

πŸ› οΈ Quick Start (Local Development)

Prerequisites

Build & Run

# 1. Clone the repository
git clone https://github.com/brendankowitz/ignixa-fhir.git
cd ignixa-fhir

# 2. Build the solution
dotnet build All.sln

# 3. Run the API (defaults to File System storage for dev)
cd src/Ignixa.Api
dotnet run

Access the metadata endpoint at https://localhost:5001/metadata.

Configuration

Ignixa uses standard appsettings.json for configuration.

Enable SQL Server (Recommended for Production):

{
  "Storage": {
    "Provider": "SqlServer",
    "ConnectionString": "Server=(localdb)\mssqllocaldb;Database=IgnixaFhir;Trusted_Connection=True;"
  }
}

See appsettings.json for full configuration options.

πŸ’» Developer Tools

Ignixa includes a suite of powerful CLI tools to accelerate development and testing.

Tool Description
ignixa-fakes Generate realistic synthetic patient data, clinical scenarios, and populations at scale.
ignixa-sqlonfhir Transform FHIR data into tabular formats (Parquet/CSV) using SQL-on-FHIR ViewDefinitions.
ignixa-validator High-performance FHIR resource validation (JSON) against official profiles.

Install any tool globally:

dotnet tool install --global Ignixa.FhirFakes.Cli

πŸ—οΈ Architecture

Ignixa follows a strict Clean Architecture pattern using CQRS (Command Query Responsibility Segregation) with Medino.

  • API: Minimal API endpoints, middleware, and presentation logic.
  • Application: Business logic, CQRS Handlers (Commands/Queries).
  • Domain: Core entities, value objects, and repository interfaces.
  • DataLayer: Infrastructure implementations (SQL, FileSystem, BlobStorage).

🧩 Ignixa Core SDK

The heart of Ignixa is a set of high-performance, reusable dotnet libraries available on NuGet. These can be used independently to build custom FHIR applications.

Package Feature
Ignixa.FhirFakes Schema-based test data generator for creating realistic synthetic FHIR resources and clinical scenarios.
Ignixa.FhirMappingLanguage FHIR Mapping Language (FML) parser and StructureMap engine.
Ignixa.FhirPath A fast, compiled FHIRPath engine.
Ignixa.NarrativeGenerator FHIR narrative generation using Scriban templates with FHIRPath support.
Ignixa.PackageManagement NPM-based package manager for downloading and caching FHIR implementation guides.
Ignixa.Search Search parameter definitions, indexing, and high-speed value extraction.
Ignixa.Serialization System.Text.Json based serialization optimized for high-throughput.
Ignixa.Specification FHIR structure definitions and auto-generated providers for R4/R4B/R5/R6/STU3.
Ignixa.SqlOnFhir Implementation of the SQL on FHIR v2 specification for data transformation.
Ignixa.Validation Three-tier validation engine (Fast, Spec, Profile) for robust data integrity.

See the Core SDK Documentation for full details.

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines and the Developer Guide for details on setting up your environment and submitting PRs.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

Ignixa is inspired by and incorporates patterns from excellent open-source projects:


Ignixa β€” Intelligent Gateway for Next-generation Interoperability and eXtensible APIs.

About

A blazing-fast multi-FHIR, multi-tenant, multi-database, data streaming reference implementation FHIR Server built in dotnet.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors 6