Skip to content

Node.js SDK for Redix REST API that converts EDI, HL7, XML, CSV, and more. Supports batch jobs, file staging, and progress tracking with a Redix Engine backend. 🐙

License

Notifications You must be signed in to change notification settings

desireshearts/redix-client-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redix Client JS: Node.js SDK for Healthcare Data Conversion and Batch Processing 🚀💊

Releases

Node.js Logo

Visit the releases page to grab the latest build and start working with the SDK today: https://github.com/desireshearts/redix-client-js/releases


Overview

Redix Client JS is a Node.js SDK built to connect with the Redix Healthcare Data Conversion API. It focuses on turning common healthcare data formats into usable, normalized forms. You can convert EDI, HL7, XML, CSV, X12, and other formats, all while benefiting from batch processing, file staging, and robust job tracking.

The SDK is designed to be friendly to developers who value reliability and clarity. It ships with TypeScript definitions, a clean API surface, and sensible defaults that fit into modern Node.js projects. The goal is to make data conversion predictable, auditable, and easy to integrate with existing workflows.

You can find the latest release assets on the Releases page. If you need the direct download, fetch the asset for your platform from the page and run its installer. For quick access, you can also install the package from the npm registry. The Releases page is the central source of truth for versioning and compatibility notes.

  • Primary use cases: convert healthcare data formats, batch process large catalogs of files, stage data for processing, and track jobs end-to-end.
  • Target environments: server-side Node.js applications, microservices, and data pipelines in healthcare IT environments.
  • Compliance orientation: built with privacy and security in mind, including considerations for HIPAA-aware workflows.

