1.0.1Table of Contents

 

Welcome to HAPI FHIR!


1.0.0 Welcome to HAPI FHIR
1.0.0 Table of Contents
1.1.0 Changelog: 2023
1.1.1 Changelog
1.1.2 HAPI FHIR 7.2.0 (Borealis)
1.1.3 HAPI FHIR 7.0.0 (Apollo)
1.1.4 HAPI FHIR 6.8.5 (Yucatán)
1.1.5 HAPI FHIR 6.8.4 (Yucatán)
1.1.6 HAPI FHIR 6.8.3 (Yucatán)
1.1.7 HAPI FHIR 6.8.2 (Yucatán)
1.1.8 HAPI FHIR 6.8.1 (Yucatán)
1.1.9 HAPI FHIR 6.8.0 (Yucatán)
1.1.10 HAPI FHIR 6.6.2 (Xenon)
1.1.11 HAPI FHIR 6.6.1 (Xenon)
1.1.12 HAPI FHIR 6.6.0 (Xenon)
1.1.13 HAPI FHIR 6.4.6 (Wizard)
1.1.14 HAPI FHIR 6.4.5 (Wizard)
1.1.15 HAPI FHIR 6.4.4 (Wizard)
1.1.16 HAPI FHIR 6.4.3 (Wizard)
1.1.17 HAPI FHIR 6.4.1 (Vishwa)
1.1.18 HAPI FHIR 6.2.5 (Vishwa)
1.1.19 HAPI FHIR 6.2.4 (Vishwa)
1.1.20 HAPI FHIR 6.2.3 (Vishwa)
1.1.21 HAPI FHIR 6.10.2 (Zed)
1.1.22 HAPI FHIR 6.10.1 (Zed)
1.1.23 HAPI FHIR 6.10.0 (Zed)
1.1.24 HAPI FHIR 5.5.0 (Prerelease)
1.2.0 Changelog: 2022
1.2.1 Changelog
1.2.2 HAPI FHIR 6.4.0 (Vishwa)
1.2.3 HAPI FHIR 6.2.2 (Vishwa)
1.2.4 HAPI FHIR 6.2.1 (Vishwa)
1.2.5 HAPI FHIR 6.2.0 (Vishwa)
1.2.6 HAPI FHIR 6.1.3 (Unicorn)
1.2.7 HAPI FHIR 6.1.2 (Unicorn)
1.2.8 HAPI FHIR 6.1.1 (Unicorn)
1.2.9 HAPI FHIR 6.1.0 (Unicorn)
1.2.10 HAPI FHIR 6.0.5 (Tanuki)
1.2.11 HAPI FHIR 6.0.4 (Tanuki)
1.2.12 HAPI FHIR 6.0.3 (Tanuki)
1.2.13 HAPI FHIR 6.0.2 (Tanuki)
1.2.14 HAPI FHIR 6.0.1 (Tanuki)
1.2.15 HAPI FHIR 6.0.0 (Tanuki)
1.2.16 HAPI FHIR 5.7.6 (Sojourner)
1.2.17 HAPI FHIR 5.7.5 (Sojourner)
1.2.18 HAPI FHIR 5.7.4 (Sojourner)
1.2.19 HAPI FHIR 5.7.3 (Sojourner)
1.2.20 HAPI FHIR 5.7.2 (Sojourner)
1.2.21 HAPI FHIR 5.7.1 (Sojourner)
1.2.22 HAPI FHIR 5.7.0 (Sojourner)
1.2.23 HAPI FHIR 5.6.4 (Raccoon)
1.2.24 HAPI FHIR 5.6.3 (Raccoon)
1.2.25 HAPI FHIR 5.5.7 (Quasar)
1.2.26 HAPI FHIR 5.5.6 (Quasar)
1.2.27 HAPI FHIR 5.5.5 (Quasar)
1.3.0 Changelog: 2021
1.3.1 Changelog
1.3.2 HAPI FHIR 5.6.2 (Raccoon)
1.3.3 HAPI FHIR 5.6.1 (Raccoon)
1.3.4 HAPI FHIR 5.6.0 (Raccoon)
1.3.5 HAPI FHIR 5.5.4 (Quasar)
1.3.6 HAPI FHIR 5.5.3 (Quasar)
1.3.7 HAPI FHIR 5.5.2 (Quasar)
1.3.8 HAPI FHIR 5.5.1 (Quasar)
1.3.9 HAPI FHIR 5.4.2 (Pangolin)
1.3.10 HAPI FHIR 5.4.1 (Pangolin)
1.3.11 HAPI FHIR 5.4.0 (Pangolin)
1.3.12 HAPI FHIR 5.3.3 (Odyssey)
1.3.13 HAPI FHIR 5.3.2 (Odyssey)
1.3.14 HAPI FHIR 5.3.1 (Odyssey)
1.3.15 HAPI FHIR 5.3.0 (Odyssey)
1.3.16 HAPI FHIR 5.2.1 (Numbats)
1.4.0 Changelog: 2020
1.4.1 Changelog
1.4.2 HAPI FHIR 5.2.0 (Numbat)
1.4.3 HAPI FHIR 5.1.0 (Manticore)
1.4.4 HAPI FHIR 5.0.2 (Labrador)
1.4.5 HAPI FHIR 5.0.1 (Labrador)
1.4.6 HAPI FHIR 5.0.0 (Labrador)
1.4.7 HAPI FHIR 4.2.0 (Koala)
1.5.0 Changelog: 2019
1.5.1 Changelog
1.5.2 HAPI FHIR 4.1.0 (Jitterbug)
1.5.3 HAPI FHIR 4.0.3 (Igloo (Point Release))
1.5.4 HAPI FHIR 4.0.0 (Igloo)
1.5.5 HAPI FHIR 3.8.0 (Hippo)
1.5.6 HAPI FHIR 3.7.0 (Gale)
1.6.0 Changelog: 2018
1.6.1 Changelog
1.6.2 HAPI FHIR 3.6.0 (Food)
1.6.3 HAPI FHIR 3.5.0
1.6.4 HAPI FHIR 3.4.0
1.6.5 HAPI FHIR 3.3.0
1.6.6 HAPI FHIR 3.2.0
1.7.0 Changelog: 2017
1.7.1 Changelog
1.7.2 HAPI FHIR 3.1.0
1.7.3 HAPI FHIR 3.0.0
1.7.4 HAPI FHIR 2.5
1.7.5 HAPI FHIR 2.4
1.7.6 HAPI FHIR 2.3
1.8.0 Changelog: 2016
1.8.1 Changelog
1.8.2 HAPI FHIR 2.2
1.8.3 HAPI FHIR 2.1
1.8.4 HAPI FHIR 2.0
1.8.5 HAPI FHIR 1.6
1.8.6 HAPI FHIR 1.5
1.8.7 HAPI FHIR 1.4
1.9.0 Changelog: 2015
1.9.1 Changelog
1.9.2 HAPI FHIR 1.3
1.9.3 HAPI FHIR 1.2
1.9.4 HAPI FHIR 1.1
1.9.5 HAPI FHIR 1.0
1.9.6 HAPI FHIR 0.9
1.10.0 Changelog: 2014
1.10.1 Changelog
1.10.2 HAPI FHIR 0.8
1.10.3 HAPI FHIR 0.7
1.10.4 HAPI FHIR 0.6
1.10.5 HAPI FHIR 0.5
1.10.6 HAPI FHIR 0.4
1.10.7 HAPI FHIR 0.3
1.10.8 HAPI FHIR 0.2
1.10.9 HAPI FHIR 0.1
2.0.0 Getting Started
2.0.0 Introduction
2.0.1 Getting Started
2.0.2 JSON Encoding
2.1.0 FHIR and HAPI FHIR Versions
2.2.0 HAPI FHIR Modules
2.3.0 Downloading and Importing
2.3.1 Maven Users
2.3.2 Gradle Users
2.3.3 Snapshot Builds
2.3.4 Dependencies
2.4.0 FHIR R4B Support
3.0.0 Working With The FHIR Model
3.0.0 Working With Resources
3.0.1 Navigating Structures
3.0.2 Convenience Methods
3.0.3 Examples
3.1.0 Parsing and Serializing
3.1.1 Parsing (aka Deserializing)
3.1.2 Encoding (aka Serializing)
3.2.0 Resource References
3.2.1 References in Client Code
3.2.2 References in Server Code
3.2.3 Versioned References
3.2.4 Automatically Versioned References
3.3.0 Profiles and Extensions
3.3.1 Extensions
3.3.2 Sub-Extensions
3.3.3 Retrieving Extension Values
3.3.4 Custom Resource Structures
3.4.0 Version Converters
3.5.0 Custom Structures
3.5.1 Extending FHIR Resource Classes
3.5.2 Using Custom Types in a Client
3.5.3 Using Custom Types in a Server
3.5.4 Custom Composite Extension Classes
3.5.5 Custom Resource Structure
3.6.0 Narrative Generation
3.6.1 Automatic Narrative Generation
3.6.2 Built-in Narrative Templates
3.6.3 Creating your own Templates
3.6.4 Fragments Expressions in Thymeleaf Templates
3.6.5 FHIRPath Expressions in Thymeleaf Templates
3.7.0 Bundle Builder
3.7.1 Transaction Resource Create
3.7.2 Transaction Resource Updates
3.7.3 Transaction Patch
3.7.4 Customizing the Bundle
4.0.0 Client
4.0.0 Introduction
4.1.0 Get Started ⚡
4.2.0 Generic (Fluent) Client
4.2.1 Fluent Calls
4.2.2 Search
4.2.3 Create - Type
4.2.4 Read/VRead - Instance
4.2.5 Delete - Instance
4.2.6 Update - Instance
4.2.7 Patch - Instance
4.2.8 History - Server/Type/Instance
4.2.9 Transaction - Server
4.2.10 Capability Statement (metadata) - Server
4.2.11 Extended Operations
4.2.12 Built-In Operations - Process-Message
4.2.13 Additional Properties
4.2.14 ETags
4.3.0 Annotation Client
4.3.1 Configuring Encoding (JSON/XML)
4.4.0 Client Configuration
4.4.1 Performance
4.4.2 Configuring the HTTP Client
4.5.0 Client Examples
4.5.1 Transaction With Conditional Create
4.5.2 Fetch all Pages of a Bundle
4.5.3 Create Composition and Generate Document
5.0.0 Plain Server
5.0.0 REST Server Types
5.1.0 Plain Server Introduction
5.1.1 Defining Resource Providers
5.1.2 Deploying
5.1.3 Testing Using Jetty
5.1.4 Server Base URL (Web Address)
5.1.5 Capability Statement / Server Metadata
5.1.6 Controlling Response Contents / Encoding / Formatting
5.2.0 Get Started ⚡
5.3.0 Resource Providers and Plain Providers
5.3.1 Resource Providers
5.3.2 Plain Providers
5.3.3 Common Method Parameters
5.3.4 REST Exception/Error Handling
5.3.5 Server Lifecycle Methods
5.4.0 REST Operations: Overview
5.4.1 Instance Level - Read
5.4.2 Instance Level - VRead
5.4.3 Instance Level - Update
5.4.4 Instance Level - Delete
5.4.5 Instance Level - Patch
5.4.6 Type Level - Create
5.4.7 Type Level - Search
5.4.8 Type Level - Validate
5.4.9 System Level - Capabilities
5.4.10 System Level - Transaction
5.4.11 System Level - Search
5.4.12 History (Instance, Type, Server)
5.4.13 Exceptions
5.4.14 Tags
5.4.15 Handling _summary and _elements
5.4.16 Compartments
5.5.0 REST Operations: Search
5.5.1 Search with No Parameters
5.5.2 Search Parameters: String Introduction
5.5.3 Search Parameters: Token/Identifier
5.5.4 Search Parameters: Date (Simple)
5.5.5 Search Parameters: Date (Ranges)
5.5.6 Search Parameters: Quantity
5.5.7 Search Parameters: Resource Reference
5.5.8 Search Parameters: Filter
5.5.9 Chained Resource References
5.5.10 Search Parameters: Composite
5.5.11 Combining Multiple Parameters
5.5.12 Multi-Valued (AND/OR) Parameters
5.5.13 AND Relationship Query Parameters for Dates
5.5.14 Resource Includes (_include)
5.5.15 Reverse Resource Includes (_revinclude)
5.5.16 Named Queries (_query)
5.5.17 Sorting (_sort)
5.5.18 Limiting results ()
5.5.19 Paging
5.5.20 Adding Descriptions
5.6.0 REST Operations: Extended Operations
5.6.1 Type-Level Operations
5.6.2 Instance-Level Operations
5.6.3 Server-Level Operations
5.6.4 Using Search Parameter Types
5.6.5 Returning Multiple OUT Parameters
5.6.6 Accepting HTTP GET
5.6.7 Manually handing Request/Response
5.7.0 Paging Search Results
5.7.1 Bundle Providers
5.8.0 Web Testpage Overlay
5.8.1 Adding the Overlay
5.8.2 Customizing the Overlay
5.8.3 A Complete Example
5.8.4 Authentication
5.9.0 Multitenancy
5.9.1 URL Base Multitenancy
5.10.0 JAX-RS Support
5.10.1 JAX-RS Implementation specifics
5.10.2 A Complete Example
5.11.0 Customizing the CapabilityStatement
5.12.0 OpenAPI / Swagger
5.12.1 Enabling OpenAPI
5.12.2 Demonstration
6.0.0 JPA Server
6.0.0 Introduction
6.1.0 Get Started ⚡
6.2.0 Architecture
6.2.1 Schema
6.3.0 Database Support
6.3.1 Experimental Support
6.4.0 Database Schema
6.4.1 Background: Persistent IDs (PIDs)
6.4.2 HFJ_RESOURCE: Resource Master Table
6.4.3 HFJ_RES_VER: Resource Versions and Contents
6.4.4 HFJ_FORCED_ID: Client Assigned/Visible Resource IDs
6.4.5 HFJ_RES_LINK: Search Links
6.4.6 Background: Search Indexes
6.4.7 HFJ_SPIDX_DATE: Date Search Parameters
6.4.8 HFJ_SPIDX_NUMBER: Number Search Parameters
6.4.9 HFJ_SPIDX_QUANTITY: Quantity Search Parameters
6.4.10 HFJ_SPIDX_QUANTITY_NRML: Normalized Quantity Search Parameters
6.4.11 HFJ_SPIDX_STRING: String Search Parameters
6.4.12 HFJ_SPIDX_TOKEN: Token Search Parameters
6.4.13 HFJ_SPIDX_URI: URI Search Parameters
6.5.0 Configuration
6.5.1 Search Result Caching
6.5.2 Additional Information
6.5.3 Cascading Deletes
6.5.4 Version Conflicts
6.5.5 Controlling Delete with Expunge size
6.5.6 Disabling Non Resource DB History
6.5.7 Prevent Conditional Updates to Invalidate Match Criteria
6.6.0 Search
6.6.1 Limitations
6.6.2 Uplifted Refchains and Chaining Performance
6.6.3 Document and Message Search Parameters
6.6.4 Chained Sorting
6.6.5 _include and _revinclude order
6.7.0 Performance
6.7.1 History Counting
6.7.2 Bulk Loading
6.7.3 Disabling :text Indexing
6.7.4 Disable Upsert Existence Check
6.7.5 Disabling Non Resource DB History
6.8.0 Upgrade Guide
6.8.1 Oracle Support
6.8.2 Database Migration
6.9.0 Diff Operation
6.9.1 Diff Instance
6.9.2 Diff Server
6.10.0 LastN Operation
6.10.1 Functional Overview and Parameters
6.10.2 Limitations
6.10.3 Deployment and Configuration
6.11.0 Lucene/Elasticsearch Indexing
6.11.1 Experimental Extended Lucene/Elasticsearch Indexing
6.11.2 Synchronous Writes
6.12.0 Terminology
6.12.1 Versioning of Terminology
6.12.2 Terminology Schemas
6.13.0 International Patient Summary (IPS)
6.13.1 Overview
6.13.2 Generation Strategy
6.13.3 Narrative Templates
6.13.4 Credits
7.0.0 JPA Server: MDM
7.0.0 MDM Getting Started
7.1.0 MDM Rules
7.2.0 MDM Enterprise Identifiers
7.3.0 MDM Operations
7.3.1 Querying The MDM
7.4.0 MDM Technical Details
7.4.1 Automatic Linking
7.4.2 HAPI MDM Technical Details
7.5.0 MDM Search Expansion
7.6.0 MDM Customizations
7.6.1 Interceptors
8.0.0 JPA Server: Partitioning and Multitenancy
8.0.0 Partitioning and Multitenancy
8.0.1 Architecture
8.0.2 Partitioning and Resource IDs
8.0.3 Partition Interceptors
8.0.4 Complete Example: Using Request Tenants
8.0.5 Limitations
8.1.0 Partition Interceptor Examples
8.1.1 Example: Partitioning based on Tenant ID
8.1.2 Example: Partitioning based on headers
8.1.3 Example: Using Resource Contents
8.1.4 Example: Always Read All Partitions
8.1.5 Example: Smile CDR SMART Scopes
8.2.0 Partitioning Management Operations
8.2.1 Creating a Partition
8.2.2 Updating a Partition
8.2.3 Deleting a Partition
8.2.4 Reading a Partition
8.2.5 Listing all Partitions
8.3.0 Enabling Partitioning in HAPI FHIR
9.0.0 JPA Server: Batch Processing
9.0.0 Batch Introduction
10.0.0 JPA Server: HFQL (SQL) Driver
10.0.0 HFQL Module
10.0.1 Syntax
10.0.2 JDBC Driver
11.0.0 Clinical Reasoning
11.0.0 Clinical Reasoning Overview
11.1.0 CQL
11.2.0 Care Gaps
11.3.0 Measures
11.4.0 PlanDefinitions
11.5.0 Questionnaires
12.0.0 Interceptors
12.0.0 Interceptors Overview
12.0.1 Creating Interceptors
12.1.0 Client Interceptors
12.1.1 Registering Client Interceptors
12.2.0 Client Pointcuts
12.3.0 Built-In Client Interceptors
12.3.1 Logging: Logging Interceptor
12.3.2 Security: HTTP Basic Authorization
12.3.3 Security: HTTP Bearer Token Authorization
12.3.4 Misc: Add Headers to Request
12.3.5 Misc: Add Cookies to Request
12.3.6 Multitenancy: Add tenant ID to path
12.3.7 Performance: GZip Outgoing Request Bodies
12.3.8 Capture: Programmatically Capturing Request/Response Details
12.4.0 Server Interceptors
12.4.1 Example: Clearing Tags
12.5.0 Server Pointcuts
12.5.1 Storage / JPA Server Pointcuts
12.6.0 Built-In Server Interceptors
12.6.1 Logging: Logging Interceptor
12.6.2 Partitioning: Multitenant Request Partition
12.6.3 Response Customizing: Syntax Highlighting
12.6.4 Response Customizing: Exception Handling
12.6.5 Response Customizing: Evaluate FHIRPath
12.6.6 Response Customizing: Static CapabilityStatement
12.6.7 Validation: Request and Response Validation
12.6.8 Search: Allow Lenient Searching
12.6.9 Security: CORS
12.6.10 Security: Audit
12.6.11 Security: Authorization
12.6.12 Security: Binary Resources
12.6.13 Security: Consent
12.6.14 Security: Search Narrowing
12.6.15 Security: Rejecting Unsupported HTTP Verbs
12.6.16 Server: OpenAPI / Swagger Support
12.6.17 Server: Interaction Blocking
12.6.18 Subscription: Subscription Debug Log Interceptor
12.6.19 Request Pre-Processing: Override Meta.source
12.6.20 Terminology: Map Response Terminology
12.6.21 Terminology: Populate Code Display Names
12.6.22 Utility: ResponseSizeCapturingInterceptor
12.6.23 JPA Server: Allow Cascading Deletes
12.6.24 JPA Server: Disable Referential Integrity for Some Paths
12.6.25 JPA Server: Block Resource Updates Changing Patient Compartment
12.6.26 JPA Server: Retry on Version Conflicts
12.6.27 JPA Server: Validate Data Being Stored
12.6.28 Data Standardization
12.6.29 Validation: Address Validation
12.6.30 Validation: Field-Level Validation
12.7.0 7.0.0 Migration Guide
13.0.0 Security
13.0.0 Introduction
13.0.1 Authentication vs Authorization
13.0.2 Authentication Interceptors
13.1.0 Authorization Interceptor
13.1.1 Authorizing Read Operations
13.1.2 Authorizing Write Operations
13.1.3 Authorizing Sub-Operations
13.1.4 Authorizing Patch Operations
13.1.5 Authorizing Multitenant Servers
13.1.6 Authorizing Bulk Export Operations
13.1.7 Advanced Compartment authorization
13.2.0 Consent Interceptor
13.3.0 Search Narrowing Interceptor
13.3.1 Narrowing Conditional URLs
13.3.2 Constraining by ValueSet Membership
13.3.3 ResultSet Narrowing
13.4.0 CORS
13.4.1 HAPI FHIR CORS Interceptor
13.4.2 CORS Servlet Filter
13.5.0 Basic Audit Log Pattern (BALP)
13.5.1 Architecture
13.5.2 Audit Event Sink
13.5.3 Audit Context Services
13.5.4 Example
13.6.0 Binary Resource Security Interceptor
14.0.0 Validation
14.0.0 Introduction
14.1.0 Parser Error Handler
14.2.0 Instance Validator
14.2.1 FHIR Conformance Concepts
14.2.2 FHIR Instance Validator
14.2.3 Running the Validator
14.2.4 Validating Using Packages
14.2.5 Migrating to HAPI FHIR 5.x
14.3.0 Validation Support Modules
14.3.1 Built-In Validation Support Classes
14.3.2 ValidationSupportChain
14.3.3 DefaultProfileValidationSupport
14.3.4 InMemoryTerminologyServerValidationSupport
14.3.5 PrePopulatedValidationSupport
14.3.6 NpmPackageValidationSupport
14.3.7 CachingValidationSupport
14.3.8 SnapshotGeneratingValidationSupport
14.3.9 CommonCodeSystemsTerminologyService
14.3.10 RemoteTerminologyServiceValidationSupport
14.3.11 UnknownCodeSystemWarningValidationSupport
14.3.12 Recipes
14.3.13 Recipe: Supplying Custom Definitions
14.3.14 Recipe: Using a Remote Terminology Server
14.4.0 Schema/Schematron Validator
14.4.1 Preparation
14.4.2 Validating a Resource
14.5.0 Repository Validating Interceptor
14.5.1 Benefits and Limitations
14.5.2 Using the Repository Validating Interceptor
14.5.3 Rules: Require Profile Declarations
14.5.4 Rules: Require Validation to Declared Profiles
14.5.5 Rules: Disallow Specific Profiles
14.5.6 Adding Validation Outcome to HTTP Response
14.6.0 Validation Examples
15.0.0 Android
15.0.0 Android Client
15.0.1 Performance
15.0.2 Examples
16.0.0 Tools
16.0.0 Command Line Interface (CLI) Tool
16.0.1 Server (run-server)
16.0.2 Upload Example Resources (upload-examples)
16.0.3 Upload Terminology
16.0.4 Migrate Database
16.0.5 Clear Migration lock
16.0.6 Reindex Terminology
17.0.0 Contributing to HAPI FHIR
17.0.0 Hacking Guide
17.0.1 Understanding the HAPI FHIR Codebase
17.0.2 Getting the Sources
17.0.3 Building HAPI FHIR
17.0.4 Troubleshooting
17.0.5 Importing into Eclipse
18.0.0 Appendix
18.0.0 Logging
18.0.1 Configuring HAPI's Logging - SLF4j
18.0.2 Client Payload Logging
18.0.3 Server Request Logging
18.0.4 Hibernate SQL Log Filtering
18.1.0 FAQ
18.1.1 Getting Help
18.1.2 Using HAPI FHIR
18.1.3 JPA Server
18.1.4 Contributing
18.2.0 JavaDocs