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;
}