# Pathling

> Tools for FHIR analytics, built on Apache Spark. Includes Python, R, Scala and Java libraries, plus a FHIR server.


## roadmap

We are continually adding new features to the various different components of Pathling.

- [Roadmap](/roadmap.md): We are continually adding new features to the various different components of Pathling.

## docs

Pathling is a set of tools that make it easier to use FHIR and clinical terminology within health data analytics.

- [Overview](/docs.md): Pathling is a set of tools that make it easier to use FHIR and clinical terminology within health data analytics.

### fhirpath

Pathling implements FHIRPath functionality to aid in querying and constructing views over FHIR data.

- [FHIRPath](/docs/fhirpath.md): Pathling implements FHIRPath functionality to aid in querying and constructing views over FHIR data.
- [Extension functions](/docs/fhirpath/extension-functions.md): Extension functions and data types implemented in Pathling in addition to the standard FHIRPath and FHIR specifications.
- [FHIR-specific functions](/docs/fhirpath/fhir-functions.md): FHIR-specific functions defined in the FHIR specification as additional FHIRPath functions for use with FHIR data.

### libraries

Pathling provides a set of libraries that provide assistance with using FHIR and terminology services from Apache Spark applications and data science workflows.

- [Libraries](/docs/libraries.md): Pathling provides a set of libraries that provide assistance with using FHIR and terminology services from Apache Spark applications and data science workflows.
- [Adding display terms to codes](/docs/libraries/examples/display-terms.md): Tutorial demonstrating how to add human-readable display terms to medical codes using Pathling's terminology functions.
- [FHIR server synchronisation](/docs/libraries/examples/fhir-server-sync.md): Examples of synchronising your analytic data store with a FHIR server.
- [Grouping and analysing SNOMED CT data](/docs/libraries/examples/grouping-snomed.md): Tutorial demonstrating how to group and analyse SNOMED CT data using Python with the Pathling library and a terminology server.
- [Querying MIMIC-IV data](/docs/libraries/examples/mimic-iv.md): Example of running queries over the MIMIC-IV on FHIR dataset using the Pathling libraries.
- [Prostate cancer risk factors](/docs/libraries/examples/prostate-cancer.md): Example of running SQL on FHIR queries using the Pathling libraries.
- [Recursive traversal with repeat](/docs/libraries/examples/questionnaire-repeat.md): Example of using the repeat directive to flatten nested QuestionnaireResponse items.
- [Streaming queries](/docs/libraries/examples/streaming.md): Examples of running streaming queries over FHIR data using the Pathling libraries.
- [FHIRPath](/docs/libraries/fhirpath.md): The Pathling library provides functions for converting FHIRPath expressions into Spark Columns for filtering and extracting data.
- [Installation](/docs/libraries/installation.md): Instructions for installing the Pathling libraries for Python, R, Scala, and Java.
- [Databricks installation](/docs/libraries/installation/databricks.md): Instructions for installing the Pathling library on a Databricks cluster.
- [Pre-release versions](/docs/libraries/installation/prerelease.md): Instructions for using a pre-release version of the Pathling library.
- [Spark configuration](/docs/libraries/installation/spark.md): Instructions for configuring Apache Spark to use the Pathling library.
- [Windows installation](/docs/libraries/installation/windows.md): Instructions for installing the Pathling libraries on Windows.
- [Data in and out](/docs/libraries/io.md): The Pathling library can read and write data in a variety of different formats.
- [FHIR encoders](/docs/libraries/io/encoders.md): The Pathling library can be used to transform FHIR Bundles or NDJSON into Spark data sets.
- [Parquet specification](/docs/libraries/io/schema.md): A scheme for representing FHIR resources within a Parquet schema.
- [Running SQL on FHIR views](/docs/libraries/running-queries.md): The Pathling library can be used to query datasets of FHIR resources using SQL on FHIR views. This is useful for creating tabular views of FHIR data for use in analytic tools.
- [Search](/docs/libraries/search.md): The Pathling library provides functions for converting FHIR search expressions into Spark Columns for filtering resources.
- [Terminology functions](/docs/libraries/terminology.md): The Pathling library provides a set of functions for querying a FHIR terminology server from within your queries and transformations.

### server

A FHIR R4 analytics server implementing SQL on FHIR and Bulk Data Access.

- [Server](/docs/server.md): A FHIR R4 analytics server implementing SQL on FHIR and Bulk Data Access.
- [Admin UI](/docs/server/admin-ui.md): The admin UI provides a web interface for managing Pathling Server.
- [Authorization](/docs/server/authorization.md): Pathling can perform the role of a resource server within the OpenID Connect framework.
- [Caching](/docs/server/caching.md): Pathling implements ETag-based cache validation, which enables clients to skip processing of queries when the underlying data has not changed.
- [Configuration](/docs/server/configuration.md): Configuration options for the Pathling server.
- [Kubernetes](/docs/server/deployment/kubernetes.md): Instructions for deploying Pathling server on Kubernetes using Helm.
- [Synchronization](/docs/server/deployment/synchronization.md): Keep Pathling in sync with a source FHIR server using scheduled jobs and the $import-pnp operation.
- [Getting started](/docs/server/getting-started.md): Quick start guide for running Pathling Server with Docker.
- [Batch](/docs/server/operations/batch.md): The batch operation allows you to perform multiple create, update, and delete operations in a single request.
- [Bulk submit](/docs/server/operations/bulk-submit.md): The bulk submit operation allows external systems to push FHIR data to the server using a staged submission workflow.
- [Create, read, update, and delete](/docs/server/operations/crud.md): Pathling implements the create, read, update, and delete operations from the FHIR REST API.
- [Export](/docs/server/operations/export.md): The export operation allows FHIR data to be exported from the server in bulk using the FHIR Bulk Data Access specification.
- [Import](/docs/server/operations/import.md): The import operation allows FHIR data to be imported into the server from external sources such as S3, HDFS, or local filesystem.
- [Import (ping and pull)](/docs/server/operations/import-pnp.md): The import-pnp operation allows bulk data to be imported via a ping and pull workflow, where the server fetches data from a remote FHIR bulk export endpoint.
- [Search](/docs/server/operations/search.md): Pathling supports FHIRPath-based search, allowing you to retrieve FHIR resources filtered by one or more FHIRPath expressions.
- [Export view](/docs/server/operations/view-export.md): The view export operation executes ViewDefinitions against FHIR data and exports the results to files in NDJSON, CSV, or Parquet format.
- [Run view](/docs/server/operations/view-run.md): The view run operation executes a ViewDefinition against FHIR data and returns tabular results in NDJSON or CSV format.
