FhirSheets is a command-line tool that reads an Excel file in FHIR cohort format and generates FHIR bundle JSON files from it. Each row in the template Excel file is used to create an individual JSON file, outputting them to a specified folder.
Project description
FHIRSheets
FhirSheets is a command-line tool that reads an Excel file in FHIR cohort format and generates FHIR bundle JSON files from it. Each row in the template Excel file is used to create an individual JSON file, outputting them to a specified folder.
Table of Contents
Features
- Reads an Excel file following the FHIR cohort import template.
- Converts each row in the Excel file to a FHIR bundle JSON file.
- Exports generated JSON files to a specified output folder.
Requirements
- Python 3.x
- Required Python packages (see
requirements.txt)
Installation
- Clone this repository:
git clone https://github.com/CDCgov/synthetic-data.git cd fhir-python-cohort-generation
- Install the required packages:
pip install -r requirements.txt
Or use poetrypoetry build
Usage
-
Fill Out the Template:
- Open the template file
src/resources/Fhir_Cohort_Import_Template.xlsx. - Fill out each row with the relevant data.
- Open the template file
-
Run the Tool:
- Use the
python -m src.cli.fhirsheetsmodule script with the required arguments:--input-file: The path to the input Excel file.--output-folder: The path to the output folder where the JSON files will be saved.
python -m src.fhir_sheets.cli.main --input_file src/resources/Fhir_Cohort_Import_Template.xlsx --output_folder /path/to/output/folder
- Use the
-
The tool will generate one FHIR bundle JSON file for each row defined in the template.
Example
python -m src.fhir_sheets.cli.main --input_file src/resources/Fhir_Cohort_Import_Template.xlsx --output_folder ./output_bundles
In this example, each row in the Fhir_Cohort_Import_Template.xlsx file will be processed, and a corresponding JSON file will be generated in the output_bundles folder.
Configuration
FHIRSheets supports configuration through JSON files or command-line arguments to customize behavior, including default resource references.
Using a Configuration File
Create a JSON configuration file (e.g., my_config.json):
{
"enable_default_resource_links": true,
"default_resource_references": [
["observation", "patient", "subject"],
["procedure", "patient", "subject"]
]
}
Then use it with the CLI:
python -m src.fhir_sheets.cli.main --input_file input.xlsx --output_folder output/ --config_file my_config.json
Configuration Options
enable_default_resource_links(boolean, default:true): Enable/disable automatic default resource linkingdefault_resource_references(array): Customize which default resource references to create automaticallyarray_type_references(array): Specify which references should be arrayspreview_mode(boolean, default:false): Generate resources in preview modemedications_as_reference(boolean, default:false): Convert medicationCodeableConcept to medication resourcesbuild_empty_resources(boolean, default:false): Build resources even when no data exists
Command-Line Arguments
You can also pass configuration options directly:
python -m src.fhir_sheets.cli.main \
--input_file input.xlsx \
--output_folder output/ \
--enable_default_resource_links true \
--build_empty_resources false
Or use the convenient flag to disable default resource links:
python -m src.fhir_sheets.cli.main \
--input_file input.xlsx \
--output_folder output/ \
--no-default-links
Note: For advanced configuration like customizing default_resource_references lists, use a JSON config file.
Example Configuration File
See config_example.json for a complete example with all default values and available options.
Programmatic Usage
When using FHIRSheets as a Python library:
from fhir_sheets.core.config.FhirSheetsConfiguration import FhirSheetsConfiguration
from fhir_sheets.core import conversion, read_input
import json
# Load configuration from JSON file
with open('my_config.json', 'r') as f:
config_dict = json.load(f)
config = FhirSheetsConfiguration(config_dict)
# Use the configuration
resource_defs, resource_links, cohort_data = read_input.read_xlsx_and_process("input.xlsx")
bundle = conversion.create_transaction_bundle(
resource_defs,
resource_links,
cohort_data,
index=0,
config=config
)
License
This project is licensed under the MIT License. See the LICENSE file for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fhir_sheets-2.5.2.tar.gz.
File metadata
- Download URL: fhir_sheets-2.5.2.tar.gz
- Upload date:
- Size: 25.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b672ac2b09012d698396944d60c2359e5a655c4f2cbebdb0a923df9ab895f196
|
|
| MD5 |
9baf4bd6861e52f4a6d9bc58ad79a6c6
|
|
| BLAKE2b-256 |
55eeb5d97c17ddc35a45b5935769dc49ff6da7474a348d6fe351feffe1f9d9d6
|
File details
Details for the file fhir_sheets-2.5.2-py3-none-any.whl.
File metadata
- Download URL: fhir_sheets-2.5.2-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
758ea91214368ce25a04f0c31fa3f46c58f3531ba908d29b9abd5c9ff21b4359
|
|
| MD5 |
e8aa6c4e5333ae86cfb316446e79cf4e
|
|
| BLAKE2b-256 |
50b37e84b97ba1a19b089413f8968953fdf017348b403aa3c12edc658d4f764a
|