Skip to content

Releases: FastChickensHR/edi

v0.1.0-alpha

28 Mar 21:01
Compare
Choose a tag to compare
v0.1.0-alpha Pre-release
Pre-release

Minor Release

We've advanced to a minor release as the core structure for EDI 834 files has been established. Currently, only the ISA Segment meets our design standards, but the fundamental architecture is now in place.

What's Changed

Tests

We are up to 1,366 tests. Most of those are around ensuring the Enumerations are properly mapping values. These tests are still not focused on catching issues, but are solely focused on preventing regressions as we work. The number looks good, but we also want to be transparent that the enumerations in this release greatly inflate that number and will continue to do so. It's not a bad thing, but the goal here is functional software and not lip service to unit tests.

EDI Segments vs 834

So far we have been building to get something out there and there's been a lot of mixing and not a very clear seperation of what is EDI and what is 834 specific. The ISASegment in this release shows the seperation and movement.

We moved defaults out from the ISA and allowed it to validate every field.
Previous defaults have been added to InterchangeControlHeader and it's tests have been updated to not overlap with the ISASegments

Enumerations

Enumerations have been formalized with a consistent structure, as demonstrated below:

public enum ConfidentialityCode implements EdiCodeEnum {
    UNRESTRICTED("U", "Unrestricted"),
    RESTRICTED("R", "Restricted"),
    CONFIDENTIAL("C", "Confidential"),
    VERY_RESTRICTED("V", "Very Restricted"),
    NORMAL("N", "Normal"),
    LOW("L", "Low"),
    MEDIUM("M", "Medium"),
    HIGH("H", "High");

Each enumeration contains both a code and description, complemented by a lookup mechanism:

private final String code;
private final String description;
private static final EdiEnumLookup<ConfidentialityCode> LOOKUP;

static {
    // Include additional synonyms and related terms
    LOOKUP = new EdiEnumLookup<>(
            ConfidentialityCode.class,
            "Confidentiality Code",
            Map.ofEntries(
                    Map.entry("open", UNRESTRICTED),
                    Map.entry("standard", NORMAL)
            )
    );
}

The lookup pattern enhances API usability by providing flexible input handling. When fromString() is called on these enumerations, the enumeration normalizes codes, descriptions, and synonyms to return the appropriate value or a meaningful error.
For more complex enumerations like COBRAQualifyingEventCode, this approach scales effectively:

static {
    LOOKUP = new EdiEnumLookup<>(
            COBRAQualifyingEventCode.class,
            "COBRA Qualifying Event Code",
            Map.ofEntries(
                    Map.entry("fired", TERMINATION_OF_EMPLOYMENT),
                    Map.entry("terminated", TERMINATION_OF_EMPLOYMENT),
                    Map.entry("quit", TERMINATION_OF_EMPLOYMENT),
                    Map.entry("resignation", TERMINATION_OF_EMPLOYMENT)
            )
    );
}

This design combines the flexibility of string handling with the type safety of enumerations. Validation exceptions are thrown at runtime, which we consider appropriate for this implementation.

How this works in Action

The setters for classes and builders will accept strings and then they will pass this string through their enumeration.

        public T setIsa01(String value) {
            this.isa01 = AuthorizationInformationQualifier.fromString(value);
            return self();
        }

Pull Requests

Full Changelog: v0.0.3-alpha...v0.1.0-alpha

v0.0.3-alpha

27 Mar 22:32
Compare
Choose a tag to compare
v0.0.3-alpha Pre-release
Pre-release

What's Changed

Major Features

  • Implemented standard enumeration logic for value mapping
  • Added a TON of tests related to the enumerations we are up to 1,163 tests. Most of these are related to making sure the enumeration mapping works properly. This will prevent regressions and isn't going to prementively catch any bugs.
  • Added fromString() method to all enumerations that validates input against predefined lists and returns the appropriate enumeration
  • Established a consistent pattern where enums are contained within their class and builders accept string inputs to call fromString() on the enum
  • This approach provides clear feedback to users while allowing flexibility in code passing

Bug Fixes

  • Resolved issue with Loop2000 generation
  • Note: Comprehensive tests for x834 document and Member functions are planned for beta release rather than current alpha stage

Full Changelog: v0.0.2-alpha...v0.0.3-alpha

v0.0.2-alpha

25 Mar 20:01
Compare
Choose a tag to compare
v0.0.2-alpha Pre-release
Pre-release

What's Changed

Still in alpha and needs a lot of minor movement, but this release does represent an "834" file now. Figuring out how we want to handle mapping of data and validations will be the focus of the next release.

Major Features

  • Complete Loop 2000 Implementation: Added support for Loop 2000 member-level data including:

    • Member demographic information segments
    • Member-level reference segments
    • Date segments with improved formatting and validation
    • Support for member-level dates and timing information
  • Enhanced Header Interface: Improved the header creation process with a more intuitive builder pattern for easier configuration and validation.

  • Trailer Implementation: Added trailer segment support:

    • Transaction Set Trailer (SE)
    • Functional Group Trailer (GE)
    • Interchange Control Trailer (IEA)
    • Unified trailer builder for simplified creation
  • Loop 1000 Enhancements: Refactored Loop 1000 components for better organization and expanded functionality.

Other Improvements

  • Fixed issues with DTP segments to ensure date formatting and validation
  • Enhanced validation across all components for more reliable EDI file generation

Pull requests

Full Changelog: v0.0.1-alpha...v0.0.2-alpha

v0.0.1-alpha

14 Mar 17:18
Compare
Choose a tag to compare
v0.0.1-alpha Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: https://github.com/FastChickensHR/edi/commits/v0.0.1-alpha