Skip to main content

LinuxForHealth x12 streams ASC 5010 X12 health care transactions into Pydantic Models for a pleasant pythonic parsing experience! Integration options include REST endpoints, CLI (command line), or direct access using the Python SDK

Project description

LinuxForHealth x12

GitHub License Supported Versions
Template CI
GitHub Issues GitHub Forks GitHub Stars

LinuxForHealth x12 streams ASC 5010 X12 health care transactions into Pydantic Models for a pleasant pythonic parsing experience! Integration options include REST endpoints, CLI (command line), or direct access using the Python SDK.

Supported formats include:

  • 005010X212 Claim Status
  • 005010X221 Claim Payment
  • 005010X222 Professional Claim
  • 05010X223 Institutional Claim
  • 005010X279 Eligibility

Future formats include:

  • 005010X217 Services Review
  • 005010X218 Premium Payment
  • 005010X220 Enrollment and Maintenance
  • 005010X224 Dental Claim

This project is currently under construction. Please refer to the LinuxForHealth X12 Issue Board to review current issues and progress.

Quickstart

Pre-requisites

The LinuxForHealth X12 development environment relies on the following software packages:

Project Setup and Validation

pip install --upgrade pip setuptools

git clone https://github.com/LinuxForHealth/x12
cd x12

python3 -m venv venv && source venv/bin/activate && pip install --upgrade pip setuptools 
pip install -e .[dev]
pytest

SDK

The X12 SDK provides an io package which supports streaming X12 segments or transaction models. Segment streaming parses each segment into a list containing the fields. Model streaming validates the X12 payload, and returns one or transaction models from the X12 message.

To stream segments, create a X12SegmentReader instance:

from linuxforhealth.x12.io import X12SegmentReader

with X12SegmentReader("/home/edi/270.x12") as r:
    # return the segment name and field list
    for segment_name, segment_fields in r.segments():
        print(segment_name)
        print(segment_fields)

To stream models, create a X12ModelReader instance:

from linuxforhealth.x12.io import X12ModelReader

with X12ModelReader("/home/edi/270.x12") as r:
    for model in r.models():
        # common model attributes include "header" and "footer"
        print(model.header)
        print(model.footer)
        
        # to convert back to X12
        model.x12()

CLI

The X12 CLI parses a X12 input file and returns either a list of X12 segments, or a list of X12 models based on the provided options.

To view help information

user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % lfhx12 --help
usage: LinuxForHealth X12 [-h] [-s | -m] [-x] [-p] file

The LinuxForHealth X12 CLI parses and validates X12 messages.
Messages are returned in JSON format in either a segment or transactional format.

positional arguments:
  file           The path to a ASC X12 file

optional arguments:
  -h, --help     show this help message and exit
  -s, --segment  Returns X12 segments
  -m, --model    Returns X12 models
  -x, --exclude  Exclude fields set to None in model output
  -p, --pretty   Pretty print output

To parse a X12 message into segments with pretty printing enabled

(venv) user@mbp x12 % lfhx12 -s -p demo-file/demo.270
[
    {
        "ISA00": "ISA",
        "ISA01": "03",
        "ISA02": "9876543210",
<etc, etc>

To parse a X12 message into models with pretty printing enabled

(venv) user@mbp x12 % lfhx12 -m -p demo-file/demo.270
[
    {
        "header": {
            "st_segment": {
                "delimiters": {
                    "element_separator": "*",
                    "repetition_separator": "^",
                    "segment_terminator": "~",
                    "component_separator": ":"
                },
                "segment_name": "ST",
                "transaction_set_identifier_code": "270",
                "transaction_set_control_number": "0001",
                "implementation_convention_reference": "005010X279A1"
            },
            "bht_segment": {
              <etc, etc>

In "model" mode, the -x option excludes None values from output.

Code Formatting

LinuxForHealth X12 adheres to the Black Code Style and Convention

The following command executes the black formatter with default options

user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % black ./src

Use the --help flag to view all available options for the black code formatter

(venv) user@mbp x12 % black --help

REST API

Under Development

Building The Project

LinuxForHealth X12 is aligned, to a degree, with the PEP-517 standard. setup.cfg stores build metadata/configuration. pyproject.toml contains the build toolchain specification and black formatter configurations.

The commands below creates a source and wheel distribution within a clean build environment.

python3 -m venv build-venv && source build-venv/bin/activate && pip install --upgrade pip setuptools build wheel twine
python3 -m build --no-isolation

Additional Resources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

linuxforhealth-x12-0.54.1.tar.gz (108.0 kB view details)

Uploaded Source

Built Distribution

linuxforhealth_x12-0.54.1-py3-none-any.whl (129.7 kB view details)

Uploaded Python 3

File details

Details for the file linuxforhealth-x12-0.54.1.tar.gz.

File metadata

  • Download URL: linuxforhealth-x12-0.54.1.tar.gz
  • Upload date:
  • Size: 108.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for linuxforhealth-x12-0.54.1.tar.gz
Algorithm Hash digest
SHA256 2ae15252b6e50e8e4d1cf3067f290e7656b3fd718c4960f60a9395f30477467a
MD5 588ddef7e8683ecb12e251dd4f0900ab
BLAKE2b-256 5a1542ec15f79a4b8bcca126fd1e652aef917fb6c40c4290fefc6c22d98f4e52

See more details on using hashes here.

File details

Details for the file linuxforhealth_x12-0.54.1-py3-none-any.whl.

File metadata

  • Download URL: linuxforhealth_x12-0.54.1-py3-none-any.whl
  • Upload date:
  • Size: 129.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for linuxforhealth_x12-0.54.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3f578c34d8e868a2ca0843fe109d9e4bff4ff24b48bfde9051dd49ebea9f3a30
MD5 e71bc617ee5c8932ddec5687ba4674dc
BLAKE2b-256 f784c8bacd022b3f00ef60b8e2fe4e0141cc21db703a16ffedfdbc3287cddf4f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page