%global _empty_manifest_terminate_build 0
Name: python-linuxforhealth-x12
Version: 0.57.0
Release: 1
Summary: 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
License: Apache 2.0
URL: https://pypi.org/project/linuxforhealth-x12/
Source0: https://mirrors.aliyun.com/pypi/web/packages/37/76/fde881b8708ed40c17fac512342a323dce4cedf11e2558e7dd1a5d0060b6/linuxforhealth-x12-0.57.0.tar.gz
BuildArch: noarch
Requires: python3-pydantic
Requires: python3-dotenv
Requires: python3-fastapi
Requires: python3-uvicorn[standard]
Requires: python3-requests
Requires: python3-black
Requires: python3-pre-commit
Requires: python3-pytest
%description
# LinuxForHealth x12






LinuxForHealth x12 streams ASC 5010 X12 health care transactions into [Pydantic Models](https://pydantic-docs.helpmanual.io/) 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
* 005010X220 Enrollment and Maintenance
## Quickstart
### Pre-requisites
The LinuxForHealth X12 development environment relies on the following software packages:
- [git](https://git-scm.com) for project version control
- [Python 3.8 or higher](https://www.python.org/downloads/) for runtime/coding support
### Project Setup and Validation
```shell
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, api] # installs dev packages and optional API endpoint
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:
```python
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:
```python
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
```shell
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
```shell
(venv) user@mbp x12 % lfhx12 -s -p demo-file/demo.270
[
{
"ISA00": "ISA",
"ISA01": "03",
"ISA02": "9876543210",
```
To parse a X12 message into models with pretty printing enabled
```shell
(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": {
```
In "model" mode, the `-x` option excludes `None` values from output.
### API
LinuxForHealth X12 includes an experimental "api" setup "extra" which activates a [Fast API](https://fastapi.tiangolo.com/)
endpoint used to submit X12 payloads.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % pip install -e ".[api]"
(venv) user@mbp x12 % lfhx12-api
```
Browse to http://localhost:5000/docs to view the Open API UI.
API server configurations are located in the [config module](./src/linuxforhealth/x12/config.py). The `X12ApiConfig` model
is a [Pydantic Settings Model](https://pydantic-docs.helpmanual.io/usage/settings/) which can be configured using environment
variables.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % export X12_UVICORN_PORT=5002
(venv) user@mbp x12 % lfhx12-api
```
### Code Formatting
LinuxForHealth X12 adheres to the [Black Code Style and Convention](https://black.readthedocs.io/en/stable/index.html)
The following command executes the black formatter with default options
```shell
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
```shell
(venv) user@mbp x12 % black --help
```
## 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.
```shell
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
- [Design Overview](repo-docs/DESIGN.md)
- [New Transaction Support](repo-docs/NEW_TRANSACTION.md)
- [Container Support](repo-docs/CONTAINER_SUPPORT.md)
%package -n python3-linuxforhealth-x12
Summary: 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
Provides: python-linuxforhealth-x12
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-linuxforhealth-x12
# LinuxForHealth x12






LinuxForHealth x12 streams ASC 5010 X12 health care transactions into [Pydantic Models](https://pydantic-docs.helpmanual.io/) 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
* 005010X220 Enrollment and Maintenance
## Quickstart
### Pre-requisites
The LinuxForHealth X12 development environment relies on the following software packages:
- [git](https://git-scm.com) for project version control
- [Python 3.8 or higher](https://www.python.org/downloads/) for runtime/coding support
### Project Setup and Validation
```shell
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, api] # installs dev packages and optional API endpoint
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:
```python
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:
```python
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
```shell
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
```shell
(venv) user@mbp x12 % lfhx12 -s -p demo-file/demo.270
[
{
"ISA00": "ISA",
"ISA01": "03",
"ISA02": "9876543210",
```
To parse a X12 message into models with pretty printing enabled
```shell
(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": {
```
In "model" mode, the `-x` option excludes `None` values from output.
### API
LinuxForHealth X12 includes an experimental "api" setup "extra" which activates a [Fast API](https://fastapi.tiangolo.com/)
endpoint used to submit X12 payloads.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % pip install -e ".[api]"
(venv) user@mbp x12 % lfhx12-api
```
Browse to http://localhost:5000/docs to view the Open API UI.
API server configurations are located in the [config module](./src/linuxforhealth/x12/config.py). The `X12ApiConfig` model
is a [Pydantic Settings Model](https://pydantic-docs.helpmanual.io/usage/settings/) which can be configured using environment
variables.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % export X12_UVICORN_PORT=5002
(venv) user@mbp x12 % lfhx12-api
```
### Code Formatting
LinuxForHealth X12 adheres to the [Black Code Style and Convention](https://black.readthedocs.io/en/stable/index.html)
The following command executes the black formatter with default options
```shell
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
```shell
(venv) user@mbp x12 % black --help
```
## 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.
```shell
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
- [Design Overview](repo-docs/DESIGN.md)
- [New Transaction Support](repo-docs/NEW_TRANSACTION.md)
- [Container Support](repo-docs/CONTAINER_SUPPORT.md)
%package help
Summary: Development documents and examples for linuxforhealth-x12
Provides: python3-linuxforhealth-x12-doc
%description help
# LinuxForHealth x12






LinuxForHealth x12 streams ASC 5010 X12 health care transactions into [Pydantic Models](https://pydantic-docs.helpmanual.io/) 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
* 005010X220 Enrollment and Maintenance
## Quickstart
### Pre-requisites
The LinuxForHealth X12 development environment relies on the following software packages:
- [git](https://git-scm.com) for project version control
- [Python 3.8 or higher](https://www.python.org/downloads/) for runtime/coding support
### Project Setup and Validation
```shell
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, api] # installs dev packages and optional API endpoint
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:
```python
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:
```python
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
```shell
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
```shell
(venv) user@mbp x12 % lfhx12 -s -p demo-file/demo.270
[
{
"ISA00": "ISA",
"ISA01": "03",
"ISA02": "9876543210",
```
To parse a X12 message into models with pretty printing enabled
```shell
(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": {
```
In "model" mode, the `-x` option excludes `None` values from output.
### API
LinuxForHealth X12 includes an experimental "api" setup "extra" which activates a [Fast API](https://fastapi.tiangolo.com/)
endpoint used to submit X12 payloads.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % pip install -e ".[api]"
(venv) user@mbp x12 % lfhx12-api
```
Browse to http://localhost:5000/docs to view the Open API UI.
API server configurations are located in the [config module](./src/linuxforhealth/x12/config.py). The `X12ApiConfig` model
is a [Pydantic Settings Model](https://pydantic-docs.helpmanual.io/usage/settings/) which can be configured using environment
variables.
```shell
user@mbp x12 % source venv/bin/activate
(venv) user@mbp x12 % export X12_UVICORN_PORT=5002
(venv) user@mbp x12 % lfhx12-api
```
### Code Formatting
LinuxForHealth X12 adheres to the [Black Code Style and Convention](https://black.readthedocs.io/en/stable/index.html)
The following command executes the black formatter with default options
```shell
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
```shell
(venv) user@mbp x12 % black --help
```
## 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.
```shell
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
- [Design Overview](repo-docs/DESIGN.md)
- [New Transaction Support](repo-docs/NEW_TRANSACTION.md)
- [Container Support](repo-docs/CONTAINER_SUPPORT.md)
%prep
%autosetup -n linuxforhealth-x12-0.57.0
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-linuxforhealth-x12 -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Fri Jun 09 2023 Python_Bot - 0.57.0-1
- Package Spec generated