private void FillEmptyAddForm(Patient patient, UrlParamCard cardType)
    {
        if (cardType == UrlParamCard.Insurance && ddlOrganisation.Items.Count == 0)
        {
            HideTableAndSetErrorMessage("Please enter an insurance company into the system before adding an insurance card");
        }

        idRow.Visible = false;

        ddlOrganisation.SelectedValue = cardType == UrlParamCard.Medicare ? "1" : "0";
        ddlOrganisation.Visible       = cardType == UrlParamCard.Insurance;
        lblOrganisation.Visible       = cardType != UrlParamCard.Insurance;
        addOrModByRow.Visible                       = false;
        addOrModDateRow.Visible                     = false;
        tr_epc_heading.Visible                      = false;
        tr_epc_space_row.Visible                    = false;
        tr_referral_received.Visible                = false;
        tr_referral_signed.Visible                  = false;
        lstEPCRemaining.Visible                     = false;
        tr_epc_change_remaining_space_row.Visible   = false;
        pnlGrdHealthCardAction.Visible              = false;
        patientReferrer.Visible                     = false;
        lblActions.Visible                          = false;

        lnkGoToBookingScreen.NavigateUrl = "~/SelectOrganisationsV2.aspx?patient=" + patient.PatientID.ToString();
        lnkGoToBookingScreen.Visible = false;

        HealthCard activeHealthCard = HealthCardDB.GetActiveByPatientID(patient.PatientID);

        if (cardType == UrlParamCard.Medicare)
        {
            lblHeading.Text = "Add Medicare Card Information For ";
            lnkToEntity.Text = patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + patient.PatientID;

            lblOrganisation.Text = "Medicare";
            ddlOrganisation.SelectedValue = "-1";
            txtCardNbr.Width = Unit.Pixel(89);
            ddlCardFamilyMemberNbr.SelectedValue = "1";

            txtCardNbr.Visible = false;
            txtValidateCardNbrRequired.Visible = false;

            //chkIsActive.Checked = !HealthCardDB.ActiveCardExistsFor(patient.PatientID, 0, -1, -1);

            // if no active DVA card, check it to set as active.
            // if no active card at all, force it to be active.
            chkIsActive.Checked = (activeHealthCard == null || (activeHealthCard.Organisation.OrganisationID != -2 && activeHealthCard.Organisation.OrganisationID != -3));
            if (activeHealthCard == null)
                chkIsActive.Attributes["onclick"] = "return false";

            area_treated.Visible = false;

            btnSubmit.Text = "Add Medicare Card";
        }
        else if (cardType == UrlParamCard.DVA)
        {
            lblHeading.Text = "Add DVA Card Information For ";
            lnkToEntity.Text = patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + patient.PatientID;

            lblOrganisation.Text = "DVA";
            ddlOrganisation.SelectedValue = "-2";
            ddlCardFamilyMemberNbr.Visible = false;
            lblCardNbrFamilyNbrSeperator.Visible = false;

            txtCardNbr_Digit_1.Visible = false;
            txtCardNbr_Digit_2.Visible = false;
            txtCardNbr_Digit_3.Visible = false;
            txtCardNbr_Digit_4.Visible = false;
            txtCardNbr_Digit_5.Visible = false;
            txtCardNbr_Digit_6.Visible = false;
            txtCardNbr_Digit_7.Visible = false;
            txtCardNbr_Digit_8.Visible = false;
            txtCardNbr_Digit_9.Visible = false;
            txtCardNbr_Digit_10.Visible = false;
            txtValidateCardNbrsRequired.Visible = false;

            //chkIsActive.Checked = !HealthCardDB.ActiveCardExistsFor(patient.PatientID, 0, -1, -2);

            // if no active DVA card, check it to set as active.
            // if no active card at all, force it to be active.
            chkIsActive.Checked = (activeHealthCard == null || (activeHealthCard.Organisation.OrganisationID != -1 && activeHealthCard.Organisation.OrganisationID != -3));
            if (activeHealthCard == null)
                chkIsActive.Attributes["onclick"] = "return false";

            area_treated.Visible = true;

            btnSubmit.Text = "Add DVA Card";
        }
        else if (cardType == UrlParamCard.Insurance)
        {
            lblHeading.Text = "Add Ins. Card Information For ";
            lnkToEntity.Text = patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + patient.PatientID;

            lblOrganisation.Text = "Insurance";
            ddlOrganisation.SelectedValue = "-3";
            ddlCardFamilyMemberNbr.Visible = false;
            lblCardNbrFamilyNbrSeperator.Visible = false;

            txtCardNbr_Digit_1.Visible = false;
            txtCardNbr_Digit_2.Visible = false;
            txtCardNbr_Digit_3.Visible = false;
            txtCardNbr_Digit_4.Visible = false;
            txtCardNbr_Digit_5.Visible = false;
            txtCardNbr_Digit_6.Visible = false;
            txtCardNbr_Digit_7.Visible = false;
            txtCardNbr_Digit_8.Visible = false;
            txtCardNbr_Digit_9.Visible = false;
            txtCardNbr_Digit_10.Visible = false;
            txtValidateCardNbrsRequired.Visible = false;

            //chkIsActive.Checked = !HealthCardDB.ActiveCardExistsFor(patient.PatientID, 0, -1, -2);

            // if no active Insurance card, check it to set as active.
            // if no active card at all, force it to be active.
            chkIsActive.Checked = (activeHealthCard == null || (activeHealthCard.Organisation.OrganisationID != -1 && activeHealthCard.Organisation.OrganisationID != -2));
            if (activeHealthCard == null)
                chkIsActive.Attributes["onclick"] = "return false";

            area_treated.Visible = false;

            btnSubmit.Text = "Add Ins Card";
        }
        else
            HideTableAndSetErrorMessage();
    }
    private void FillEditViewForm(HealthCard health_card, UrlParamCard cardType, bool isEditMode)
    {
        health_card.Patient = PatientDB.GetByID(health_card.Patient.PatientID);

        if (!Utilities.IsDev())
            idRow.Attributes["class"] = "hiddencol";

        UpdateHistory();

        if (cardType == UrlParamCard.Medicare)
        {
            if (health_card.Organisation.OrganisationID != -1)
            {
                HideTableAndSetErrorMessage("");
                return;
            }

            lblHeading.Text = "Medicare Card Information For ";
            lnkToEntity.Text = health_card.Patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + health_card.Patient.PatientID;
            lblOrganisation.Text = "Medicare";

            txtCardNbr.Width = Unit.Pixel(89);

            area_treated.Visible = false;
        }
        else if (cardType == UrlParamCard.DVA)
        {
            if (health_card.Organisation.OrganisationID != -2)
            {
                HideTableAndSetErrorMessage("");
                return;
            }

            lblHeading.Text = "DVA Card Information For ";
            lnkToEntity.Text = health_card.Patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + health_card.Patient.PatientID;
            lblOrganisation.Text = "DVA";

            lblCardNbrFamilyNbrSeperator.Visible = false;
            ddlCardFamilyMemberNbr.Visible = false;

            area_treated.Visible = true;
        }
        else if (cardType == UrlParamCard.Insurance)
        {
            lblHeading.Text = "Insurance Card Information For ";
            lnkToEntity.Text = health_card.Patient.Person.FullnameWithoutMiddlename;
            lnkToEntity.NavigateUrl = "PatientDetailV2.aspx?type=view&id=" + health_card.Patient.PatientID;
            lblOrganisation.Text = health_card.Organisation.Name;

            lblCardNbrFamilyNbrSeperator.Visible = false;
            ddlCardFamilyMemberNbr.Visible = false;

            area_treated.Visible = true;
        }
        else
            HideTableAndSetErrorMessage();

        lnkGoToBookingScreen.NavigateUrl = "~/SelectOrganisationsV2.aspx?patient=" + health_card.Patient.PatientID.ToString();

        lblId.Text = health_card.HealthCardID.ToString();

        if (ddlOrganisation.Items.FindByValue(health_card.Organisation.OrganisationID.ToString()) == null)
            ddlOrganisation.Items.Add(new ListItem(health_card.Organisation.Name,  health_card.Organisation.OrganisationID.ToString()));
        ddlOrganisation.SelectedValue = health_card.Organisation.OrganisationID.ToString();
        ddlOrganisation.Visible = isEditMode && cardType == UrlParamCard.Insurance;
        lblLastModBy.Text = health_card.AddedOrLastModifiedBy == null ? string.Empty : health_card.AddedOrLastModifiedBy.Person.FullnameWithoutMiddlename;
        lblLastModDate.Text = health_card.AddedOrLastModifiedDate == DateTime.MinValue ? string.Empty : health_card.AddedOrLastModifiedDate.ToString("dd-MM-yyyy");

        lblDateReferralSigned.Text = health_card.DateReferralSigned == DateTime.MinValue ? "--" : health_card.DateReferralSigned.ToString("dd-MM-yyyy");
        lblDateReferralReceived.Text = health_card.DateReferralReceivedInOffice == DateTime.MinValue ? "--" : health_card.DateReferralReceivedInOffice.ToString("dd-MM-yyyy");

        DataTable dt = HealthCardEPCRemainingDB.GetDataTable_ByHealthCardID(health_card.HealthCardID);
        lstEPCRemaining.DataSource = dt;
        lstEPCRemaining.DataBind();

        bool hasEpcRemainingRows = HealthCardEPCRemainingDB.GetCountByHealthCardID(health_card.HealthCardID) > 0;
        bool hasEPC = health_card.HasEPC();

        tr_epc_space_row.Visible = hasEPC;
        tr_referral_received.Visible = hasEPC;
        tr_referral_signed.Visible = hasEPC;
        lstEPCRemaining.Visible = hasEpcRemainingRows;
        tr_epc_change_remaining_space_row.Visible = hasEPC;

        lnkEditEPC.Visible = true;
        lnkNewEPC.Visible = true;
        tr_epc_heading.Visible = true;
        tr_epc_space_row.Visible = true;

        if (!hasEPC)
        {
            //string allFeatures = "dialogWidth:550px;dialogHeight:550px;center:yes;resizable:no; scroll:no";
            //string js = "javascript:window.showModalDialog('EPCDetailV2.aspx?type=add&id=" + health_card.HealthCardID.ToString() + "', '', '" + allFeatures + "');document.getElementById('btnUpdateEPCInfo').click();return false;";
            string js = "javascript:show_modal_updade_epc(" + health_card.HealthCardID.ToString() + ");document.getElementById('btnUpdateEPCInfo').click();return false;";

            this.lnkNewEPC.Visible = cardType != UrlParamCard.Insurance;
            this.lnkNewEPC.NavigateUrl = "  ";
            this.lnkNewEPC.Text = "Add Referral";
            this.lnkNewEPC.Attributes.Add("onclick", js);

            lnkEditEPC.Visible = false;
        }
        else
        {
            tr_epc_heading.Visible = true;
            tr_epc_space_row.Visible = true;

            string allFeatures = "dialogWidth:550px;dialogHeight:550px;center:yes;resizable:no; scroll:no";
            //string js = "javascript:window.showModalDialog('EPCDetailV2.aspx?type=add&id=" + health_card.HealthCardID.ToString() + "', '', '" + allFeatures + "');document.getElementById('btnUpdateEPCInfo').click();return false;";
            string js = "javascript:show_modal_updade_epc(" + health_card.HealthCardID.ToString() + ");document.getElementById('btnUpdateEPCInfo').click();return false;";

            this.lnkNewEPC.Visible = true;
            this.lnkNewEPC.NavigateUrl = "  ";
            this.lnkNewEPC.Text = "Replace Referral";
            this.lnkNewEPC.Attributes.Add("onclick", js);

            if (!Utilities.IsMobileDevice(Request))
            {
                allFeatures = "dialogWidth:440px;dialogHeight:440px;center:yes;resizable:no; scroll:no";
                js = "javascript:window.showModalDialog('EPCDetailV2.aspx?type=edit&id=" + health_card.HealthCardID.ToString() + "', '', '" + allFeatures + "');document.getElementById('btnUpdateEPCInfo').click();return false;";
            }
            else
            {
                js = "open_new_tab('EPCDetailV2.aspx?type=edit&id=" + health_card.HealthCardID.ToString() + "');return false;";
            }

            this.lnkEditEPC.Visible = true;
            this.lnkEditEPC.NavigateUrl = "  ";
            this.lnkEditEPC.Text = "Edit Referral";
            this.lnkEditEPC.Attributes.Add("onclick", js);
        }

        if (isEditMode)
        {
            txtCardName.Text = health_card.CardName;
            txtCardNbr.Text = health_card.CardNbr;
            if (health_card.CardNbr.Length > 0)
                txtCardNbr_Digit_1.Text = health_card.CardNbr[0].ToString().Trim();
            if (health_card.CardNbr.Length > 1)
                txtCardNbr_Digit_2.Text = health_card.CardNbr[1].ToString().Trim();
            if (health_card.CardNbr.Length > 2)
                txtCardNbr_Digit_3.Text = health_card.CardNbr[2].ToString().Trim();
            if (health_card.CardNbr.Length > 3)
                txtCardNbr_Digit_4.Text = health_card.CardNbr[3].ToString().Trim();
            if (health_card.CardNbr.Length > 4)
                txtCardNbr_Digit_5.Text = health_card.CardNbr[4].ToString().Trim();
            if (health_card.CardNbr.Length > 5)
                txtCardNbr_Digit_6.Text = health_card.CardNbr[5].ToString().Trim();
            if (health_card.CardNbr.Length > 6)
                txtCardNbr_Digit_7.Text = health_card.CardNbr[6].ToString().Trim();
            if (health_card.CardNbr.Length > 7)
                txtCardNbr_Digit_8.Text = health_card.CardNbr[7].ToString().Trim();
            if (health_card.CardNbr.Length > 8)
                txtCardNbr_Digit_9.Text = health_card.CardNbr[8].ToString().Trim();
            if (health_card.CardNbr.Length > 9)
                txtCardNbr_Digit_10.Text = health_card.CardNbr[9].ToString().Trim();

            if (health_card.Organisation.OrganisationID == -1)
            {
                txtCardNbr.Visible = false;
                txtValidateCardNbrRequired.Visible = false;
            }
            else if (health_card.Organisation.OrganisationID == -2)
            {
                txtCardNbr_Digit_1.Visible = false;
                txtCardNbr_Digit_2.Visible = false;
                txtCardNbr_Digit_3.Visible = false;
                txtCardNbr_Digit_4.Visible = false;
                txtCardNbr_Digit_5.Visible = false;
                txtCardNbr_Digit_6.Visible = false;
                txtCardNbr_Digit_7.Visible = false;
                txtCardNbr_Digit_8.Visible = false;
                txtCardNbr_Digit_9.Visible = false;
                txtCardNbr_Digit_10.Visible = false;
                txtValidateCardNbrsRequired.Visible = false;
            }
            else // insurance card
            {
                txtCardNbr_Digit_1.Visible = false;
                txtCardNbr_Digit_2.Visible = false;
                txtCardNbr_Digit_3.Visible = false;
                txtCardNbr_Digit_4.Visible = false;
                txtCardNbr_Digit_5.Visible = false;
                txtCardNbr_Digit_6.Visible = false;
                txtCardNbr_Digit_7.Visible = false;
                txtCardNbr_Digit_8.Visible = false;
                txtCardNbr_Digit_9.Visible = false;
                txtCardNbr_Digit_10.Visible = false;
                txtValidateCardNbrsRequired.Visible = false;
                lblOrganisation.Visible = false;
            }

            try
            {
                if (ddlCardFamilyMemberNbr.Items.FindByValue(health_card.CardFamilyMemberNbr) != null)
                    ddlCardFamilyMemberNbr.SelectedValue = health_card.CardFamilyMemberNbr;
            }
            catch (Exception) { ; }

            chkIsActive.Checked = health_card.IsActive;
            if (health_card.IsActive)
                chkIsActive.Attributes["onclick"] = "return false";

            if (health_card.ExpiryDate != DateTime.MinValue)
            {
                Utilities.AddIfNotExists(ddlExpiry_Month, health_card.ExpiryDate.Month);
                ddlExpiry_Month.SelectedValue = health_card.ExpiryDate.Month.ToString();

                Utilities.AddIfNotExists(ddlExpiry_Year, health_card.ExpiryDate.Year);
                ddlExpiry_Year.SelectedValue = health_card.ExpiryDate.Year.ToString();
            }

            txtAreaTreated.Text = health_card.AreaTreated;

            lblCardName.Visible = false;
            lblCardNbr.Visible = false;
            lblIsActive.Visible = false;
            lblExpiry.Visible = false;
            lblAreaTreated.Visible = false;
        }
        else
        {
            lblCardName.Text = health_card.CardName.Length == 0 ? "--" : health_card.CardName;
            lblCardNbr.Text = health_card.CardNbr.Length == 0 ? "--" : health_card.CardNbr + (health_card.Organisation.OrganisationID == -1 ? " - " + health_card.CardFamilyMemberNbr : "");

            lblOrganisation.Font.Bold = true;

            txtCardName.Visible = false;
            txtCardNbr.Visible = false;

            txtCardNbr.Visible = false;
            txtCardNbr_Digit_1.Visible = false;
            txtCardNbr_Digit_2.Visible = false;
            txtCardNbr_Digit_3.Visible = false;
            txtCardNbr_Digit_4.Visible = false;
            txtCardNbr_Digit_5.Visible = false;
            txtCardNbr_Digit_6.Visible = false;
            txtCardNbr_Digit_7.Visible = false;
            txtCardNbr_Digit_8.Visible = false;
            txtCardNbr_Digit_9.Visible = false;
            txtCardNbr_Digit_10.Visible = false;
            txtValidateCardNbrsRequired.Visible = false;
            lblIsActive.Text = health_card.IsActive ? "Yes" : "No";
            lblExpiry.Text = health_card.ExpiryDate == DateTime.MinValue ? "--" : health_card.ExpiryDate.ToString("MM  '/'  yyyy");
            lblAreaTreated.Text = health_card.AreaTreated.Length == 0 ? "--" : health_card.AreaTreated;

            ddlCardFamilyMemberNbr.Visible = false;
            lblCardNbrFamilyNbrSeperator.Visible = false;
            chkIsActive.Visible = false;
            ddlExpiry_Month.Visible = false;
            ddlExpiry_Year.Visible = false;
            txtAreaTreated.Visible = false;
        }

        FillHealthCardActionGrid();

        btnSubmit.Text = isEditMode ? "Update Details" : "Edit Details";
        btnCancel.Visible = isEditMode;
    }