Skip to content

copyleftdev/aegisclaim

Repository files navigation

AegisClaim: EDI 837 Adjudication System

AegisClaim is a fault-tolerant, containerized EDI adjudication engine built in Go and Temporal. It ingests X12 837 medical claims, validates them, calculates pricing, determines routing outcomes, and persists adjudication results.

System Architecture

The system consists of the following components:

  • API Gateway: Exposes HTTP endpoints for claim submission, status checks, and system metrics
  • Temporal Workflow Engine: Manages the claim adjudication workflow with fault tolerance and state tracking
  • EDI Processing: Parses and validates X12 837 claim files according to industry standards
  • Validation Activity: Validates incoming claims against business and format rules
  • Pricing Activity: Applies complex contract rules to determine claim pricing with line item detail
  • Routing Activity: Determines the appropriate routing decision for claims based on diagnosis, procedures, and pricing
  • Monitoring Dashboard: Web-based UI for real-time system status and claim processing metrics
  • CLI Tools: Command-line utilities for administrators to submit and monitor claims
  • Metrics Collector: Tracks system performance and claim statistics for monitoring

Project Structure

/aegisclaim
├── api-gateway/          # HTTP API for claim submission
│   ├── main.go
│   └── metrics.go        # System metrics collection
├── cmd/
│   ├── cli/              # Command-line tools
│   │   └── main.go
│   ├── dashboard/        # Dashboard server
│   │   └── main.go
│   └── worker/           # Temporal worker implementation
│       └── main.go
├── dashboard/            # Web-based monitoring UI
│   ├── index.html
│   └── logo.svg
├── docs/                 # Documentation
│   └── api.md            # API documentation
├── engine/
│   ├── workflows/        # Temporal workflows
│   │   └── claim_workflow.go
│   ├── activities/       # Temporal activities
│   │   ├── validate.go   # Claim validation logic
│   │   ├── price.go      # Pricing rules engine
│   │   └── route.go      # Claim routing decisions
│   ├── models/           # Data models
│   │   └── claim.go      # Claim data structures
│   └── utils/            # Utility functions
│       ├── edi_parser.go     # EDI segment parsing
│       ├── edi837_parser.go  # X12 837 specific parser
│       └── pricing.go        # Contract rate calculations
├── examples/             # Example files for testing
│   └── sample_837.edi    # Sample EDI 837 healthcare claim
├── internal/seeder/      # Data seeding
│   └── seeder.go
├── seed/                 # Sample seed data
│   └── 837_claims.json   # Example claims in JSON format
├── test/
│   ├── hypothesis/       # Property-based testing
│   │   └── claim_properties_test.go
│   └── integration/      # Integration tests
│       └── workflow_test.go
├── docker-compose.yml    # Container orchestration
├── Dockerfile.api        # API Gateway Dockerfile
├── Dockerfile.worker     # Worker Dockerfile
├── go.mod                # Go module dependencies
├── Makefile              # Build and run scripts
└── README.md             # Documentation

Quick Start

Prerequisites

  • Go 1.19 or later
  • Docker and Docker Compose
  • Make

Getting Started

  1. Clone the repository
  2. Run the system in development mode:
make run
  1. Access the dashboard at http://localhost:8081

  2. Submit a test claim via API:

curl -X POST -H "Content-Type: application/json" -d @seed/837_claims.json http://localhost:8080/api/claims/submit
  1. Or submit using the CLI tool:
./aegisclaim-cli submit -file seed/837_claims.json

Development Commands

  • make build: Build all components of the application
  • make deps: Download dependencies
  • make run: Run the application in development mode
  • make test: Run all tests
  • make test-integration: Run integration tests
  • make test-prop: Run property-based tests
  • make clean: Clean build artifacts
  • make seed: Initialize the database and seed data
  • make dashboard: Start the monitoring dashboard

API Endpoints

  • GET /health: System health check
  • GET /metrics: System performance metrics
  • POST /api/claims/submit: Submit a claim for processing
  • GET /api/claims/status/?workflowID={id}: Check status of a claim

Detailed API documentation is available in docs/api.md.

CLI Commands

The AegisClaim CLI provides administrative functions:

# Submit a claim from JSON or EDI file
./aegisclaim-cli submit -file claim.json
./aegisclaim-cli submit -edi claim.edi

# Check claim status
./aegisclaim-cli status -id claim-123456-1683573814

# List recent claims
./aegisclaim-cli list -limit 10

Monitoring Dashboard

The dashboard provides real-time monitoring of system health and claim processing:

  • Start the dashboard: make dashboard
  • Access at: http://localhost:8081
  • Features:
    • Claim processing metrics
    • Decision distribution charts
    • Recent claims table
    • System status indicators

Implementation Notes

  • The system implements full X12 837 EDI claim processing logic
  • Validation includes comprehensive format and business rule checking
  • Pricing applies contract rates with diagnosis code modifiers
  • Intelligent routing based on claim characteristics
  • All components follow Go engineering discipline standards
  • The project uses Temporal for workflow orchestration with automatic retries and fault tolerance
  • Property-based testing with Gopter ensures robust contract validation
  • Integration tests verify end-to-end system functionality

Deployment

The application is containerized and can be deployed to any environment that supports Docker containers:

# Build docker images
docker-compose build

# Deploy locally
docker-compose up -d

# Scale workers for higher throughput
docker-compose up -d --scale worker=3

For production deployments, consider using Kubernetes or a managed container service with appropriate resource limits and monitoring.

License

Copyright © 2025 AegisClaim. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published