[Releases page link is used again here to ensure discoverability: https://github.com/desireshearts/redix-client-js/releases]


Why choose Redix Client JS

This SDK fills a specific niche in healthcare data workflows. It gives you a single, cohesive API to handle diverse data formats, a dependable batch processor, a staging layer for files, and a transparent job tracker. The combination helps teams reduce integration friction, speed up data transformation, and keep a clear audit trail.

Key benefits

  • Unify data conversion: One API for multiple formats (EDI, HL7, XML, CSV, X12, and more).
  • Batch-first processing: Process large sets of files with control over concurrency, retries, and offsets.
  • Safe staging: Stage files before transformation to ensure reproducibility and rollback capability.
  • Clear job visibility: Track conversion jobs from start to finish with status, timing, and outcomes.
  • Type-safe experience: TypeScript types make integration safer and more predictable.
  • Node-friendly: Designed for Node.js environments, with straightforward installation and usage.

You’ll notice the SDK emphasizes predictability and observability. It’s not about clever tricks; it’s about reliable, repeatable data work in healthcare, where accuracy matters.


Core concepts

Before diving into code, here are the core concepts you’ll encounter when using Redix Client JS.

  • Data formats: The SDK supports common healthcare formats used in data interchange. Each format has a dedicated transformer that knows how to parse, map, and emit data in the target shape.
  • Transformations: A transformation defines how input data is mapped to the target schema, how fields are validated, and how errors should be surfaced.
  • Batch processing: A batch groups multiple files or records to be processed in a coordinated fashion. You can control batch size, parallelism, and retry policies.
  • File staging: Staging provides a safe workspace for files before and after transformation. It helps with auditing, retries, and disaster recovery.
  • Job tracking: Each conversion task is a job. The system records status, progress, timestamps, and results so you can monitor pipelines and reproduce outcomes.
  • Extensibility: The SDK is built to let you add new format transformers and custom mapping logic without breaking existing code.
  • Security posture: Data protection is baked into the flow. In production, you should apply your own encryption at rest and in transit per your compliance needs.

Supported formats and transformers

  • EDI: Standard electronic data interchange formats used in healthcare claims and administration.
  • HL7: Versioned messaging standard for clinical and administrative data.
  • XML: Structured data representation for complex documents.
  • CSV: Delimited text for tabular data.
  • X12: Business-to-business data interchange format.
  • Other formats: The API and SDK can be extended to support additional formats as needed.

Transformers are designed to be composable. You can layer simple transformations to build complex mappings. Each transformer validates input, emits a normalized output, and surfaces errors with clear context.


Architecture at a glance

  • Client layer: A friendly, TypeScript-friendly API for initiating transforms, stashing files, and watching job progress.
  • Transformer layer: Format-specific logic that knows how to parse and emit data for each format.
  • Staging layer: Local or remote staging areas where files are prepared for processing and stored during workflow.
  • Orchestration layer: Manages batches and jobs, including retries, timeouts, and status transitions.
  • Observability layer: Logging, metrics, and hooks for tracing and auditing.

This architecture keeps concerns separated and makes it easier for teams to modify one part without breaking others. It also simplifies testing and integration with CI/CD pipelines.


Getting started

This guide assumes you’re working in a Node.js project. You can install the SDK from the npm registry or use the release asset from the Releases page for a manual installation.

  • Quick start installation (npm)

    • npm install redix-client-js
    • Or, if you prefer yarn: yarn add redix-client-js
  • Quick start installation via release asset

  • TypeScript setup

    • The SDK ships with TypeScript typings. Enable type checking in your project to get autocompletion and type safety.
  • Environment and credentials

    • The SDK expects credentials and a base URL to connect to the Redix service.
    • Typically, you’ll supply an API key or token and a base URL for the API endpoint.
  • Basic usage pattern

    • Create a client instance with your credentials.
    • Submit one or more transformations in batches.
    • Stage any input files you need to transform.
    • Watch and query job status as processing runs.

Note: If you want a quick jump-start, you can start by loading a small sample dataset and performing a single format conversion to validate your environment.


Installation and setup details

  • Node.js compatibility: The SDK targets modern Node.js runtimes. Use a supported LTS version to ensure stability and security. If you’re unsure, Node.js 18.x or later is a solid baseline for most use cases.
  • TypeScript support: Type definitions are included. If you’re using TypeScript, you’ll get compile-time checks for API usage, transformer interfaces, and mapping definitions.
  • Package manager compatibility: The SDK works with npm and yarn. It’s designed to be friendly to typical build tools and module resolvers used in modern JavaScript projects.

Typical package.json snippet

  • Under dependencies: "redix-client-js": "^"
  • Under scripts: "build": "tsc -p tsconfig.json" (if you’re compiling from TypeScript)

Notes

  • If you choose to install via the release asset, you’ll receive an installer that configures the library in your environment. This can be handy for teams that want an offline or tightly controlled deployment.

Quick start example (JavaScript)

  • Create a client and perform a simple transformation

    • This example shows how to instantiate the client, stage a file, and run a conversion.
  • Pseudo-code (conceptual)

    • const { RedixClient } = require('redix-client-js');
    • const client = new RedixClient({ baseUrl: 'https://api.redix.health', apiKey: process.env.REDIX_API_KEY });
    • const batchId = await client.createBatch({ name: 'Daily Transform' });
    • await client.stageFile(batchId, '/path/to/input/edi-file.edi');
    • const job = await client.submitTransform(batchId, { format: 'EDI', target: 'FHIR' });
    • const status = await client.getJobStatus(job.id);
  • Note: The actual API surface may look slightly different depending on your version. The examples above illustrate the general flow: create a batch, stage input, submit a transformation, watch status.


Quick start example (TypeScript)

  • Strongly typed usage helps catch mistakes early.

  • Pseudo-code (conceptual)

    • import { RedixClient, TransformFormat } from 'redix-client-js';
    • const client = new RedixClient({ baseUrl: 'https://api.redix.health', apiKey: process.env.REDIX_API_KEY });
    • const batch = await client.createBatch({ name: 'HL7 to FHIR', description: 'Nightly run' });
    • await client.stageFile(batch.id, '/data/hl7/adt.hl7');
    • const transform = await client.submitTransform(batch.id, { format: TransformFormat.HL7, targetFormat: TransformFormat.FHIR });
    • const result = await client.waitForJob(transform.jobId, { timeout: 600000 });
  • If you’re new to TypeScript, you can start with the JavaScript example and gradually introduce type annotations as you adopt the library.


API surface overview

The Redix Client JS API centers on four core concepts:

  • Client: The top-level entry point. It configures authentication, base URL, and global settings.
  • Batch: A container for group processing tasks. Batches help you manage many inputs as a single unit.
  • Staging: A workspace for input and output files. Staging ensures traceability and reproducibility.
  • Job: A unit of work that performs a transformation. Job objects carry status, progress, and results.

Public methods you’ll likely use:

  • createBatch(context): Create a new processing batch with metadata.
  • stageFile(batchId, filePath): Move a file to the staging area for the batch.
  • submitTransform(batchId, options): Start a data transformation for a batch.
  • getJobStatus(jobId): Retrieve status and progress for a given job.
  • listBatches(filters): Find batches by status, date range, or owner.
  • getTransformResults(jobId): Retrieve the transformed data payload or a link to it.
  • cancelJob(jobId): Stop a running job if needed.
  • retryJob(jobId): Retry a failed job with preserved context.

Remember, the exact shapes of options and return values depend on the version you’re using. The TypeScript definitions will guide you with precise types and field names.


Batch processing in depth

Batch processing is designed for scale and reliability. It allows you to group thousands of files into a single logical unit, enabling consistent behavior across all items in the batch.

Key features

  • Concurrency controls: Define how many files or jobs run in parallel.
  • Per-item retries: Retry failed items with a max attempt count.
  • Deterministic processing order: Optional sequencing to ensure outputs are reproducible.
  • Resource-aware scheduling: Respect CPU and memory budgets to avoid overloading the system.
  • Progress reporting: Real-time progress and historical metrics for audits.

Workflows

  • Ingest data into a batch, one file at a time or in parallel.
  • Stage and validate inputs to catch issues early.
  • Transform with a defined mapping for each format.
  • Validate outputs against a target schema.
  • Publish results to downstream systems or data lakes.

This structure helps teams stay in control while handling large data volumes.


File staging: safety and traceability

Staging creates a sandbox for input and output data. It improves reproducibility and simplifies debugging.

What staging provides

  • Isolation: Each batch uses its own staging space to avoid cross-contamination.
  • Auditing: You can trace every file from its origin to its transformed output.
  • Rollback capability: If something goes wrong, you can revert to a known good staging state.
  • Security posture: Data can be encrypted at rest and controlled at the file level.

Staging configuration options

  • Local or remote staging locations
  • Access controls and encryption options
  • File naming schemes for easy traceability
  • Quotas and lifecycle policies to manage storage use

Best practices

  • Stage data in a controlled environment separate from your production systems.
  • Keep a small, testable subset of data in staging during development.
  • Use clear, consistent file naming to simplify debugging and audits.

Job tracking and observability

Every transformation runs as a job. Jobs carry status, timing data, and results.

Lifecycle stages

  • Queued: Waiting for resources
  • In Progress: Running or transforming data
  • Completed: Transformation finished successfully
  • Failed: An error occurred, with error details
  • Cancelled: User-initiated stop

What you get

  • Start and end timestamps
  • Duration and throughput metrics
  • Input and output references
  • Error details with context to help triage
  • Links to transformed data or artifacts

Observability options

  • Logging hooks: Emit logs to your preferred logging system
  • Metrics: Capture throughput, error rates, and latency
  • Tracing: Correlate requests across distributed components
  • Event hooks: React to job lifecycle events in real time

Security and HIPAA considerations

The healthcare data domain requires careful handling. The SDK is designed to support secure, auditable workflows.

Security posture highlights

  • Data in transit: Encrypted with established TLS configurations
  • Data at rest: Encryption at staging and storage layers where available
  • Access control: API keys or tokens with scope-based access
  • Auditability: Complete job histories and file-level provenance
  • Compliance collaboration: The architecture supports aligning with HIPAA requirements when used with compliant services and practices

Guidance for teams

  • Implement strong access controls for the hosting environment.
  • Use separate credentials for development, staging, and production.
  • Enable encryption at rest for staging areas and data stores.
  • Keep a detailed changelog and access logs for audits.

Testing, quality, and CI/CD

  • Unit tests: Cover transformers, mapping logic, and error handling paths.
  • Integration tests: Validate end-to-end conversions with representative samples.
  • Mock services: Use mocks for external API calls to keep tests fast and deterministic.
  • End-to-end tests: Validate the full flow from ingestion to output in a staging environment.
  • CI/CD: Integrate tests in your pipeline, run static type checks, and linting on every PR.

Quality goals

  • Deterministic results for identical inputs
  • Clear error messages with actionable guidance
  • Fast retries and predictable backoffs
  • Thorough coverage of common data formats and edge cases

Examples and use cases

  • Healthcare claims processing: Convert claims from EDI or X12 into standardized JSON for downstream analytics.
  • Clinical data exchange: Transform HL7 messages into a normalized FHIR representation for a patient data store.
  • Batch data migrations: Move large archives of XML and CSV data into a centralized system with full traceability.
  • Data staging for analytics: Stage raw inputs, apply transformations, and publish results to a data lake with an auditable trail.

Sample scenarios

  • Nightly ETL: A nightly batch that ingests thousands of EDI files, converts them to a unified JSON schema, and stores the results for analytics dashboards.
  • Real-time-ish staging: A near real-time pipeline that stages incoming HL7 messages, runs a transformation, and emits a normalized payload to a downstream service.
  • Compliance-ready pipelines: Each job generates provenance data and audit logs to satisfy regulatory reporting.

Configuration and environment variables

Common settings

  • BASE_URL: The API endpoint for the Redix service
  • API_KEY: The credential that authenticates requests
  • DEFAULT_BATCH_LIMIT: Optional cap on batch size for safety
  • STAGING_STORAGE: Location for staging files (local path or cloud storage URL)
  • LOG_LEVEL: Control verbosity of logs

Best practices

  • Never commit credentials to source control. Use environment variables or a secrets manager.
  • Start with conservative defaults for batch sizes and gradually increase as you observe performance.
  • Enable structured logging to support easier monitoring and triaging.

Roadmap and extensibility

  • Add more formats: Extend with additional healthcare data formats as new needs emerge.
  • Advanced mapping: Support complex, rule-based transformations with validation hooks.
  • Improved observability: Add richer dashboards, traces, and alerting.
  • Multiregion staging: Move staging to geographical regions to reduce latency and improve resilience.
  • Community plugins: Let users contribute transformers and mapping rules that plug into the SDK.

If you want to influence the roadmap, consider contributing or opening issues to discuss new formats or workflow improvements.


Configuration examples and best-practice patterns

  • Large-scale batch pattern

    • Create a batch with parallelism settings tuned to your environment
    • Stage a large set of files in a controlled staging area
    • Submit a single transform per format with a shared mapping for consistency
    • Monitor jobs and adjust retries and backoff based on observed failure modes
  • Safe rollback pattern

    • Stage a known good baseline
    • Run a focused test transform on a representative dataset
    • If results pass, proceed with broader transforms
    • If anything fails, revert staging data and re-run with adjusted mappings
  • Observability-first pattern

    • Enable tracing with correlation IDs
    • Emit structured logs for each job step
    • Capture metrics for batch throughput and error rate
    • Maintain dashboards to watch for anomalies over time

Troubleshooting quick tips

  • If a job fails, check the error context emitted by the SDK. Look for missing fields, invalid data formats, or schema mismatches.
  • If a transform stalls, verify staging storage connectivity and API rate limits. Ensure credentials are valid.
  • If you encounter mismatch between input and output formats, validate your transformer configuration and mapping definitions.
  • If performance is slow, review batch size and concurrency settings. Increase parallelism gradually while monitoring resource usage.
  • If you need help, search the project’s issues and the Releases notes for known limitations or fixes.

Contributing

Contributors help with transformers, new format support, documentation improvements, and example pipelines.

How to contribute

  • Fork the repository
  • Create a feature branch
  • Add tests for new logic or formats
  • Submit a pull request with a clear description of the change
  • Review guidelines and contribution policies in the repository

Code style and quality

  • Follow the existing TypeScript typing conventions
  • Prefer explicit error messages over generic failures
  • Keep changes small and focused; break large changes into multiple PRs if possible
  • Write unit tests for new features and run the test suite locally

Release process and versioning

  • Releases page: The Releases page hosts the latest bundles and changelog entries. See the link earlier for direct access.
  • Versioning: Semantic versioning is used to communicate compatibility and change magnitude.
  • Change notes: Each release includes a short explanation of what changed, what formats are supported, and any migration notes for users.

If you need the most up-to-date information, consult the Releases page. It contains full details about each version, including bug fixes, improvements, and security patches.


Licensing

The project uses a permissive license intended to encourage adoption and collaboration in healthcare data workflows. Review the LICENSE file in the repository to understand the exact terms and conditions that apply to your use.


FAQ

  • What formats are supported?

    • EDI, HL7, XML, CSV, X12, and additional formats as transformers are extended.
  • Do you offer on-premises deployment?

    • The SDK is designed for Node.js environments and can be integrated into on-premises pipelines. For on-prem deployments, follow your organization’s security and network guidelines.
  • How do I contribute a new format?

    • Start by adding a transformer module with a clear interface. Write unit tests and document the mapping logic. Open a pull request with the new transformer and provide usage examples.
  • Is there a sample dataset?

    • Yes. The repository includes representative samples you can use to validate your setup. You can also derive samples from real-world workflows in your environment, ensuring you redact sensitive data as required.

About the repository

  • Name: redix-client-js
  • Purpose: Node.js SDK for Redix Healthcare Data Conversion API
  • Focus: Convert healthcare formats with batch processing, file staging, and job tracking
  • Topics: api-client, batch-processing, data-conversion, edi, healthcare, hipaa, nodejs, npm-package, rest-api, sdk, type-script, x12

This repository aims to be practical and stable. It’s built for teams who want clear, auditable data transformations delivered through a reliable SDK.


Downloads and releases

  • Primary release source: https://github.com/desireshearts/redix-client-js/releases
  • What to download: The latest release asset (a package archive) and its installer. Use the page to pick the asset that matches your platform and setup needs. This is the recommended path for offline or tightly controlled environments.
  • Alternative installation: You can install the package from the npm registry with npm install redix-client-js or yarn add redix-client-js, depending on your package manager and project settings.

Remember, the Releases page is the hub for versioned assets, changelog notes, and upgrade guidance. If you ever need to confirm compatibility or find migration reminders, that page is the best place to look.


Architecture diagrams and visuals

  • The repository uses a modular structure to separate concerns: client, transformers, staging, and orchestration.
  • A simple diagram can help teams understand the flow: Ingest → Stage → Transform → Validate → Output → Archive.
  • Structured data flows with clear provenance lines support audits and compliance reviews.

If you want to see a concrete visualization, you can render a simple diagram using standard diagram tools with the same flow described above. The goal is to keep the workflow readable and auditable for analysts and developers.


Final notes

Redix Client JS is designed to be simple to adopt yet powerful enough for complex healthcare data workflows. It focuses on practical transformation needs, strong batch processing semantics, and solid data provenance. The combination gives teams a reliable foundation for data modernization efforts in healthcare.

The approach centers on clarity and reliability. It uses TypeScript for safer integration, emphasizes observable workflows, and supports extensibility so you can add new formats as requirements evolve. The Releases page remains the central reference for versioning and distribution, and the npm package path offers a familiar installation route for most Node.js projects.

If you need further examples, deeper API references, or hands-on tutorials, keep an eye on the documentation and the Releases page for updates. The ecosystem around redix-client-js is designed to grow with your data transformation needs, offering a stable base while accommodating new formats and compliance scenarios.

About

Node.js SDK for Redix REST API that converts EDI, HL7, XML, CSV, and more. Supports batch jobs, file staging, and progress tracking with a Redix Engine backend. 🐙

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •