18 个版本

0.8.4 2024年4月21日
0.8.3 2023年11月11日
0.7.6 2023年10月6日
0.7.0 2022年12月4日
0.3.0 2022年5月28日

#107 in 日期和时间


用于 2 crate

MIT/Apache

645KB
16K SLoC

X12-types

Latest Version

本库为 ASC X12 标准提供绑定。

支持的绑定

  • 003030
    • 998 - 设置取消
  • 004010
    • 204 - 承运人货物报价
    • 214 - 运输承运人货物运输状态信息
    • 309 - 美国海关申报单
    • 310 - 货运收据和发票(海洋)
    • 315 - 状态详情(海洋)
    • 322 - 终端操作和集装箱堆场活动
    • 404 - 铁路承运人货物运输信息
    • 810 - 发票
    • 997 - 功能确认
    • 998 - 设置取消
  • 005010
    • 834 - 福利登记和维护(005010X220A1)
    • 835 - 医疗保健索赔支付/建议
    • 837 - 医疗保健索赔
  • 005030
    • 404 - 铁路承运人货物运输信息

遗漏了什么?请提交问题。

示例代码

渲染 X12

use x12_types::v004010::*;

let x = Transmission {
    isa: ISA {
        _01: "00".to_string(),
        _02: "          ".to_string(),
        _03: "00".to_string(),
        _04: "          ".to_string(),
        _05: "ZZ".to_string(),
        _06: "SOURCE         ".to_string(),
        _07: "ZZ".to_string(),
        _08: "TARGET         ".to_string(),
        _09: "220524".to_string(),
        _10: "1120".to_string(),
        _11: "U".to_string(),
        _12: "00401".to_string(),
        _13: "000000001".to_string(),
        _14: "0".to_string(),
        _15: "P".to_string(),
        _16: ">".to_string(),
    },
    functional_group: vec![FunctionalGroup {
        gs: GS {
            _01: "QO".to_string(),
            _02: "SOURCE".to_string(),
            _03: "TARGET".to_string(),
            _04: "20220524".to_string(),
            _05: "1600".to_string(),
            _06: "1".to_string(),
            _07: "X".to_string(),
            _08: "004010".to_string(),
        },
        ...
        ge: GE {
            _01: "1".to_string(),
            _02: "1".to_string(),
        },
    }],
    iea: IEA {
        _01: "1".to_string(),
        _02: "000000001".to_string(),
    },
};
let serialized = format!("{x}");
// resulting string
//
// ISA*00*          *00*          *ZZ*SOURCE         *ZZ*TARGET         *220524*1120*U*00401*000000001*0*P*>~
// GS*QO*SOURCE*TARGET*20220524*1600*1*X*004010~
// ....
// GE*1*1~
// IEA*1*000000001~

解析 X12

use x12_types::v005010::*;

let str = r#"ISA*01*0000000000*01*0000000000*ZZ*ABCDEFGHIJKLMNO*ZZ*123456789012345*101127*1719*U*00400*000003438*0*P*>~
GS*HP*ABCCOM*01017*20110315*1005*1*X*004010X091A1~
ST*835*07504123~
BPR*H*5.75*C*NON************20110315~
...
SE*93*07504123~
GE*1*1~
IEA*1*004075123~"#;
    let (rest, obj) = Transmission::<_835>::parse(&str).unwrap();
    println!("{obj:?}");
// resulting string
//
// Transmission { isa: 
//  ISA { _01: "01", _02: "0000000000", _03: "01", _04: "0000000000", _05: "ZZ", _06: "ABCDEFGHIJKLMNO", _07: "ZZ", _08: "123456789012345", _09: "101127", _10: "1719", _11: "U", _12: "00400", _13: "000003438", _14: "0", _15: "P", _16: ">" }, 
//  functional_group: [
//    FunctionalGroup { 
//      gs: GS { _01: "HP", _02: "ABCCOM", _03: "01017", _04: "20110315", _05: "1005", _06: "1", _07: "X", _08: "004010X091A1" }, 
//      segments: [_835 { ...

更多示例位于 examples 目录中。测试已嵌入到每个版本目录中。

从 CLI 使用

我们还维护了一个 CLI 工具,以便更方便地消费 EDI。

https://crates.io/crates/edi-cli

贡献

由于 X12 相当庞大,我们只按需实现类型。因此,如果您缺少某些类型,请提交问题或合并请求。

依赖项

~6.5–9MB
~189K SLoC