/**
   * Creates a 1095 record based on a MDW or Kickout record
   *
   * @param mdwSubscriber
   * @param wasKickout - Set to true if record came from Kickout table, false if record came from
   *     MDW table
   * @param kickoutId - Only used to audit kickout records
   */
  public void create1095Record(MecMdw mdwSubscriber, boolean wasKickout, long kickoutId) {
    long mec_doc_id = mecDocMapper.getMecDocMainSeq();
    //		mec_doc_id= mec_doc_id + 1;//TODO REMOVE THE 20310 once table is deleted.

    // logger.debug(seq );

    // Main
    MecDocMain main = new MecDocMain();
    main.setMec_doc_id(mec_doc_id);
    main.setFk_mdw_id(mdwSubscriber.getMdw_id());
    generateAndInsertMecDocMain(main);
    ;

    // Sub
    Subscriber newSubscriber = new Subscriber();
    String familyId = mdwSubscriber.getFamily_id_num();
    String regionCd = mdwSubscriber.getRgn_cd();
    newSubscriber.setFk_mec_doc_id(mec_doc_id);
    generateAndInsertMecDocSub(mdwSubscriber, newSubscriber);

    // dependent

    if (wasKickout) {
      // Set kickout fl for subscriber
      kickoutMapper.setKickoutFlag(kickoutId, MecConstants.C_FLAG);

      List<Kickout> kickouts = kickoutMapper.getDependentsForFamily(familyId, regionCd);
      for (Kickout kickout : kickouts) {
        generateAndInsertMecDocCovInd(mec_doc_id, new MecMdw(kickout));
        kickoutMapper.setKickoutFlag(kickout.getKickout_id(), MecConstants.C_FLAG);
      }
      auditSubscriberRecord(newSubscriber, kickoutId);
    } else {
      List<MecMdw> dependents = mdwMapper.getDependentsForFamily(familyId, regionCd);
      for (MecMdw mdwDependent : dependents) {
        generateAndInsertMecDocCovInd(mec_doc_id, mdwDependent);
      }
      auditSubscriberRecord(newSubscriber);
    }

    //		logger.debug("dependent size="+dependents.size());
    // Audit tbl [mec doc id + mdw id]
    //		logger.debug("main.getMec_doc_id()=="+main.getMec_doc_id());
  }