public static HL7Segment parseMSH(byte[] b, int size, ParsePosition pos) { String s = parse(b, size, pos, null); if (s.length() < 8) throw new IllegalArgumentException("Invalid MSH Segment: " + s); return new HL7Segment(s, s.charAt(3), s.substring(4,8)); }
static HL7Segment parse(byte[] b, int size, ParsePosition pos, char fieldSeparator, String encodingCharacters, String charsetName) { String s = parse(b, size, pos, charsetName); return s != null ? new HL7Segment(s, fieldSeparator, encodingCharacters) : null; }
public static HL7Segment makeMSH(int size, char fieldSeparator, String encodingCharacters) { HL7Segment msh = new HL7Segment(size, fieldSeparator, encodingCharacters); msh.setField(0, "MSH"); msh.setField(1, encodingCharacters); msh.setField(6, timeStamp(new Date())); msh.setField(9, nextMessageControlID()); msh.setField(10, "P"); msh.setField(11, "2.5"); return msh; } }
public static HL7Message makePixQuery(String pid, String... domains) { HL7Segment msh = HL7Segment.makeMSH(); msh.setField(8, "QBP^Q23^QBP_Q21"); HL7Segment qpd = new HL7Segment(5); qpd.setField(0, "QPD"); qpd.setField(1, "IHE PIX Query"); qpd.setField(2, "QRY" + msh.getField(9, "")); qpd.setField(3, pid); qpd.setField(4, HL7Segment.concat(domains, '~')); HL7Segment rcp = new HL7Segment(8); rcp.setField(0, "RCP"); rcp.setField(1, "I"); HL7Message qbp = new HL7Message(3); qbp.add(msh); qbp.add(qpd); qbp.add(rcp); return qbp; }
public static HL7Message makeACK(HL7Segment msh, String ackCode, String text) { int size = msh.size(); HL7Segment ackmsh = HL7Segment.makeMSH(size, msh.getFieldSeparator(), msh.getEncodingCharacters()); ackmsh.setField(2, msh.getField(4, null)); ackmsh.setField(3, msh.getField(5, null)); ackmsh.setField(4, msh.getField(2, null)); ackmsh.setField(5, msh.getField(3, null)); ackmsh.setField(8, "ACK^" + msh.getMessageType().substring(4,7) + "^ACK"); for (int i = 10; i < size; i++) ackmsh.setField(i, msh.getField(i, null)); HL7Segment msa = new HL7Segment(4, msh.getFieldSeparator(), msh.getEncodingCharacters()); msa.setField(0, "MSA"); msa.setField(1, ackCode); msa.setField(2, msh.getMessageControlID()); msa.setField(3, text != null && text.length() > 80 ? text.substring(0, 80) : text); HL7Message ack = new HL7Message(2); ack.add(ackmsh); ack.add(msa); return ack; }