/*
* $Id$
*
* Authors:
* Jeff Buchbinder <jeff@freemedsoftware.org>
*
* REMITT Electronic Medical Information Translation and Transmission
* Copyright (C) 1999-2014 FreeMED Software Foundation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.remitt.parser;
import java.util.List;
import org.apache.log4j.Logger;
import org.pb.x12.Segment;
import org.remitt.prototype.ParserInterface;
import org.remitt.prototype.SegmentComparator;
import org.remitt.prototype.X12Message;
/**
* Handle X12 271 eligibility response messages.
*
* @author jeff@freemedsoftware.org
*/
public class X12Message271 extends X12Message implements ParserInterface {
static final Logger log = Logger.getLogger(X12Message271.class);
protected void parseSegments() {
if (getX12message() == null) {
log.error("X12 message not set");
return;
}
debug.println("Begin parsing 271");
position = 1;
debug.println("Extracting transaction header");
List<Segment> header = extractLoop(new SegmentComparator[] {
new SegmentComparator("ISA"), new SegmentComparator("GS"),
new SegmentComparator("ST"), new SegmentComparator("BHT") });
debug.println("***** Loop 2000A *****");
List<Segment> loop2000a = extractLoop(new SegmentComparator[] {
new SegmentComparator("HL"), new SegmentComparator("AAA"), });
debug.println("***** Loop 2100A *****");
List<Segment> loop2100a = extractLoop(new SegmentComparator[] {
new SegmentComparator("NM1"), new SegmentComparator("PER"),
new SegmentComparator("AAA") });
debug.println("***** Loop 2100B *****");
List<Segment> loop2100b = extractLoop(new SegmentComparator[] {
new SegmentComparator("HL"), new SegmentComparator("NM1"),
new SegmentComparator("REF"), new SegmentComparator("N3"),
new SegmentComparator("N4"), new SegmentComparator("AAA"),
new SegmentComparator("PRV") });
debug.println("***** Loop 2100C *****");
List<Segment> loop2100c = extractLoop(new SegmentComparator[] {
new SegmentComparator("HL"), new SegmentComparator("TRN"),
new SegmentComparator("NM1"), new SegmentComparator("REF"),
new SegmentComparator("N3"), new SegmentComparator("N4"),
new SegmentComparator("AAA"), new SegmentComparator("PRV"),
new SegmentComparator("DMG"), new SegmentComparator("INS"),
new SegmentComparator("HI"), new SegmentComparator("DTP"),
new SegmentComparator("MPI"), });
debug.println("***** Loop 2110C *****");
List<Segment> loop2110c = extractLoop(new SegmentComparator[] {
new SegmentComparator("EB"), new SegmentComparator("HSD"),
new SegmentComparator("REF"), new SegmentComparator("DTP"),
new SegmentComparator("AAA"), new SegmentComparator("MSG") });
debug.println("***** Loop 2115C *****");
List<Segment> loop2115c = extractLoop(new SegmentComparator[] {
new SegmentComparator("III"), new SegmentComparator("LS") });
debug.println("***** Loop 2120C *****");
List<Segment> loop2120c = extractLoop(new SegmentComparator[] {
new SegmentComparator("NM1"), new SegmentComparator("REF"),
new SegmentComparator("N3"), new SegmentComparator("N4"),
new SegmentComparator("AAA"), new SegmentComparator("PRV"),
new SegmentComparator("DMG"), new SegmentComparator("INS"),
new SegmentComparator("HI"), new SegmentComparator("DTP"),
new SegmentComparator("MPI"), });
debug.println("***** Loop 2110D *****");
List<Segment> loop2110d = extractLoop(new SegmentComparator[] {
new SegmentComparator("EB"), new SegmentComparator("HSD"),
new SegmentComparator("REF"), new SegmentComparator("DTP"),
new SegmentComparator("AAA"), new SegmentComparator("MSG") });
debug.println("***** Loop 2115D *****");
List<Segment> loop2115d = extractLoop(new SegmentComparator[] {
new SegmentComparator("III"), new SegmentComparator("LS") });
debug.println("***** Loop 2120D *****");
List<Segment> loop2120d = extractLoop(new SegmentComparator[] {
new SegmentComparator("NM1"), new SegmentComparator("N3"),
new SegmentComparator("N4"), new SegmentComparator("PER"),
new SegmentComparator("PRV") });
debug.println("Finished parsing 270");
}
@Override
public String parseData(String inputData) throws Exception {
this.parse(inputData);
return ""; // TODO: FIXME
}
}