/********************************************************************
 * Copyright © 2004 VHA. All rights reserved
 ********************************************************************/

package gov.va.med.fw.hl7.segment;

// Java classes
import gov.va.med.fw.hl7.InvalidSegmentException;
import gov.va.med.fw.hl7.Segment;
import gov.va.med.fw.hl7.constants.SegmentConstants;

import java.util.List;

/**
 * A QAK segment containing information about a patient identification
 * 
 * @author DNS   PALANM
 * @version 1.0
 */

public class QAK extends Segment {

   /**
     * An instance of serialVersionUID
     */
    private static final long serialVersionUID = 3304197612181844937L;

    /**
    * Constructs an empty segment. This constructor is ususally usd by derived
    * segment classes to populate its own segment data.
    */
   public QAK() {
      super();
      setName(SegmentConstants.QAK);
   }

   /**
    * Constructs a segment of elements from a raw data string. This constructor
    * is usually used to construct an inbound message from a raw message's
    * segment data.
    * 
    * @param data
    *           A raw data string
    * @throws InvalidSegmentException
    *            Thrown if failed to construct a segment due to missing
    *            parameters or invalid segment data to parse.
    */
   public QAK(String data) throws InvalidSegmentException {
      super(data);
   }

   /**
    * Constructs a segment of elements from a raw data string, an array of valid
    * encoding character strings, and a element delimiter string. This
    * constructor is usually used to construct an inbound message from a raw
    * message's segment data, a specific encoding characters, and a field
    * delimiter.
    * 
    * @param encodingChars
    *           An array of encoding characters
    * @param elementDelimiter
    *           A field delimiter
    * @param segmentData
    *           A raw data string
    * @throws InvalidSegmentException
    *            Thrown if failed to construct a segment due to missing
    *            parameters or invalid segment data to parse.
    */
   public QAK(String[] encodingChars, String elementDelimiter,
         String segmentData) throws InvalidSegmentException {
      super(encodingChars, elementDelimiter, segmentData);
   }

   /**
    * Constructs a segment from a segment name and a list of elements. This
    * constructor is usually used to construct an outbound message from a list
    * of specific segment elements, and a segment name.
    * 
    * @param name
    *           A segment name
    * @param elements
    *           A list of segment elements
    * @throws InvalidSegmentException
    *            Thrown if failed to construct a segment due to missing
    *            parameters or invalid segment data to parse.
    */
   public QAK(String name, List elements) throws InvalidSegmentException {
      super(name, elements);
   }

   /**
    * Constructs a segment from an array of encoding characters, a field
    * delimiter, a segment name, and a list of field data. This constructor is
    * usually used to construct an outbound message from a list of specific
    * segment elements, element delimiter, and encoding characters.
    * 
    * @param encodingChars
    *           An array of encoding characters
    * @param elementDelimiter
    *           A field delimiter
    * @param segmentName
    *           A segment name
    * @param segmentElements
    *           A list of field data
    * @throws InvalidSegmentException
    *            Thrown if failed to construct a segment due to missing
    *            parameters or invalid segment data to parse.
    */
   public QAK(String[] encodingChars, String elementDelimiter,
         String segmentName, List segmentElements)
         throws InvalidSegmentException {
      super(encodingChars, elementDelimiter, segmentName, segmentElements);
   }

   /**
    * 
    * ZMH COUNT
    * 
    * @param input
    *           A value of count
    */
   public void setSetCount(String input) {
      setElement(input, 0);
   }

   /**
    * 
    * ZMH COUNT
    * 
    * @return String A value of count
    */
   public String getCount() {
      return getElement(0);
   }

  
   
}