コード例 #1
0
    public string ReplaceMergeFields(string text, Hashtable regRefIDHash, int regRefID)
    {
        if (text.Contains("{ref_name}") ||
            text.Contains("{ref_title}") ||
            text.Contains("{ref_firstname}") ||
            text.Contains("{ref_surname}"))
        {
            RegisterReferrer regRef = (RegisterReferrer)regRefIDHash[regRefID];

            string title = string.Empty;
            if (regRef.Referrer.Person.Title.ID != 0)
            {
                title = regRef.Referrer.Person.Title.Descr;
            }
            else if (regRef.Referrer.Person.Title.ID == 0 && regRef.Referrer.Person.Gender == "M")
            {
                title = "Mr.";
            }
            else if (regRef.Referrer.Person.Title.ID == 0 && regRef.Referrer.Person.Gender == "F")
            {
                title = "Ms.";
            }

            text = text
                   .Replace("{ref_name}", regRef.Referrer.Person.FullnameWithoutMiddlename)
                   .Replace("{ref_title}", title)
                   .Replace("{ref_firstname}", regRef.Referrer.Person.Firstname)
                   .Replace("{ref_surname}", regRef.Referrer.Person.Surname)
            ;
        }

        return(text);
    }
コード例 #2
0
    protected void GrdReferrer_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label        lblId                 = (Label)GrdReferrer.Rows[e.RowIndex].FindControl("lblId");
        DropDownList ddlRefs               = (DropDownList)GrdReferrer.Rows[e.RowIndex].FindControl("ddlRefs");
        TextBox      txtProviderNumber     = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtProviderNumber");
        CheckBox     chkIsReportEveryVisit = (CheckBox)GrdReferrer.Rows[e.RowIndex].FindControl("chkIsReportEveryVisit");
        CheckBox     chkIsBatchSendAllPatientsTreatmentNotes = (CheckBox)GrdReferrer.Rows[e.RowIndex].FindControl("chkIsBatchSendAllPatientsTreatmentNotes");


        RegisterReferrer regRef = RegisterReferrerDB.GetByID(Convert.ToInt32(lblId.Text));

        if (RegisterReferrerDB.Exists(regRef.Organisation.OrganisationID, Convert.ToInt32(ddlRefs.SelectedValue), regRef.RegisterReferrerID))
        {
            SetErrorMessage("Clinic is already linked to " + ddlRefs.SelectedItem.Text + ". If it is not visible, use the 'show deleted' checkbox and un-delete it.");
            GrdReferrer.EditIndex = -1;
            FillGrid();
            return;
        }

        RegisterReferrerDB.Update(
            regRef.RegisterReferrerID,
            regRef.Organisation.OrganisationID,
            Convert.ToInt32(ddlRefs.SelectedValue),
            txtProviderNumber.Text.Trim(),
            chkIsReportEveryVisit.Checked,
            chkIsBatchSendAllPatientsTreatmentNotes.Checked,
            regRef.DateLastBatchSendAllPatientsTreatmentNotes);

        GrdReferrer.EditIndex = -1;
        FillGrid();
    }
コード例 #3
0
    protected string GetLine(int id, Person p, string colSep, string rowSep, bool incRowSep, bool incDOB, bool incAddresses, bool incPhoneNbrs, bool incRefInfo)
    {
        string result = string.Empty;
        if (incRowSep)
            result += rowSep;
        result += id.ToString() + colSep + p.Firstname + colSep + p.Middlename + colSep + p.Surname;
        if (incDOB)
            result += colSep + (p.Dob == DateTime.MinValue ? "" : p.Dob.ToString("dd-MM-yyyy"));
        if (incAddresses)
            result += colSep + GetAddresses(p.EntityID);
        if (incPhoneNbrs)
            result += colSep + GetPhoneNbrs(p.EntityID);

        if (incRefInfo)
        {
            string orgNames = string.Empty;
            string provNbrs = string.Empty;

            System.Data.DataTable tbl = RegisterReferrerDB.GetDataTable_OrganisationsOf(id);
            RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
            for(int i=0; i<tbl.Rows.Count; i++)
            {
                list[i] = RegisterReferrerDB.Load(tbl.Rows[i]);
                list[i].Organisation = OrganisationDB.Load(tbl.Rows[i], "", "organisation_entity_id", "organisation_is_deleted");
                orgNames += (orgNames.Length == 0 ? "" : "\r\n") + list[i].Organisation.Name;
                provNbrs += (provNbrs.Length == 0 ? "" : "\r\n") + list[i].ProviderNumber;
            }

            result += colSep + orgNames;
            result += colSep + provNbrs;

        }

        return result;
    }
コード例 #4
0
    protected void UpdateReferrersAtOrgList()
    {
        if (ddlOrgsList.SelectedIndex == -1)
        {
            return;
        }

        lblProvidersOf.Visible = true;

        lblSelectedOrg.Text = ddlOrgsList.Items[ddlOrgsList.SelectedIndex].Text;

        DataTable tbl = RegisterReferrerDB.GetDataTable_ReferrersOf(Convert.ToInt32(ddlOrgsList.Items[ddlOrgsList.SelectedIndex].Value));

        RegisterReferrer[] regRefs = new RegisterReferrer[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            regRefs[i]                       = RegisterReferrerDB.Load(tbl.Rows[i]);
            regRefs[i].Referrer              = ReferrerDB.Load(tbl.Rows[i]);
            regRefs[i].Referrer.Person       = PersonDB.Load(tbl.Rows[i], "", "person_entity_id");
            regRefs[i].Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "title_id", "descr");
        }
        string list = tbl.Rows.Count == 0 ? string.Empty : @"<table cellpadding=""0"" cellspacing=""0"">";

        foreach (RegisterReferrer regRef in regRefs)
        {
            string url  = "ReferrerList_DoctorClinicV2.aspx?surname_search=" + regRef.Referrer.Person.Surname + @"&surname_starts_with=1" + (regRef.ProviderNumber.Length > 0 ? "&provider_nbr_search=" + regRef.ProviderNumber + "&provider_nbr_starts_with=1" : "");
            string href = @"<a href=""" + url + @""">" + regRef.Referrer.Person.FullnameWithoutMiddlename + "</a>";
            list += "<tr><td>" + href + @"</td><td style=""width:8px;"">&nbsp;</td><td> Prov Nbr: " + (regRef.ProviderNumber.Trim().Length == 0 ? "[None]" : regRef.ProviderNumber) + "</td></tr>";
        }
        list += tbl.Rows.Count == 0 ? string.Empty : "</table>";

        lblProvidersOfSelectedOrg.Text = list.Length > 0 ? list : "None";
    }
コード例 #5
0
 public PatientReferrer(int patient_referrer_id, int patient_id, int register_referrer_id, int organisation_id, DateTime patient_referrer_date_added, bool is_debtor)
 {
     this.patient_referrer_id            = patient_referrer_id;
     this.patient                        = new Patient(patient_id);
     this.registerReferrer               = register_referrer_id == -1 ? null : new RegisterReferrer(register_referrer_id);
     this.organisation                   = organisation_id      ==  0 ? null : new Organisation(organisation_id);
     this.patient_referrer_date_added    = patient_referrer_date_added;
     this.is_debtor                      = is_debtor;
 }
コード例 #6
0
    /*
     *
     * protected void btnRunBatchSendTreatmentNotes_AllReferrers_SinceLast_Click(object sender, EventArgs e)
     * {
     *  try
     *  {
     *      DateTime startDate = GetStartDate(6, GetLastDateBatchSendTreatmentNotesAllReferrers());
     *      DateTime endDate   = DateTime.Now;
     *
     *      RunBatchSendTreatmentNotes_AllReferrers(startDate, endDate);
     *  }
     *  catch (CustomMessageException cmEx)
     *  {
     *      SetErrorMessage(cmEx.Message);
     *  }
     * }
     * protected void btnRunBatchSendTreatmentNotes_AllReferrers_Last6Months_Click(object sender, EventArgs e)
     * {
     *  try
     *  {
     *      DateTime startDate = DateTime.Now.AddMonths(-6);
     *      DateTime endDate   = DateTime.Now;
     *
     *      RunBatchSendTreatmentNotes_AllReferrers(startDate, endDate);
     *  }
     *  catch (CustomMessageException cmEx)
     *  {
     *      SetErrorMessage(cmEx.Message);
     *  }
     * }
     * protected void RunBatchSendTreatmentNotes_AllReferrers(DateTime startDate, DateTime endDate)
     * {
     *  ArrayList noteFileList = new ArrayList();
     *
     *  try
     *  {
     *
     *      // TODO: Send Letter By Email
     *
     *
     *      string tmpLettersDirectory = Letter.GetTempLettersDirectory();
     *      if (!Directory.Exists(tmpLettersDirectory))
     *          throw new CustomMessageException("Temp letters directory doesn't exist");
     *
     *
     *      // get all notes of all patients of this referrer
     *      foreach (RegisterReferrer regReferrer in RegisterReferrerDB.GetAllByBatchSendAllTreatmentNotes(true))
     *      {
     *          foreach (Patient patient in PatientReferrerDB.GetActivePatientsOf(regReferrer.RegisterReferrerID))
     *          {
     *              HealthCard[] hcs = HealthCardDB.GetAllByPatientID(patient.PatientID);
     *              HealthCard hc = hcs[0];
     *
     *              Booking[] completedBookings = BookingDB.GetBetween(startDate.Date, endDate, null, null, patient, false, "187");
     *              foreach (Booking booking in completedBookings)
     *              {
     *                  if (booking.NoteCount == 0)
     *                      continue;
     *
     *                  Letter.FileContents fileContentsStandardTreatment = booking.GetTreatmentLetter(-1, hc, regReferrer.Referrer, Convert.ToInt32(Session["SiteID"]), Convert.ToInt32(Session["StaffID"]), false, 1);
     *                  string tmpFileName_EPCTreatment = FileHelper.GetTempFileName(tmpLettersDirectory + fileContentsStandardTreatment.DocName);
     *                  File.WriteAllBytes(tmpFileName_EPCTreatment, fileContentsStandardTreatment.Contents);
     *                  noteFileList.Add(tmpFileName_EPCTreatment);
     *              }
     *          }
     *      }
     *
     *
     *      SetErrorMessage("Generated " + noteFileList.Count + " Notes");
     *      if (noteFileList.Count > 0)  // merge
     *      {
     *          string docName = "TreatmentNotes.doc";
     *
     *          string tmpFinalFileName = Letter.MergeMultipleDocuments((string[])noteFileList.ToArray(typeof(string)), tmpLettersDirectory + docName);
     *          byte[] fileContents = System.IO.File.ReadAllBytes(tmpFinalFileName);
     *
     *          for (int i = noteFileList.Count - 1; i >= 0; i--)
     *          {
     *              File.Delete(noteFileList[i].ToString());
     *              noteFileList.RemoveAt(i);
     *          }
     *          File.Delete(tmpFinalFileName);
     *
     *          Session["downloadFile_Contents"] = fileContents;
     *          Session["downloadFile_DocName"] = docName;
     *          Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>");
     *
     *          RegisterReferrerDB.UpdateLastBatchSendAllPatientsTreatmentNotes_All(endDate);
     *          SetLastDateBatchSendTreatmentNotesAllReferrers(endDate);
     *          FillGrid(); // because each referrers date that has send=true should have been updated
     *      }
     *
     *
     *      // don't allow this to be in production:
     *      //
     *      bool resetGlobalLastPrintedDate = false;
     *      bool resetAllRegReferrersLastPrintedDate = false;
     *
     *      if (resetGlobalLastPrintedDate)
     *          SetLastDateBatchSendTreatmentNotesAllReferrers(DateTime.MinValue);
     *      if (resetAllRegReferrersLastPrintedDate)
     *      {
     *          RegisterReferrerDB.UpdateLastBatchSendAllPatientsTreatmentNotes_All(DateTime.MinValue);
     *          FillGrid();
     *      }
     *
     *  }
     *  catch (CustomMessageException cmEx)
     *  {
     *      for(int i=noteFileList.Count-1; i>= 0; i--)
     *      {
     *          File.Delete(noteFileList[i].ToString());
     *          noteFileList.RemoveAt(i);
     *      }
     *      SetErrorMessage(cmEx.Message);
     *  }
     * }
     *
     * protected void btnRunBatchSendTreatmentNotes_Click(object sender, EventArgs e)
     * {
     *  try
     *  {
     *      object argument = ((Button)sender).CommandArgument;
     *      int register_referrer_id = Convert.ToInt32(argument);
     *      RegisterReferrer regReferrer = RegisterReferrerDB.GetByID(register_referrer_id);
     *      if (regReferrer == null)
     *          throw new CustomMessageException("");
     *
     *      DateTime startDate = DateTime.Now.AddMonths(-6); // GetStartDate(6, regReferrer.DateLastBatchSendAllPatientsTreatmentNotes);
     *      DateTime endDate = DateTime.Now;
     *
     *      RunBatchSendTreatmentNotes(regReferrer, startDate, endDate);
     *  }
     *  catch (CustomMessageException cmEx)
     *  {
     *      SetErrorMessage(cmEx.Message);
     *  }
     *
     * }
     * protected void RunBatchSendTreatmentNotes(RegisterReferrer regReferrer, DateTime startDate, DateTime endDate)
     * {
     *  ArrayList noteFileList = new ArrayList();
     *
     *  try
     *  {
     *
     *      // TODO: Send Letter By Email
     *
     *
     *
     *      string tmpLettersDirectory = Letter.GetTempLettersDirectory();
     *      if (!Directory.Exists(tmpLettersDirectory))
     *          throw new CustomMessageException("Temp letters directory doesn't exist");
     *
     *
     *      // get all notes of all patients of this referrer
     *      foreach (Patient patient in PatientReferrerDB.GetActivePatientsOf(regReferrer.RegisterReferrerID))
     *      {
     *          HealthCard[] hcs = HealthCardDB.GetAllByPatientID(patient.PatientID);
     *          HealthCard hc = hcs[0];
     *
     *          Booking[] completedBookings = BookingDB.GetBetween(startDate.Date, endDate, null, null, patient, false, "187");
     *          foreach (Booking booking in completedBookings)
     *          {
     *              if (booking.NoteCount == 0)
     *                  continue;
     *
     *              Letter.FileContents fileContentsStandardTreatment = booking.GetTreatmentLetter(-1, hc, regReferrer.Referrer, Convert.ToInt32(Session["SiteID"]), Convert.ToInt32(Session["StaffID"]), false, 1);
     *              string tmpFileName_EPCTreatment = FileHelper.GetTempFileName(tmpLettersDirectory + fileContentsStandardTreatment.DocName);
     *              File.WriteAllBytes(tmpFileName_EPCTreatment, fileContentsStandardTreatment.Contents);
     *              noteFileList.Add(tmpFileName_EPCTreatment);
     *          }
     *      }
     *
     *      if (noteFileList.Count == 0)
     *      {
     *          SetErrorMessage("No treatment notes for: " + regReferrer.Referrer.Person.Fullname);
     *          return;
     *      }
     *      else  // merge
     *      {
     *          SetErrorMessage("Treatment notes created for: " + regReferrer.Referrer.Person.Fullname);
     *
     *          string docName = "TreatmentNotes.doc";
     *
     *          string tmpFinalFileName = Letter.MergeMultipleDocuments((string[])noteFileList.ToArray(typeof(string)), tmpLettersDirectory + docName);
     *          byte[] fileContents = System.IO.File.ReadAllBytes(tmpFinalFileName);
     *
     *          for (int i = noteFileList.Count - 1; i >= 0; i--)
     *          {
     *              File.Delete(noteFileList[i].ToString());
     *              noteFileList.RemoveAt(i);
     *          }
     *          File.Delete(tmpFinalFileName);
     *
     *          Session["downloadFile_Contents"] = fileContents;
     *          Session["downloadFile_DocName"] = docName;
     *          Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>");
     *
     *      }
     *
     *      RegisterReferrerDB.UpdateLastBatchSendAllPatientsTreatmentNotes(regReferrer.RegisterReferrerID, endDate);
     *      FillGrid();
     *  }
     *  catch (CustomMessageException cmEx)
     *  {
     *      for (int i = noteFileList.Count - 1; i >= 0; i--)
     *      {
     *          File.Delete(noteFileList[i].ToString());
     *          noteFileList.RemoveAt(i);
     *      }
     *      SetErrorMessage(cmEx.Message);
     *  }
     * }
     *
     * protected DateTime GetStartDate(int maxMonths, DateTime lastSendDate)
     * {
     *  bool hasLastSendDateAndNotOverMaxMonthsAgo = (lastSendDate != DateTime.MinValue && lastSendDate > DateTime.Now.AddMonths(-1 * maxMonths));
     *  return hasLastSendDateAndNotOverMaxMonthsAgo ? lastSendDate : DateTime.Now.AddMonths(-1 * maxMonths);
     * }
     *
     */

    #endregion

    protected void btnMovePatients_Click(object sender, EventArgs e)
    {
        RegisterReferrer regRefFrom = RegisterReferrerDB.GetByID(Convert.ToInt32(hiddenMovePatientFrom.Value));
        RegisterReferrer regRefTo   = RegisterReferrerDB.GetByID(Convert.ToInt32(hiddenMovePatientTo.Value));

        PatientReferrerDB.UpdateMoveAllPatients(regRefFrom.RegisterReferrerID, regRefTo.RegisterReferrerID);
        FillGrid();

        SetErrorMessage("<font color=\"black\">Patients Moved From</font> &nbsp;&nbsp; " + regRefFrom.Referrer.Person.Firstname + " " + regRefFrom.Referrer.Person.Surname + "[" + regRefFrom.Organisation.Name + "] &nbsp;&nbsp;<font color=\"black\">to</font> &nbsp;&nbsp;" + regRefTo.Referrer.Person.Firstname + " " + regRefTo.Referrer.Person.Surname + "[" + regRefTo.Organisation.Name + "]");
    }
コード例 #7
0
    protected void UpdateOrgsFromJavascriptChanges()
    {
        string    referrerIDs     = hiddenReferrerIDsList.Value; // comma seperated
        Hashtable referrerIDsHash = new Hashtable();

        if (referrerIDs.Length > 0)
        {
            foreach (string referrerID in referrerIDs.Split(','))
            {
                referrerIDsHash[Convert.ToInt32(referrerID)] = 1;
            }
        }


        DataTable referrers = RegisterReferrerDB.GetDataTable(0, -1, true);

        RegisterReferrer[] regRefs = new RegisterReferrer[referrers.Rows.Count];
        for (int i = 0; i < referrers.Rows.Count; i++)
        {
            regRefs[i] = RegisterReferrerDB.LoadAll(referrers.Rows[i]);
        }


        ArrayList referrersAdded = new ArrayList();

        lstReferrers.Items.Clear();
        for (int i = 0; i < regRefs.Length; i++)
        {
            if (referrerIDsHash[regRefs[i].RegisterReferrerID] != null)
            {
                string text = regRefs[i].Referrer.Person.FullnameWithoutMiddlename + " [" + regRefs[i].Organisation.Name + "]";
                lstReferrers.Items.Add(new ListItem(text, regRefs[i].RegisterReferrerID.ToString()));

                referrersAdded.Add(regRefs[i]);
            }
        }

        int hasBothMobileEmail    = 0;
        int hasMobileNoEmail      = 0;
        int hasEmailNoMobile      = 0;
        int hasNeitherMobileEmail = 0;

        RegisterReferrerDB.GetCountsByEmailMobile(
            (RegisterReferrer[])referrersAdded.ToArray(typeof(RegisterReferrer)),
            ref hasBothMobileEmail,
            ref hasMobileNoEmail,
            ref hasEmailNoMobile,
            ref hasNeitherMobileEmail);

        lblReferrersWithMobileAndEmailTotal.Text       = hasBothMobileEmail.ToString();
        lblReferrersWithMobileNoEmailTotal.Text        = hasMobileNoEmail.ToString();
        lblReferrersWithEmailNoMobileTotal.Text        = hasEmailNoMobile.ToString();
        lblReferrersWithNeitherMobileOrEmailTotal.Text = hasNeitherMobileEmail.ToString();
        lblReferrerCount.Text = lstReferrers.Items.Count.ToString();
    }
コード例 #8
0
    public static RegisterReferrer[] GetAllActiveRegRefByPatientsOfInternalOrg(int organisation_id)
    {
        DataTable tbl = GetDataTable_AllActiveRegRefByPatientsOfInternalOrg(organisation_id);

        RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            list[i] = LoadAll(tbl.Rows[i]);
        }
        return(list);
    }
コード例 #9
0
    public static RegisterReferrer[] GetAllByBatchSendAllTreatmentNotes(bool batch_send_all_patients_treatment_notes)
    {
        string    sql = JoinedSql() + " AND r.batch_send_all_patients_treatment_notes = " + (batch_send_all_patients_treatment_notes ? "1" : "0");
        DataTable tbl = DBBase.ExecuteQuery(sql).Tables[0];

        RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            list[i] = LoadAll(tbl.Rows[i]);
        }
        return(list);
    }
コード例 #10
0
    public static RegisterReferrer LoadAll(DataRow row)
    {
        RegisterReferrer rr = Load(row);

        rr.Referrer              = ReferrerDB.Load(row);
        rr.Referrer.Person       = PersonDB.Load(row, "", "person_entity_id");
        rr.Referrer.Person.Title = IDandDescrDB.Load(row, "title_id", "descr");
        if (row["organisation_id"] != DBNull.Value)
        {
            rr.Organisation = OrganisationDB.Load(row, "", "organisation_entity_id", "organisation_is_deleted");
        }
        return(rr);
    }
コード例 #11
0
ファイル: Referral.cs プロジェクト: nblaurenciana-md/Websites
 public Referral(int referral_id, int health_card_id, int medical_service_type_id, int register_referrer_id, 
             DateTime date_referral_signed, DateTime date_referral_received_in_office, 
             int added_or_last_modified_by, DateTime added_or_last_modified_date, 
             int deleted_by, DateTime date_deleted)
 {
     this.referral_id                      = referral_id;
     this.health_card                      = new HealthCard(health_card_id);
     this.medical_service_type             = new IDandDescr(medical_service_type_id);
     this.registerReferrer                 = register_referrer_id == -1 ? null : new RegisterReferrer(register_referrer_id);
     this.date_referral_signed             = date_referral_signed;
     this.date_referral_received_in_office = date_referral_received_in_office;
     this.added_or_last_modified_by        = new Staff(added_or_last_modified_by);
     this.added_or_last_modified_date      = added_or_last_modified_date;
     this.deleted_by                       = deleted_by == -1 ? null : new Staff(deleted_by);
     this.date_deleted                     = date_deleted;
 }
コード例 #12
0
    private static RegisterReferrer[] _GetEPCReferrersOf(int patient_id, bool onlyActive)
    {
        DataTable tbl = onlyActive ? GetDataTable_ActiveEPCReferrersOf(patient_id) : GetDataTable_EPCReferrersOf(patient_id);

        RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            RegisterReferrer rr = RegisterReferrerDB.Load(tbl.Rows[i], "regref_");
            rr.Referrer              = ReferrerDB.Load(tbl.Rows[i], "referrer_");
            rr.Referrer.Person       = PersonDB.Load(tbl.Rows[i], "referrer_person_");
            rr.Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "referrer_person_title_title_id", "referrer_person_title_descr");
            rr.Organisation          = OrganisationDB.Load(tbl.Rows[i], "organisation_");
            list[i] = rr;
        }
        return(list);
    }
コード例 #13
0
 public LetterPrintHistory(int letter_print_history_id, int letter_id, int letter_print_history_send_method_id,
                           int booking_id, int patient_id, int organisation_id, int register_referrer_id,
                           int staff_id, int health_card_action_id, DateTime date, string doc_name, bool has_doc)
 {
     this.letter_print_history_id = letter_print_history_id;
     this.letter                  = letter_id       == -1 ? null : new Letter(letter_id);
     this.send_method             = new IDandDescr(letter_print_history_send_method_id);
     this.booking                 = new Booking(booking_id);
     this.patient                 = patient_id           == -1 ? null : new Patient(patient_id);
     this.organisation            = organisation_id      ==  0 ? null : new Organisation(organisation_id);
     this.register_referrer       = register_referrer_id == -1 ? null : new RegisterReferrer(register_referrer_id);
     this.staff                   = staff_id             == -1 ? null : new Staff(staff_id);
     this.health_card_action      = new HealthCardAction(health_card_action_id);
     this.date                    = date;
     this.doc_name                = doc_name;
     this.has_doc                 = has_doc;
 }
コード例 #14
0
    protected string GetLine(int id, Person p, string colSep, string rowSep, bool incRowSep, bool incDOB, bool incAddresses, bool incPhoneNbrs, bool incRefInfo)
    {
        string result = string.Empty;

        if (incRowSep)
        {
            result += rowSep;
        }
        result += id.ToString() + colSep + p.Firstname + colSep + p.Middlename + colSep + p.Surname;
        if (incDOB)
        {
            result += colSep + (p.Dob == DateTime.MinValue ? "" : p.Dob.ToString("dd-MM-yyyy"));
        }
        if (incAddresses)
        {
            result += colSep + GetAddresses(p.EntityID);
        }
        if (incPhoneNbrs)
        {
            result += colSep + GetPhoneNbrs(p.EntityID);
        }

        if (incRefInfo)
        {
            string orgNames = string.Empty;
            string provNbrs = string.Empty;

            System.Data.DataTable tbl  = RegisterReferrerDB.GetDataTable_OrganisationsOf(id);
            RegisterReferrer[]    list = new RegisterReferrer[tbl.Rows.Count];
            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                list[i] = RegisterReferrerDB.Load(tbl.Rows[i]);
                list[i].Organisation = OrganisationDB.Load(tbl.Rows[i], "", "organisation_entity_id", "organisation_is_deleted");
                orgNames            += (orgNames.Length == 0 ? "" : "\r\n") + list[i].Organisation.Name;
                provNbrs            += (provNbrs.Length == 0 ? "" : "\r\n") + list[i].ProviderNumber;
            }

            result += colSep + orgNames;
            result += colSep + provNbrs;
        }

        return(result);
    }
コード例 #15
0
    protected void GrdReferrer_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label        lblId         = (Label)GrdReferrer.Rows[e.RowIndex].FindControl("lblId");
        DropDownList ddlTitle      = (DropDownList)GrdReferrer.Rows[e.RowIndex].FindControl("ddlTitle");
        TextBox      txtFirstname  = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtFirstname");
        TextBox      txtMiddlename = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtMiddlename");
        TextBox      txtSurname    = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtSurname");
        DropDownList ddlGender     = (DropDownList)GrdReferrer.Rows[e.RowIndex].FindControl("ddlGender");

        TextBox txtName = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtName");
        TextBox txtABN  = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtABN");
        TextBox txtACN  = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtACN");

        TextBox      txtProviderNumber     = (TextBox)GrdReferrer.Rows[e.RowIndex].FindControl("txtProviderNumber");
        DropDownList ddlIsClinic           = (DropDownList)GrdReferrer.Rows[e.RowIndex].FindControl("ddlIsClinic");
        CheckBox     chkIsReportEveryVisit = (CheckBox)GrdReferrer.Rows[e.RowIndex].FindControl("chkIsReportEveryVisit");
        CheckBox     chkIsBatchSendAllPatientsTreatmentNotes = (CheckBox)GrdReferrer.Rows[e.RowIndex].FindControl("chkIsBatchSendAllPatientsTreatmentNotes");


        int registger_referrer_id = Convert.ToInt32(lblId.Text);

        DataTable dt = Session["referrerinfolist_data"] as DataTable;

        DataRow[] foundRows = dt.Select("register_referrer_id=" + registger_referrer_id.ToString());
        DataRow   row       = foundRows[0];

        RegisterReferrer rr = RegisterReferrerDB.Load(row);

        rr.Referrer              = ReferrerDB.Load(row);
        rr.Referrer.Person       = PersonDB.Load(row, "", "person_entity_id");
        rr.Referrer.Person.Title = IDandDescrDB.Load(row, "title_id", "descr");
        if (row["organisation_id"] != DBNull.Value)
        {
            rr.Organisation = OrganisationDB.Load(row, "", "organisation_entity_id", "organisation_is_deleted");
        }

        PersonDB.Update(rr.Referrer.Person.PersonID, Convert.ToInt32(ddlTitle.SelectedValue), Utilities.FormatName(txtFirstname.Text), Utilities.FormatName(txtMiddlename.Text), Utilities.FormatName(txtSurname.Text), row["nickname"].ToString(), ddlGender.SelectedValue, row["dob"] == DBNull.Value ? DateTime.MinValue : Convert.ToDateTime(row["dob"]), DateTime.Now);
        OrganisationDB.UpdateExtOrg(rr.Organisation.OrganisationID, rr.Organisation.OrganisationType.OrganisationTypeID, txtName.Text, txtACN.Text, txtABN.Text, DateTime.Now, rr.Organisation.IsDebtor, rr.Organisation.IsCreditor, rr.Organisation.BpayAccount, rr.Organisation.Comment);
        RegisterReferrerDB.Update(rr.RegisterReferrerID, rr.Organisation.OrganisationID, rr.Referrer.ReferrerID, txtProviderNumber.Text, chkIsReportEveryVisit.Checked, chkIsBatchSendAllPatientsTreatmentNotes.Checked, rr.DateLastBatchSendAllPatientsTreatmentNotes);

        GrdReferrer.EditIndex = -1;
        FillGrid();
    }
コード例 #16
0
    // hashtable: patient_id => RegisterReferrer[]
    public static Hashtable GetEPCReferrersOf(int[] patient_ids, bool onlyActive)
    {
        string sql = JoinedSQL() + @" 
                        AND " + (patient_ids != null && patient_ids.Length > 0 ? " pat.patient_id IN (" + string.Join(",", patient_ids) + @")" : "1 <> 1") + @"
                        " + (onlyActive ? " AND pr.is_active = 1 " : "") + @"
                        ORDER BY patient_referrer_date_added";

        DataTable tbl  = DBBase.ExecuteQuery(sql).Tables[0];
        Hashtable hash = new Hashtable();

        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            RegisterReferrer rr = RegisterReferrerDB.Load(tbl.Rows[i], "regref_");
            rr.Referrer              = ReferrerDB.Load(tbl.Rows[i], "referrer_");
            rr.Referrer.Person       = PersonDB.Load(tbl.Rows[i], "referrer_person_");
            rr.Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "referrer_person_title_title_id", "referrer_person_title_descr");
            rr.Organisation          = OrganisationDB.Load(tbl.Rows[i], "organisation_");

            int patient_id = Convert.ToInt32(tbl.Rows[i]["pr_patient_id"]);
            if (hash[patient_id] == null)
            {
                hash[patient_id] = new System.Collections.ArrayList();
            }
            ((System.Collections.ArrayList)hash[patient_id]).Add(rr);
        }


        // convert from arraylists to arrays
        ArrayList keys = new ArrayList();

        foreach (System.Collections.DictionaryEntry de in hash)
        {
            keys.Add(de.Key);
        }
        foreach (int key in keys)
        {
            hash[key] = (RegisterReferrer[])((ArrayList)hash[key]).ToArray(typeof(RegisterReferrer));
        }
        ;

        return(hash);
    }
コード例 #17
0
    public static RegisterReferrer[] RemoveByID(RegisterReferrer[] registered_referrers, int id_to_remove)
    {
        RegisterReferrer[] newList = new RegisterReferrer[registered_referrers.Length - 1];

        bool found = false;

        for (int i = 0; i < registered_referrers.Length; i++)
        {
            if (registered_referrers[i].RegisterReferrerID != id_to_remove)
            {
                newList[i - (found ? 1 : 0)] = registered_referrers[i];
            }
            else
            {
                found = true;
            }
        }

        return(newList);
    }
コード例 #18
0
    public static Hashtable GetByIDsInHashtable(int[] regRefIDs)
    {
        if (regRefIDs == null || regRefIDs.Length == 0)
        {
            return(new Hashtable());
        }

        Hashtable hash = new Hashtable();

        string    sql = JoinedSql(true, true, true) + @" AND r.register_referrer_id in (" + string.Join(",", regRefIDs) + @")";
        DataTable tbl = DBBase.ExecuteQuery(sql).Tables[0];

        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            RegisterReferrer regRef = LoadAll(tbl.Rows[i]);
            hash[regRef.RegisterReferrerID] = regRef;
        }

        return(hash);
    }
コード例 #19
0
    protected void btnRegisterReferrerSelectionUpdate_Click(object sender, EventArgs e)
    {
        // can update info ... if needed...
        int newRegisterReferrerID = Convert.ToInt32(registerReferrerID.Value);

        if (newRegisterReferrerID == -1)
        {
            lblReferrerText.Text = "<b>All Referreres</b>";
        }
        else
        {
            RegisterReferrer regRef = RegisterReferrerDB.GetByID(newRegisterReferrerID);
            //lblReferrerText.Text = regRef.Referrer.Person.FullnameWithoutMiddlename;

            string phNumTxt = string.Empty;
            if (Utilities.GetAddressType().ToString() == "Contact")
            {
                Contact[] phNums = ContactDB.GetByEntityID(2, regRef.Organisation.EntityID);
                for (int i = 0; i < phNums.Length; i++)
                {
                    phNumTxt += (i > 0 ? "<br />" : "") + Utilities.FormatPhoneNumber(phNums[i].AddrLine1) + " &nbsp;&nbsp; (" + phNums[i].ContactType.Descr + ")";
                }
            }
            else if (Utilities.GetAddressType().ToString() == "ContactAus")
            {
                ContactAus[] phNums = ContactAusDB.GetByEntityID(2, regRef.Organisation.EntityID);
                for (int i = 0; i < phNums.Length; i++)
                {
                    phNumTxt += (i > 0 ? "<br />" : "") + Utilities.FormatPhoneNumber(phNums[i].AddrLine1) + " &nbsp;&nbsp; (" + phNums[i].ContactType.Descr + ")";
                }
            }
            else
            {
                throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString());
            }

            lblReferrerText.Text = "<b>" + regRef.Referrer.Person.FullnameWithoutMiddlename + "</b> [" + regRef.Organisation.Name + "]" + "<br />" +
                                   (phNumTxt.Length == 0 ? "" : phNumTxt + "<br />"); // put in referrers fax and phone numbers
        }
    }
コード例 #20
0
    protected void SetOrUpdateReferrer(int newRegisterReferrerID)
    {
        // if change this back to  " = PatientReferrerDB.GetEPCPatientReferrersOf(patient.PatientID); "  then make sure go through whole list
        PatientReferrer[] patientReferrer = PatientReferrerDB.GetActiveEPCPatientReferrersOf(this.PatientID);
        if (patientReferrer.Length > 0)
        {
            PatientReferrer  currentPatRegReferrer = patientReferrer[patientReferrer.Length - 1];
            RegisterReferrer curRegReferrer        = currentPatRegReferrer.RegisterReferrer;

            if (curRegReferrer.RegisterReferrerID == newRegisterReferrerID)
            {
                return;
            }
            else
            {
                PatientReferrerDB.UpdateSetInactive(currentPatRegReferrer.PatientReferrerID);
            }
        }

        PatientReferrerDB.Insert(this.PatientID, newRegisterReferrerID, 0, false);
        InitForm();
    }
コード例 #21
0
    protected Tuple <string, string, string, string> GetReferrersEmail()
    {
        if (!IsValidFormID())
        {
            return(null);
        }

        Booking booking = BookingDB.GetByEntityID(GetFormID());

        if (booking == null || booking.Patient == null)
        {
            return(null);
        }

        PatientReferrer[] patientReferrer = PatientReferrerDB.GetActiveEPCPatientReferrersOf(booking.Patient.PatientID);
        if (patientReferrer.Length == 0)
        {
            return(null);
        }

        PatientReferrer  currentPatRegReferrer = patientReferrer[patientReferrer.Length - 1];
        RegisterReferrer curRegReferrer        = currentPatRegReferrer.RegisterReferrer;

        //string refName = curRegReferrer.Referrer.Person.Surname + ", " + curRegReferrer.Referrer.Person.Firstname + " [" + curRegReferrer.Organisation.Name + "]" + " [" + currentPatRegReferrer.PatientReferrerDateAdded.ToString("dd-MM-yyyy") + "]";
        //SetErrorMessage("Name: " + refName);

        string[] emails = ContactDB.GetEmailsByEntityID(currentPatRegReferrer.RegisterReferrer.Organisation.EntityID);
        if (emails.Length == 0)
        {
            return(null);
        }

        string refEmail           = string.Join(",", emails);
        string refName            = (curRegReferrer.Referrer.Person.Title.ID == 0 ? "Dr." : curRegReferrer.Referrer.Person.Title.Descr) + " " + curRegReferrer.Referrer.Person.Surname;
        string bookingOrg         = booking.Organisation.Name;
        string bookingPatientName = booking.Patient.Person.FullnameWithoutMiddlename;

        return(new Tuple <string, string, string, string>(refEmail, refName, bookingOrg, bookingPatientName));
    }
    protected void GrdRegistration_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label        lblId                 = (Label)GrdRegistration.Rows[e.RowIndex].FindControl("lblId");
        DropDownList ddlReferrer           = (DropDownList)GrdRegistration.Rows[e.RowIndex].FindControl("ddlReferrer");
        TextBox      txtProviderNumber     = (TextBox)GrdRegistration.Rows[e.RowIndex].FindControl("txtProviderNumber");
        DropDownList ddlIsClinic           = (DropDownList)GrdRegistration.Rows[e.RowIndex].FindControl("ddlIsClinic");
        CheckBox     chkIsReportEveryVisit = (CheckBox)GrdRegistration.Rows[e.RowIndex].FindControl("chkIsReportEveryVisit");
        CheckBox     chkIsBatchSendAllPatientsTreatmentNotes = (CheckBox)GrdRegistration.Rows[e.RowIndex].FindControl("chkIsBatchSendAllPatientsTreatmentNotes");

        Organisation org = OrganisationDB.GetByID(GetFormID());

        if (org == null)
        {
            HideTableAndSetErrorMessage("");
            return;
        }

        RegisterReferrer registerReferrer = RegisterReferrerDB.GetByID(Convert.ToInt32(lblId.Text));

        RegisterReferrerDB.Update(Convert.ToInt32(lblId.Text), org.OrganisationID, Convert.ToInt32(ddlReferrer.SelectedValue), txtProviderNumber.Text, chkIsReportEveryVisit.Checked, chkIsBatchSendAllPatientsTreatmentNotes.Checked, registerReferrer.DateLastBatchSendAllPatientsTreatmentNotes);

        GrdRegistration.EditIndex = -1;
        FillGrid();
    }
コード例 #23
0
    public static RegisterReferrer[] RemoveRegisterReferrersByEmailMobile(
        RegisterReferrer[] regRefs, 
        bool incHasBothMobileEmail,
        bool incHasMobileNoEmail,
        bool incHasEmailNoMobile,
        bool incHasNeitherMobileEmail)
    {
        if (incHasBothMobileEmail && incHasMobileNoEmail && incHasEmailNoMobile && incHasNeitherMobileEmail)
            return regRefs;
        if (!incHasBothMobileEmail && !incHasMobileNoEmail && !incHasEmailNoMobile && !incHasNeitherMobileEmail)
            return new RegisterReferrer[] { };

        int[]     regRefIDs    = regRefs.Select(r => r.RegisterReferrerID).ToArray();
        int[]     entityIDs    = regRefs.Select(r => r.Organisation.EntityID).ToArray();
        Hashtable entityIDHash = RegisterReferrerDB.GetOrgEntityIDsHash(regRefIDs);
        Hashtable regRefIDHash = RegisterReferrerDB.GetByIDsInHashtable(regRefIDs);
        Hashtable emailHash    = PatientsContactCacheDB.GetBullkEmail(entityIDs, -1);
        Hashtable mobileHash   = PatientsContactCacheDB.GetBullkPhoneNumbers(entityIDs, -1, "30");

        ArrayList newList = new ArrayList();
        for (int i = 0; i < regRefs.Length; i++)
        {
            bool hasEmail  = emailHash[regRefs[i].Organisation.EntityID]  != null;
            bool hasMobile = mobileHash[regRefs[i].Organisation.EntityID] != null;

            if ((incHasBothMobileEmail     &&  hasEmail &&  hasMobile) ||
                 (incHasMobileNoEmail      && !hasEmail &&  hasMobile) ||
                 (incHasEmailNoMobile      &&  hasEmail && !hasMobile) ||
                 (incHasNeitherMobileEmail && !hasEmail && !hasMobile))
                newList.Add(regRefs[i]);
        }

        return (RegisterReferrer[])newList.ToArray(typeof(RegisterReferrer));
    }
コード例 #24
0
    public static DataTable GetDataTable_AllNotInc(RegisterReferrer[] excList)
    {
        string notInList = string.Empty;
        foreach (RegisterReferrer p in excList)
            notInList += p.RegisterReferrerID.ToString() + ",";
        if (notInList.Length > 0)
            notInList = notInList.Substring(0, notInList.Length - 1);

        string sql = JoinedSql();

        if (notInList.Length > 0)
            sql += @" AND register_referrer_id NOT IN (" + notInList + @") ";

        sql += @" ORDER BY
                         p.surname, p.firstname, p.middlename, o.name";

        return DBBase.ExecuteQuery(sql).Tables[0];
    }
コード例 #25
0
    public static void GetCountsByEmailMobile(
        RegisterReferrer[] regRefs,
        ref int hasBothMobileEmail,
        ref int hasMobileNoEmail,
        ref int hasEmailNoMobile,
        ref int hasNeitherMobileEmail)
    {
        int[]     regRefIDs    = regRefs.Select(r => r.RegisterReferrerID).ToArray();
        int[]     entityIDs    = regRefs.Select(r => r.Organisation.EntityID).ToArray();
        Hashtable entityIDHash = RegisterReferrerDB.GetOrgEntityIDsHash(regRefIDs);
        Hashtable regRefIDHash = RegisterReferrerDB.GetByIDsInHashtable(regRefIDs);
        Hashtable emailHash    = PatientsContactCacheDB.GetBullkEmail(entityIDs, -1);
        Hashtable mobileHash   = PatientsContactCacheDB.GetBullkPhoneNumbers(entityIDs, -1, "30");

        hasBothMobileEmail    = 0;
        hasMobileNoEmail      = 0;
        hasEmailNoMobile      = 0;
        hasNeitherMobileEmail = 0;

        for (int i = 0; i < regRefs.Length; i++)
        {
            bool hasEmail  = emailHash[regRefs[i].Organisation.EntityID]  != null;
            bool hasMobile = mobileHash[regRefs[i].Organisation.EntityID] != null;

            if (hasEmail  &&  hasMobile)
                hasBothMobileEmail++;
            if (!hasEmail &&  hasMobile)
                hasMobileNoEmail++;
            if (hasEmail  && !hasMobile)
                hasEmailNoMobile++;
            if (!hasEmail && !hasMobile)
                hasNeitherMobileEmail++;
        }
    }
コード例 #26
0
    public static Patient[] GetAllNotInc(RegisterReferrer[] excList)
    {
        DataTable tbl = GetDataTable_AllNotInc(excList);
        Patient[] list = new Patient[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            list[i] = PatientDB.Load(tbl.Rows[i]);
            list[i].Person = PersonDB.Load(tbl.Rows[i]);
            list[i].Person.Title = IDandDescrDB.Load(tbl.Rows[i], "type_id", "descr");
        }

        return list;
    }
コード例 #27
0
 public static RegisterReferrer[] GetAllByBatchSendAllTreatmentNotes(bool batch_send_all_patients_treatment_notes)
 {
     string sql = JoinedSql() + " AND r.batch_send_all_patients_treatment_notes = " + (batch_send_all_patients_treatment_notes ? "1" : "0");
     DataTable tbl = DBBase.ExecuteQuery(sql).Tables[0];
     RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
     for (int i = 0; i < tbl.Rows.Count; i++)
         list[i] = LoadAll(tbl.Rows[i]);
     return list;
 }
コード例 #28
0
 public static RegisterReferrer[] GetAllActiveRegRefByPatientsOfInternalOrg(int organisation_id)
 {
     DataTable tbl = GetDataTable_AllActiveRegRefByPatientsOfInternalOrg(organisation_id);
     RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
     for (int i = 0; i < tbl.Rows.Count; i++)
         list[i] = LoadAll(tbl.Rows[i]);
     return list;
 }
コード例 #29
0
    protected void UpdateReferrersAtOrgList()
    {
        if (ddlOrgsList.SelectedIndex == -1)
            return;

        lblProvidersOf.Visible = true;

        lblSelectedOrg.Text = ddlOrgsList.Items[ddlOrgsList.SelectedIndex].Text;

        DataTable tbl = RegisterReferrerDB.GetDataTable_ReferrersOf(Convert.ToInt32(ddlOrgsList.Items[ddlOrgsList.SelectedIndex].Value));
        RegisterReferrer[] regRefs = new RegisterReferrer[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            regRefs[i]                       = RegisterReferrerDB.Load(tbl.Rows[i]);
            regRefs[i].Referrer              = ReferrerDB.Load(tbl.Rows[i]);
            regRefs[i].Referrer.Person       = PersonDB.Load(tbl.Rows[i], "", "person_entity_id");
            regRefs[i].Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "title_id", "descr");
        }
        string list = tbl.Rows.Count == 0 ? string.Empty : @"<table cellpadding=""0"" cellspacing=""0"">";
        foreach (RegisterReferrer regRef in regRefs)
        {
            string url = "ReferrerList_DoctorClinicV2.aspx?surname_search=" + regRef.Referrer.Person.Surname + @"&surname_starts_with=1" + (regRef.ProviderNumber.Length > 0 ? "&provider_nbr_search=" + regRef.ProviderNumber + "&provider_nbr_starts_with=1" : "");
            string href = @"<a href=""" + url + @""">" + regRef.Referrer.Person.FullnameWithoutMiddlename + "</a>";
            list += "<tr><td>" + href + @"</td><td style=""width:8px;"">&nbsp;</td><td> Prov Nbr: " + (regRef.ProviderNumber.Trim().Length == 0 ? "[None]" : regRef.ProviderNumber) + "</td></tr>";
        }
        list += tbl.Rows.Count == 0 ? string.Empty : "</table>";

        lblProvidersOfSelectedOrg.Text = list.Length > 0 ? list : "None";
    }
コード例 #30
0
    protected void InitForm(int patientID)
    {
        HideAllRows();

        string url     = "/PatientReferrerHistoryPopupV2.aspx?id=" + patientID;
        string text    = "History";
        string onclick = @"onclick=""open_new_tab('" + url + @"');return false;""";

        lblPatientReferrerHistoryPopup.Text = "<a " + onclick + " href=\"\">" + text + "</a>";


        PatientReferrer[] patientReferrer = PatientReferrerDB.GetActiveEPCPatientReferrersOf(patientID);  // = PatientReferrerDB.GetEPCPatientReferrersOf(patient.PatientID);
        if (patientReferrer.Length > 0)
        {
            PatientReferrer  currentPatRegReferrer = patientReferrer[patientReferrer.Length - 1]; // get latest
            RegisterReferrer curRegReferrer        = currentPatRegReferrer.RegisterReferrer;

            displayHaveReferrerRow.Visible = true;

            // only allow removing a referrer if no EPC set [ie no active healthcard, or healthcard with neither date set]
            HealthCard hc          = HealthCardDB.GetActiveByPatientID(patientID);
            bool       allowDelete = hc == null || !hc.HasEPC();
            btnDelete.Visible = allowDelete;
            lblDeleteRegistrationReferrerBtnSeperator.Visible = allowDelete;

            //lblReferrer.Text = curRegReferrer.Referrer.Person.Surname + ", " + curRegReferrer.Referrer.Person.Firstname + " [" + curRegReferrer.Organisation.Name + "]" + " [" + currentPatRegReferrer.PatientReferrerDateAdded.ToString("dd-MM-yyyy") + "]";

            string phNumTxt = string.Empty;

            if (Utilities.GetAddressType().ToString() == "Contact")
            {
                Contact[] phNums = ContactDB.GetByEntityID(2, curRegReferrer.Organisation.EntityID);
                for (int i = 0; i < phNums.Length; i++)
                {
                    phNumTxt += (i > 0 ? "<br />" : "") + Utilities.FormatPhoneNumber(phNums[i].AddrLine1) + " &nbsp;&nbsp; (" + phNums[i].ContactType.Descr + ")";
                }
            }
            else if (Utilities.GetAddressType().ToString() == "ContactAus")
            {
                ContactAus[] phNums = ContactAusDB.GetByEntityID(2, curRegReferrer.Organisation.EntityID);
                for (int i = 0; i < phNums.Length; i++)
                {
                    phNumTxt += (i > 0 ? "<br />" : "") + Utilities.FormatPhoneNumber(phNums[i].AddrLine1) + " &nbsp;&nbsp; (" + phNums[i].ContactType.Descr + ")";
                }
            }
            else
            {
                throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString());
            }

            lblReferrer.Text = curRegReferrer.Referrer.Person.Surname + ", " + curRegReferrer.Referrer.Person.Firstname + (curRegReferrer.Organisation.Name.Length == 0 ? "" : " [" + curRegReferrer.Organisation.Name + "]") + "<br />" + Environment.NewLine +
                               "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" + Environment.NewLine +
                               "<tr><td>" + "Provider Nbr:" + "</td><td style=\"width:12px\"></td><td><font color=\"#A52A2A\">" + currentPatRegReferrer.RegisterReferrer.ProviderNumber + "</font></td></tr>" + Environment.NewLine +
                               "<tr><td>" + "Date Added:" + "</td><td style=\"width:12px\"></td><td><font color=\"#A52A2A\">" + currentPatRegReferrer.PatientReferrerDateAdded.ToString("dd-MM-yyyy") + "</font></td></tr>" + Environment.NewLine +
                               "</table>" + Environment.NewLine +
                               (phNumTxt.Length == 0 ? "" : phNumTxt + "<br />"); // put in referrers fax and phone numbers

            lblReferrerRegisterID.Text = curRegReferrer.RegisterReferrerID.ToString();
        }
        else
        {
            displayNoReferrerRow.Visible = true;
        }
    }
コード例 #31
0
ファイル: Letter.cs プロジェクト: mcep/Mediclinic
    protected static void MergeDocument(string sourceTemplatePath, string outputDocPath,
                    Booking booking, Patient patient, Contact patientAddress, ContactAus patientAddressAus, Contact patientPhone, ContactAus patientPhoneAus, HealthCard medicareCard, HealthCard dvaCard, Site site,
                    Organisation org, Contact orgAddress, ContactAus orgAddressAus, Contact orgPhone, ContactAus orgPhoneAus, Contact orgFax, ContactAus orgFaxAus, Contact orgWeb, ContactAus orgWebAus, Contact orgEmail, ContactAus orgEmailAus,
                    Staff staff, RegisterReferrer regReferrer, Contact referrerAddress, ContactAus referrerAddressAus, Contact referrerPhone, ContactAus referrerPhoneAus, Contact referrerFax, ContactAus referrerFaxAus, HealthCardAction healthCardAction,

                    DateTime pt_last_bk_date, DateTime epc_expire_date, int      epc_count_remaining, 

                    bool isDoubleSidedPrinting, string[] extraPages,
                    bool keepHistoryInDB, bool keepHistoryInFile, int letterPrintHistorySendMethodID, string historyDir, string historyFileName, int letterID)
    {
        HealthCard activeHcCard = (medicareCard != null && medicareCard.IsActive) ? medicareCard : ((dvaCard != null && dvaCard.IsActive) ? dvaCard : null);

        DataSet sourceDataSet = new DataSet();
        sourceDataSet.Tables.Add("MergeIt");

        sourceDataSet.Tables[0].Columns.Add("curr_date");

        sourceDataSet.Tables[0].Columns.Add("pt_name");
        sourceDataSet.Tables[0].Columns.Add("pt_title");
        sourceDataSet.Tables[0].Columns.Add("pt_firstname");
        sourceDataSet.Tables[0].Columns.Add("pt_middlename");
        sourceDataSet.Tables[0].Columns.Add("pt_surname");
        sourceDataSet.Tables[0].Columns.Add("pt_gender");
        sourceDataSet.Tables[0].Columns.Add("pt_dob");
        sourceDataSet.Tables[0].Columns.Add("pt_dob_day_month_only");

        sourceDataSet.Tables[0].Columns.Add("pt_conditions");

        sourceDataSet.Tables[0].Columns.Add("pt_addr");
        sourceDataSet.Tables[0].Columns.Add("pt_addr_tabbedx1");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_line1");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_line2");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_street");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_suburb");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_postcode");
        //sourceDataSet.Tables[0].Columns.Add("pt_addr_country");
        sourceDataSet.Tables[0].Columns.Add("pt_phone");

        sourceDataSet.Tables[0].Columns.Add("pt_last_bk_date");

        sourceDataSet.Tables[0].Columns.Add("pt_hc_card_nbr");
        sourceDataSet.Tables[0].Columns.Add("pt_hc_card_name");
        sourceDataSet.Tables[0].Columns.Add("pt_hc_card_refsigneddate");
        sourceDataSet.Tables[0].Columns.Add("pt_epc_expire_date");
        sourceDataSet.Tables[0].Columns.Add("pt_epc_count_remaining");

        sourceDataSet.Tables[0].Columns.Add("pt_mc_card_nbr");
        sourceDataSet.Tables[0].Columns.Add("pt_mc_card_name");
        sourceDataSet.Tables[0].Columns.Add("pt_mc_card_refsigneddate");

        sourceDataSet.Tables[0].Columns.Add("pt_dvacard_nbr");
        sourceDataSet.Tables[0].Columns.Add("pt_dvacard_name");
        sourceDataSet.Tables[0].Columns.Add("pt_dvacard_refsigneddate");

        sourceDataSet.Tables[0].Columns.Add("org_name");
        sourceDataSet.Tables[0].Columns.Add("org_abn");
        sourceDataSet.Tables[0].Columns.Add("org_acn");
        sourceDataSet.Tables[0].Columns.Add("org_bpay_account");

        sourceDataSet.Tables[0].Columns.Add("org_addr");
        sourceDataSet.Tables[0].Columns.Add("org_addr_tabbedx1");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_line1");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_line2");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_street");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_suburb");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_postcode");
        //sourceDataSet.Tables[0].Columns.Add("org_addr_country");
        sourceDataSet.Tables[0].Columns.Add("org_phone");
        sourceDataSet.Tables[0].Columns.Add("org_office_fax");
        sourceDataSet.Tables[0].Columns.Add("org_web");
        sourceDataSet.Tables[0].Columns.Add("org_email");

        sourceDataSet.Tables[0].Columns.Add("ref_name");
        sourceDataSet.Tables[0].Columns.Add("ref_title");
        sourceDataSet.Tables[0].Columns.Add("ref_firstname");
        sourceDataSet.Tables[0].Columns.Add("ref_middlename");
        sourceDataSet.Tables[0].Columns.Add("ref_surname");
        //sourceDataSet.Tables[0].Columns.Add("ref_gender");
        //sourceDataSet.Tables[0].Columns.Add("ref_dob");

        sourceDataSet.Tables[0].Columns.Add("ref_addr");
        sourceDataSet.Tables[0].Columns.Add("ref_addr_tabbedx1");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_line1");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_line2");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_street");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_suburb");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_postcode");
        //sourceDataSet.Tables[0].Columns.Add("ref_addr_country");
        sourceDataSet.Tables[0].Columns.Add("ref_phone");
        sourceDataSet.Tables[0].Columns.Add("ref_fax");

        sourceDataSet.Tables[0].Columns.Add("bk_date");
        sourceDataSet.Tables[0].Columns.Add("bk_time");
        sourceDataSet.Tables[0].Columns.Add("bk_length");

        sourceDataSet.Tables[0].Columns.Add("bk_prov_name");
        sourceDataSet.Tables[0].Columns.Add("bk_prov_title");
        sourceDataSet.Tables[0].Columns.Add("bk_prov_firstname");
        sourceDataSet.Tables[0].Columns.Add("bk_prov_middlename");
        sourceDataSet.Tables[0].Columns.Add("bk_prov_surname");
        sourceDataSet.Tables[0].Columns.Add("bk_prov_number");
        //sourceDataSet.Tables[0].Columns.Add("bk_prov_gender");
        //sourceDataSet.Tables[0].Columns.Add("bk_prov_dob");

        sourceDataSet.Tables[0].Columns.Add("bk_treatment_notes");

        sourceDataSet.Tables[0].Columns.Add("bk_offering_name");
        sourceDataSet.Tables[0].Columns.Add("bk_offering_short_name");
        sourceDataSet.Tables[0].Columns.Add("bk_offering_descr");

        string bookingNotes = string.Empty;
        if (booking != null)
        {
            if (booking.Patient != null)
            {
                foreach (Note note in booking.GetTreatmentNotes())
                    bookingNotes += "Treatment Note:" + Environment.NewLine + Environment.NewLine + note.Text + Environment.NewLine + Environment.NewLine;
            }
            else if (patient != null) // group bookings - but need patientID
            {
                BookingPatient bp = BookingPatientDB.GetByBookingAndPatientID(booking.BookingID, patient.PatientID);
                if (bp != null)
                    foreach (Note note in NoteDB.GetByEntityID(bp.EntityID, "252"))
                        bookingNotes += "Treatment Note:" + Environment.NewLine + Environment.NewLine + note.Text + Environment.NewLine + Environment.NewLine;
            }

        }

        /*  -- for testing
            string s1 = patient == null ? "No patient found" : patient.Person.FullnameWithTitleWithoutMiddlename;
            string s2 = patient == null ? "No patient found" : (patient.Person.Title.ID == 0 ? "" : patient.Person.Title.Descr);
            string s3 = patient == null ? "" : patient.Person.Firstname;
            string s4 = patient == null ? "" : patient.Person.Middlename;
            string s5 = patient == null ? "" : patient.Person.Surname;
            string s6 = patient == null ? "" : patient.Person.Gender;
            string s7 = patient == null ? "" : patient.Person.Dob == DateTime.MinValue ? "" : patient.Person.Dob.ToString("d MMMM, yyyy");

            string s8 = patientAddress == null ? "No address found" : patientAddress.AddrLine1;
            string s9 = patientAddress == null ? "" : patientAddress.AddrLine2;
            string s10 = patientAddress == null || patientAddress.AddressChannel == null ? "" : (patientAddress.AddressChannel.AddressChannelID == 1 ? "" : patientAddress.AddressChannel.DisplayName);
            string s11 = patientAddress == null ? "" : patientAddress.Suburb.Name;
            string s12 = patientAddress == null ? "" : patientAddress.Suburb.Postcode;
            string s13 = patientAddress == null || patientAddress.Country == null ? "" : patientAddress.Country.Descr;

            string s14 = activeHcCard == null ? "No hc card found" : activeHcCard.CardNbr + " - " + activeHcCard.CardFamilyMemberNbr;
            string s15 = activeHcCard == null ? "" : activeHcCard.CardName;
            string s16 = activeHcCard == null ? "" : activeHcCard.DateReferralSigned.ToString("d MMMM, yyyy");

            string s17 = medicareCard == null ? "No medicare card found" : medicareCard.CardNbr + " - " + medicareCard.CardFamilyMemberNbr;
            string s18 = medicareCard == null ? "" : medicareCard.CardName;
            string s19 = medicareCard == null ? "" : medicareCard.DateReferralSigned.ToString("d MMMM, yyyy");

            string s20 = dvaCard == null ? "No dva card found" : dvaCard.CardNbr;
            string s21 = dvaCard == null ? "" : dvaCard.CardName;
            string s22 = dvaCard == null ? "" : dvaCard.DateReferralSigned.ToString("d MMMM, yyyy");

            string s23 = org != null ? org.Name        : site.Name;
            string s24 = org != null ? org.Abn         : site.Abn;
            string s25 = org != null ? org.Acn         : site.Acn;
            string s26 = org != null ? org.BpayAccount : site.BankBpay;

            string s27 = orgAddress == null ? "No address found" : orgAddress.AddrLine1;
            string s28 = orgAddress == null ? "" : orgAddress.AddrLine2;
            string s29 = orgAddress == null ? "" : (orgAddress.AddressChannel.AddressChannelID == 1 ? "" : orgAddress.AddressChannel.DisplayName);
            string s30 = orgAddress == null ? "" : orgAddress.Suburb.Name;
            string s31 = orgAddress == null ? "" : orgAddress.Suburb.Postcode;
            string s32 = orgAddress == null || orgAddress.Country == null ? "" : orgAddress.Country.Descr;

            string s33 = regReferrer == null ? "No referrer found" : regReferrer.Referrer.Person.FullnameWithTitleWithoutMiddlename;
            string s34 = regReferrer == null ? "No referrer found" : (regReferrer.Referrer.Person.Title.ID == 0 ? "" : regReferrer.Referrer.Person.Title.Descr);
            string s35 = regReferrer == null ? "" : regReferrer.Referrer.Person.Firstname;
            string s36 = regReferrer == null ? "" : regReferrer.Referrer.Person.Middlename;
            string s37 = regReferrer == null ? "" : regReferrer.Referrer.Person.Surname;
            string s38 = regReferrer == null ? "" : regReferrer.Referrer.Person.Gender;
            string s39 = regReferrer == null ? "" : regReferrer.Referrer.Person.Dob.ToString("d MMMM, yyyy");

            string s40 = referrerAddress == null ? "No address found" : referrerAddress.AddrLine1;
            string s41 = referrerAddress == null ? "" : referrerAddress.AddrLine2;
            string s42 = referrerAddress == null ? "" : (referrerAddress.AddressChannel.AddressChannelID == 1 ? "" : referrerAddress.AddressChannel.DisplayName);
            string s43 = referrerAddress == null ? "" : referrerAddress.Suburb.Name;
            string s44 = referrerAddress == null ? "" : referrerAddress.Suburb.Postcode;
            string s45 = referrerAddress == null || referrerAddress.Country == null ? "" : referrerAddress.Country.Descr;

            string s46 = booking == null ? "" : booking.DateStart.ToString("d MMMM, yyyy");
            string s47 = booking == null ? "" : booking.DateStart.ToString("HH:mm");

            string s48 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.FullnameWithTitleWithoutMiddlename;
            string s49 = booking == null || booking.Provider == null ? "" : (booking.Provider.Person.Title.ID == 0 ? "" : booking.Provider.Person.Title.Descr);
            string s50 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.Firstname;
            string s51 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.Middlename;
            string s52 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.Surname;
            string s53 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.Gender;
            string s54 = booking == null || booking.Provider == null ? "" : booking.Provider.Person.Dob.ToString("d MMMM, yyyy");

            string s55 = booking == null ? "" : bookingNotes;

            string s56 = booking == null || booking.Offering == null ? "" : booking.Offering.Name;
            string s57 = booking == null || booking.Offering == null ? "" : booking.Offering.ShortName;
            string s58 = booking == null || booking.Offering == null ? "" : booking.Offering.Descr;
        */

        string patientAddressText  , patientAddressTabbedText  , patientPhoneText;
        string orgAddressText      , orgAddressTabbedText      , orgPhoneText       , orgFaxText, orgWebText, orgEmailText;
        string referrerAddressText , referrerAddressTabbedText , referrerPhoneText, referrerFaxText;
        if (Utilities.GetAddressType().ToString() == "Contact")
        {
            patientAddressText        = patientAddress == null    ? "No address found"      : patientAddress.GetFormattedAddress("No address found");
            patientAddressTabbedText  = patientAddress == null    ? "No address found"      : patientAddress.GetFormattedAddress("No address found", 1);
            orgAddressText            = orgAddress     == null    ? "No address found"      : orgAddress.GetFormattedAddress("No address found");
            orgAddressTabbedText      = orgAddress     == null    ? "No address found"      : orgAddress.GetFormattedAddress("No address found", 1);
            referrerAddressText       = orgAddress     == null    ? "No address found"      : referrerAddress.GetFormattedAddress("No address found");
            referrerAddressTabbedText = orgAddress     == null    ? "No address found"      : referrerAddress.GetFormattedAddress("No address found", 1);
            patientPhoneText          = patientPhone   == null    ? "No phone number found" : patientPhone.GetFormattedPhoneNumber("No phone number found");
            orgPhoneText              = orgPhone       == null    ? "No phone number found" : orgPhone.GetFormattedPhoneNumber("No phone number found");
            referrerPhoneText         = referrerPhone  == null    ? "No phone number found" : referrerPhone.GetFormattedPhoneNumber("No phone number found");
            referrerFaxText           = referrerFax    == null    ? "No fax number found"   : referrerFax.GetFormattedPhoneNumber("No fax number found");
            orgFaxText                = orgFax         == null    ? "No fax number found"   : orgFax.GetFormattedPhoneNumber("No fax number found");
            orgWebText                = orgWeb         == null    ? "No website found"      : orgWeb.AddrLine1;
            orgEmailText              = orgEmail       == null    ? "No email found"        : orgEmail.AddrLine1;
        }
        else if (Utilities.GetAddressType().ToString() == "ContactAus")
        {
            patientAddressText        = patientAddressAus  == null ? "No address found"      : patientAddressAus.GetFormattedAddress("No address found");
            patientAddressTabbedText  = patientAddressAus  == null ? "No address found"      : patientAddressAus.GetFormattedAddress("No address found", 1);
            orgAddressText            = orgAddressAus      == null ? "No address found"      : orgAddressAus.GetFormattedAddress("No address found");
            orgAddressTabbedText      = orgAddressAus      == null ? "No address found"      : orgAddressAus.GetFormattedAddress("No address found", 1);
            referrerAddressText       = referrerAddressAus == null ? "No address found"      : referrerAddressAus.GetFormattedAddress("No address found");
            referrerAddressTabbedText = referrerAddressAus == null ? "No address found"      : referrerAddressAus.GetFormattedAddress("No address found", 1);
            patientPhoneText          = patientPhoneAus    == null ? "No phone number found" : patientPhoneAus.GetFormattedPhoneNumber("No phone number found");
            orgPhoneText              = orgPhoneAus        == null ? "No phone number found" : orgPhoneAus.GetFormattedPhoneNumber("No phone number found");
            referrerPhoneText         = referrerPhoneAus   == null ? "No phone number found" : referrerPhoneAus.GetFormattedPhoneNumber("No phone number found");
            referrerFaxText           = referrerFaxAus     == null ? "No fax number found"   : referrerFaxAus.GetFormattedPhoneNumber("No fax number found");
            orgFaxText                = orgFaxAus          == null ? "No fax number found"   : orgFaxAus.GetFormattedPhoneNumber("No fax number found");
            orgWebText                = orgWebAus          == null ? "No website found"      : orgWebAus.AddrLine1;
            orgEmailText              = orgEmailAus        == null ? "No email found"        : orgEmailAus.AddrLine1;
        }
        else
            throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString());

        string    ptConditionsText   = string.Empty;
        Hashtable selectedConditions = PatientConditionDB.GetHashtable_ByPatientID(patient.PatientID, false);
        foreach (Condition condition in ConditionDB.GetAll())
            if (selectedConditions[condition.ConditionID] != null)
                ptConditionsText += (ptConditionsText.Length == 0 ? "" : Environment.NewLine) + " • " + ((PatientCondition)selectedConditions[condition.ConditionID]).Condition.Descr;
        if (ptConditionsText == string.Empty)
            ptConditionsText = " • None";

        string bk_prov_number = string.Empty;
        if (booking != null && booking.Provider != null && booking.Organisation != null)
        {
            RegisterStaff regStaff = RegisterStaffDB.GetByStaffIDAndOrganisationID(booking.Provider.StaffID, booking.Organisation.OrganisationID);
            bk_prov_number = (regStaff == null) ? string.Empty : regStaff.ProviderNumber;
        }

        TimeSpan bkTime = booking != null ? booking.DateEnd.Subtract(booking.DateStart) : TimeSpan.Zero;
        string bkTimeLength;
        if (bkTime.Minutes > 0 && bkTime.Hours > 0)
            bkTimeLength = bkTime.Hours + (bkTime.Hours > 1 ? "hrs " : "hr ") + bkTime.Minutes + " minutes";
        else if (bkTime.Hours > 0)
            bkTimeLength = bkTime.Hours + (bkTime.Hours > 1 ? "hours " : "hour ");
        else if (bkTime.Minutes > 0)
            bkTimeLength = bkTime.Minutes + bkTime.Minutes + " minutes";
        else
            bkTimeLength = bkTime.Minutes + " minutes";

        sourceDataSet.Tables[0].Rows.Add(

            DateTime.Now.ToString("d MMMM, yyyy"),

            patient == null ? "No patient found" : patient.Person.FullnameWithTitleWithoutMiddlename,
            patient == null ? "No patient found" : (patient.Person.Title.ID == 0 ? "" : patient.Person.Title.Descr),
            patient == null ? "" : patient.Person.Firstname,
            patient == null ? "" : patient.Person.Middlename,
            patient == null ? "" : patient.Person.Surname,
            patient == null ? "" : patient.Person.Gender,
            patient == null ? "" : patient.Person.Dob == DateTime.MinValue ? (object)DBNull.Value : patient.Person.Dob.ToString("d MMMM, yyyy"),
            patient == null ? "" : patient.Person.Dob == DateTime.MinValue ? (object)DBNull.Value : patient.Person.Dob.ToString("MMMM ") + Utilities.GetDateOrdinal(patient.Person.Dob.Day),

            ptConditionsText,

            patientAddressText,
            patientAddressTabbedText,
            //patientAddress == null                                          ? "No address found" : patientAddress.AddrLine1,
            //patientAddress == null                                          ? "" : patientAddress.AddrLine2,
            //patientAddress == null || patientAddress.AddressChannel == null ? "" : (patientAddress.AddressChannel.AddressChannelID == 1 ? "" : patientAddress.AddressChannel.DisplayName),
            //patientAddress == null || patientAddress.Suburb  == null        ? "" : patientAddress.Suburb.Name,
            //patientAddress == null || patientAddress.Suburb  == null        ? "" : patientAddress.Suburb.Postcode,
            //patientAddress == null || patientAddress.Country == null        ? "" : patientAddress.Country.Descr,
            patientPhoneText,

            pt_last_bk_date == DateTime.MinValue ? "No previous bookings found" : pt_last_bk_date.ToString("d MMMM, yyyy"),

            activeHcCard == null ? "No hc card found" : activeHcCard.CardNbr + " - " + activeHcCard.CardFamilyMemberNbr,
            activeHcCard == null ? "" : activeHcCard.CardName,
            activeHcCard == null ? (object)"" : activeHcCard.DateReferralSigned.ToString("d MMMM, yyyy"),
            epc_expire_date == DateTime.MinValue ? (object)"" : epc_expire_date.ToString("d MMMM, yyyy"),
            epc_expire_date == DateTime.MinValue ? (object)"" : epc_count_remaining,

            medicareCard == null ? "No medicare card found" : medicareCard.CardNbr + " - " + medicareCard.CardFamilyMemberNbr,
            medicareCard == null ? " " : medicareCard.CardName,
            medicareCard == null ? (object)" " : medicareCard.DateReferralSigned.ToString("d MMMM, yyyy"),

            dvaCard == null ? "No dva card found" : dvaCard.CardNbr,
            dvaCard == null ? "" : dvaCard.CardName,
            dvaCard == null ? (object)"" : dvaCard.DateReferralSigned.ToString("d MMMM, yyyy"),

            org != null ? org.Name        : site.Name,
            org != null ? org.Abn         : site.Abn,
            org != null ? org.Acn         : site.Acn,
            org != null ? org.BpayAccount : site.BankBpay,

            orgAddressText,
            orgAddressTabbedText,
            //orgAddress == null ? "No address found" : orgAddress.AddrLine1,
            //orgAddress == null ? "" : orgAddress.AddrLine2,
            //orgAddress == null ? "" : (orgAddress.AddressChannel.AddressChannelID == 1 ? "" : orgAddress.AddressChannel.DisplayName),
            //orgAddress == null ? "" : orgAddress.Suburb.Name,
            //orgAddress == null ? "" : orgAddress.Suburb.Postcode,
            //orgAddress == null || orgAddress.Country == null ? "" : orgAddress.Country.Descr,
            orgPhoneText,
            orgFaxText,
            orgWebText,
            orgEmailText,

            regReferrer == null ? "No referrer found" : regReferrer.Referrer.Person.FullnameWithTitleWithoutMiddlename,
            regReferrer == null ? "No referrer found" : (regReferrer.Referrer.Person.Title.ID == 0 ? "" : regReferrer.Referrer.Person.Title.Descr),
            regReferrer == null ? "" : regReferrer.Referrer.Person.Firstname,
            regReferrer == null ? "" : regReferrer.Referrer.Person.Middlename,
            regReferrer == null ? "" : regReferrer.Referrer.Person.Surname,
            //regReferrer == null ? "" : regReferrer.Referrer.Person.Gender,
            //regReferrer == null ? (object)"" : regReferrer.Referrer.Person.Dob.ToString("d MMMM, yyyy"),

            referrerAddressText,
            referrerAddressTabbedText,
            //referrerAddress == null ? "No address found" : referrerAddress.AddrLine1,
            //referrerAddress == null ? "" : referrerAddress.AddrLine2,
            //referrerAddress == null ? "" : (referrerAddress.AddressChannel.AddressChannelID == 1 ? "" : referrerAddress.AddressChannel.DisplayName),
            //referrerAddress == null ? "" : referrerAddress.Suburb.Name,
            //referrerAddress == null ? "" : referrerAddress.Suburb.Postcode,
            //referrerAddress == null || referrerAddress.Country == null ? "" : referrerAddress.Country.Descr,
            referrerPhoneText,
            referrerFaxText,

            booking == null ? "" : booking.DateStart.ToString("d MMMM, yyyy"),
            booking == null ? "" : booking.DateStart.ToString("HH:mm"),
            booking == null ? "" : bkTimeLength,

            booking == null || booking.Provider == null ? "" : booking.Provider.Person.FullnameWithTitleWithoutMiddlename,
            booking == null || booking.Provider == null ? "" : (booking.Provider.Person.Title.ID == 0 ? "" : booking.Provider.Person.Title.Descr),
            booking == null || booking.Provider == null ? "" : booking.Provider.Person.Firstname,
            booking == null || booking.Provider == null ? "" : booking.Provider.Person.Middlename,
            booking == null || booking.Provider == null ? "" : booking.Provider.Person.Surname,
            bk_prov_number,
            //booking == null || booking.Provider == null ? "" : booking.Provider.Person.Gender,
            //booking == null || booking.Provider == null ? "" : booking.Provider.Person.Dob.ToString("d MMMM, yyyy"),

            booking == null ? "" : bookingNotes,

            booking == null || booking.Offering == null ? "" : booking.Offering.Name,
            booking == null || booking.Offering == null ? "" : booking.Offering.ShortName,
            booking == null || booking.Offering == null ? "" : booking.Offering.Descr

            );

        //now merge
        string errorString = string.Empty;
        //if (!OfficeInterop.MailMerge.MergeDataWithWordTemplate(sourceTemplatePath, outputDocPath, sourceDataSet, isDoubleSidedPrinting, extraPages, out errorString))
        //    throw new CustomMessageException("Error:" + errorString);
        if (!WordMailMerger.Merge(sourceTemplatePath, outputDocPath, sourceDataSet, null, 0, false, isDoubleSidedPrinting, extraPages, true, null, out errorString))
            throw new CustomMessageException("Error:" + errorString);

        if (!historyDir.EndsWith(@"\"))
            historyDir += @"\";

        //
        // create pdf file to be stored because it's much smaller in size
        //
        string tmpLettersDirectory = Letter.GetTempLettersDirectory();
        if (!System.IO.Directory.Exists(tmpLettersDirectory))
            throw new CustomMessageException("Temp letters directory doesn't exist");
        string outputDocPathPDF = FileHelper.GetTempFileName(tmpLettersDirectory + Path.ChangeExtension(historyFileName, ".pdf"));
        string _errorString = string.Empty;
        if (keepHistoryInDB || keepHistoryInFile)
            OfficeInterop.FormatConverter.WordToPDF(outputDocPath, outputDocPathPDF, out _errorString);

        if (keepHistoryInDB)
        {
            byte[] doc_contents = System.IO.File.ReadAllBytes(outputDocPathPDF);
            int letterHistoryID = LetterPrintHistoryDB.Insert(letterID, letterPrintHistorySendMethodID, booking == null ? -1 : booking.BookingID, patient == null ? -1 : patient.PatientID, org != null ? org.OrganisationID : 0, regReferrer == null ? -1 : regReferrer.RegisterReferrerID, staff.StaffID, -1, historyFileName, doc_contents);

            if (keepHistoryInFile)
            {
                string filePath = historyDir + letterHistoryID + System.IO.Path.GetExtension(outputDocPathPDF);
                if (System.IO.File.Exists(filePath))
                    throw new CustomMessageException("File already exists: " + filePath);
                if (!Directory.Exists(historyDir))
                    Directory.CreateDirectory(historyDir);
                System.IO.File.Copy(outputDocPathPDF, filePath);
            }
        }
        else if (keepHistoryInFile)
        {
            int letterHistoryID = LetterPrintHistoryDB.Insert(letterID, letterPrintHistorySendMethodID, booking == null ? -1 : booking.BookingID, patient == null ? -1 : patient.PatientID, org != null ? org.OrganisationID : 0, regReferrer == null ? -1 : regReferrer.RegisterReferrerID, staff == null ? -1 : staff.StaffID, healthCardAction == null ? -1 : healthCardAction.HealthCardActionID, historyFileName, null);

            string filePath = historyDir + letterHistoryID + System.IO.Path.GetExtension(outputDocPathPDF);
            if (System.IO.File.Exists(filePath))
                throw new CustomMessageException("File already exists: " + filePath);
            if (!Directory.Exists(historyDir))
                Directory.CreateDirectory(historyDir);
            System.IO.File.Copy(outputDocPathPDF, filePath);
        }

        if (keepHistoryInDB || keepHistoryInFile)
            File.Delete(outputDocPathPDF);
    }
コード例 #32
0
 private static RegisterReferrer[] _GetEPCReferrersOf(int patient_id, bool onlyActive)
 {
     DataTable tbl = onlyActive ? GetDataTable_ActiveEPCReferrersOf(patient_id) : GetDataTable_EPCReferrersOf(patient_id);
     RegisterReferrer[] list = new RegisterReferrer[tbl.Rows.Count];
     for (int i = 0; i < tbl.Rows.Count; i++)
     {
         RegisterReferrer rr = RegisterReferrerDB.Load(tbl.Rows[i], "regref_");
         rr.Referrer = ReferrerDB.Load(tbl.Rows[i], "referrer_");
         rr.Referrer.Person = PersonDB.Load(tbl.Rows[i], "referrer_person_");
         rr.Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "referrer_person_title_title_id", "referrer_person_title_descr");
         rr.Organisation = OrganisationDB.Load(tbl.Rows[i], "organisation_");
         list[i] = rr;
     }
     return list;
 }
コード例 #33
0
    protected void btnPrint_Click(object sender, EventArgs e)
    {
        try
        {
            decimal smsBalance = SMSCreditDataDB.GetTotal() - SMSHistoryDataDB.GetTotal();
            decimal smsCost    = Convert.ToDecimal(SystemVariableDB.GetByDescr("SMSPrice").Value);

            int maxSMSCountCanAfford = smsCost == 0 ? 1000000 : (int)(smsBalance / smsCost);
            int smsCountSending      = 0;


            //
            // Start Validation
            //

            txtEmailSubject.Text     = txtEmailSubject.Text.Trim();
            txtEmailForPrinting.Text = txtEmailForPrinting.Text.Trim();
            txtSMSText.Text          = txtSMSText.Text.Trim();


            bool printSelected = (ddlBothMobileAndEmail.SelectedValue == "1" || ddlEmailNoMobile.SelectedValue == "1" ||
                                  ddlMobileNoEmail.SelectedValue == "1" || ddlNeitherMobileOrEmail.SelectedValue == "1");
            bool emailSelected = (ddlBothMobileAndEmail.SelectedValue == "2" || ddlEmailNoMobile.SelectedValue == "2" ||
                                  ddlMobileNoEmail.SelectedValue == "2" || ddlNeitherMobileOrEmail.SelectedValue == "2");
            bool smsSelected = (ddlBothMobileAndEmail.SelectedValue == "3" || ddlEmailNoMobile.SelectedValue == "3" ||
                                ddlMobileNoEmail.SelectedValue == "3" || ddlNeitherMobileOrEmail.SelectedValue == "3");


            string validationErrors = string.Empty;

            if (printSelected)
            {
                if (txtEmailForPrinting.Text.Length == 0)
                {
                    validationErrors += "<li>Printed Batch Letters Email Address To Send To can not be empty.</li>";
                }
                else if (!Utilities.IsValidEmailAddress(txtEmailForPrinting.Text))
                {
                    validationErrors += "<li>Printed Batch Letters Email Address To Send To must look like a valid email address.</li>";
                }
            }
            if (emailSelected)
            {
                if (txtEmailSubject.Text.Length == 0)
                {
                    validationErrors += "<li>Email Subject can not be empty.</li>";
                }
                if (FreeTextBox1.Text.Length == 0)
                {
                    validationErrors += "<li>Email Text can not be empty.</li>";
                }
            }
            if (smsSelected)
            {
                if (smsCost > 0 && smsBalance == 0)
                {
                    validationErrors += "<li>Can not send SMS's - your SMS balance is empty. Please topup or unselect sending by SMS.</li>";
                }
                else if (txtSMSText.Text.Length == 0)
                {
                    validationErrors += "<li>SMS Text can not be empty.</li>";
                }
            }

            if (validationErrors.Length > 0)
            {
                throw new CustomMessageException("<ul>" + validationErrors + "</ul>");
            }

            //
            // End Validation
            //



            //
            // get hashtables of those with mobiles and emails
            //

            ArrayList regRefIDsArr = new ArrayList();


            foreach (ListItem referrerItem in lstReferrers.Items)  // regrefid
            {
                if (referrerItem.Selected)
                {
                    regRefIDsArr.Add(Convert.ToInt32(referrerItem.Value));
                }
            }


            int[]     regRefIDs    = (int[])regRefIDsArr.ToArray(typeof(int));
            int[]     entityIDs    = RegisterReferrerDB.GetOrgEntityIDs(regRefIDs);
            Hashtable entityIDHash = RegisterReferrerDB.GetOrgEntityIDsHash(regRefIDs);
            Hashtable regRefIDHash = RegisterReferrerDB.GetByIDsInHashtable(regRefIDs);

            Hashtable emailHash  = PatientsContactCacheDB.GetBullkEmail(entityIDs, -1);
            Hashtable mobileHash = PatientsContactCacheDB.GetBullkPhoneNumbers(entityIDs, -1, "30");

            string email_from_address = ((SystemVariables)System.Web.HttpContext.Current.Session["SystemVariables"])["Email_FromEmail"].Value;
            string email_from_name    = ((SystemVariables)System.Web.HttpContext.Current.Session["SystemVariables"])["Email_FromName"].Value;

            //bool StoreLettersHistoryInDB       = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["StoreLettersHistoryInDB"]);
            //bool StoreLettersHistoryInFlatFile = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["StoreLettersHistoryInFlatFile"]);
            bool StoreLettersHistoryInDB       = false; // don't store bulk marketing letters
            bool StoreLettersHistoryInFlatFile = false; // don't store bulk marketing letters



            //
            // ok start the sending process
            //


            int bulkLetterSendingQueueBatchID = UseBulkLetterSender ? BulkLetterSendingQueueBatchDB.Insert(txtEmailForPrinting.Text, false) : -1;


            // TODO: Send Letter By Email
            int letterPrintHistorySendMethodID = 1; // send by mail


            // make sure at least one referrer selected
            if (lstReferrers.GetSelectedIndices().Length == 0)
            {
                throw new CustomMessageException("Please select at least one referrer.");
            }

            // make sure at least one letter selected
            if (lstLetters.GetSelectedIndices().Length == 0)
            {
                throw new CustomMessageException("Please select a letter.");
            }


            // get letter and make sure it exists
            Letter letter             = LetterDB.GetByID(Convert.ToInt32(lstLetters.SelectedValue));
            string sourchTemplatePath = letter.GetFullPath(Convert.ToInt32(Session["SiteID"]));
            if (!File.Exists(sourchTemplatePath))
            {
                throw new CustomMessageException("File doesn't exist.");
            }

            // get temp directory
            string tmpLettersDirectory = Letter.GetTempLettersDirectory();
            if (!Directory.Exists(tmpLettersDirectory))
            {
                throw new CustomMessageException("Temp letters directory doesn't exist");
            }

            // delete old tmp files
            FileHelper.DeleteOldFiles(tmpLettersDirectory, new TimeSpan(1, 0, 0));



            // create individual merged docs and put into list of docsToMerge - only if there is an org-patient relationship
            ArrayList docsToMerge = new ArrayList();

            Site site    = SiteDB.GetByID(Convert.ToInt32(Session["SiteID"]));
            int  StaffID = Convert.ToInt32(Session["StaffID"]);
            foreach (ListItem referrerItem in lstReferrers.Items)
            {
                if (!referrerItem.Selected)
                {
                    continue;
                }

                if (UseBulkLetterSender)
                {
                    int        refEntityID    = (int)entityIDHash[Convert.ToInt32(referrerItem.Value)];
                    string     refPhoneNumber = GetPhoneNbr(mobileHash, refEntityID, true);
                    string     refEmail       = GetEmail(emailHash, refEntityID);
                    SendMethod sendMethod     = GetSendMethod(refEmail != null, refPhoneNumber != null);

                    RegisterReferrer regRef = RegisterReferrerDB.GetByID(Convert.ToInt32(referrerItem.Value));

                    if (sendMethod != SendMethod.None)
                    {
                        string text = string.Empty;
                        if (sendMethod == SendMethod.SMS)
                        {
                            text = txtSMSText.Text;
                        }
                        if (sendMethod == SendMethod.Email)
                        {
                            text = FreeTextBox1.Text;
                        }

                        text = ReplaceMergeFields(text, regRefIDHash, Convert.ToInt32(referrerItem.Value));

                        bool generateLetter = false;
                        if (sendMethod == SendMethod.SMS)
                        {
                            generateLetter = false;
                        }
                        if (sendMethod == SendMethod.Email)
                        {
                            generateLetter = lstLetters.GetSelectedIndices().Length != 0;
                        }
                        if (sendMethod == SendMethod.Print)
                        {
                            generateLetter = true;
                        }


                        if (sendMethod == SendMethod.SMS)  // copy to other methods!!
                        {
                            smsCountSending++;
                        }


                        BulkLetterSendingQueueDB.Insert
                        (
                            bulkLetterSendingQueueBatchID,
                            (int)sendMethod,                                              // bulk_letter_sending_queue_method_id
                            StaffID,                                                      // added_by
                            -1,                                                           // patient_id
                            regRef.Referrer.ReferrerID,                                   // referrer_id
                            -1,                                                           // booking_id
                            (sendMethod == SendMethod.SMS)   ? refPhoneNumber       : "", // phone_number
                            (sendMethod == SendMethod.Email) ? refEmail             : "", // email_to_address
                            "",                                                           // email_to_name
                            (sendMethod == SendMethod.Email) ? email_from_address   : "", // email_from_address
                            (sendMethod == SendMethod.Email) ? email_from_name      : "", // email_from_name
                            text,                                                         // text
                            (sendMethod == SendMethod.Email) ? txtEmailSubject.Text : "", // email_subject
                            "",                                                           // email_attachment_location
                            false,                                                        // email_attachment_delete_after_sending
                            false,                                                        // email_attachment_folder_delete_after_sending

                            !generateLetter ? -1    : letter.LetterID,
                            !generateLetter ? false : chkKeepInHistory.Checked && StoreLettersHistoryInDB,
                            !generateLetter ? false : chkKeepInHistory.Checked && StoreLettersHistoryInFlatFile,
                            !generateLetter ? -1    : letterPrintHistorySendMethodID,
                            !generateLetter ? ""    : Letter.GetLettersHistoryDirectory(0),
                            !generateLetter ? ""    : letter.Docname.Replace(".dot", ".doc"),
                            !generateLetter ? -1    : site.SiteID,
                            0,                                                             // organisation_id
                            -1,                                                            // booking id
                            -1,                                                            // patient_id

                            !generateLetter ? -1    : Convert.ToInt32(referrerItem.Value), // register_referrer_id_to_use_instead_of_patients_reg_ref
                            !generateLetter ? -1    : StaffID,
                            -1,                                                            //healthcardactionid
                            !generateLetter ? ""    : sourchTemplatePath,
                            !generateLetter ? ""    : tmpLettersDirectory + letter.Docname.Replace(".dot", ".doc"),
                            !generateLetter ? false : true,

                            "",    // email_letter_extra_pages
                            "",    // email_letter_item_seperator
                            "",    // sql_to_run_on_completion
                            ""     // sql_to_run_on_failure
                        );
                    }
                }
                else
                {
                    // create doc
                    string tmpSingleFileName = Letter.CreateMergedDocument(
                        letter.LetterID,
                        chkKeepInHistory.Checked && StoreLettersHistoryInDB,
                        chkKeepInHistory.Checked && StoreLettersHistoryInFlatFile,
                        letterPrintHistorySendMethodID,
                        Letter.GetLettersHistoryDirectory(0),
                        letter.Docname.Replace(".dot", ".doc"),
                        site,
                        0,  // org id
                        -1, // booking id
                        -1, // patient id
                        Convert.ToInt32(referrerItem.Value),
                        StaffID,
                        -1, //healthcardactionid
                        sourchTemplatePath,
                        tmpLettersDirectory + letter.Docname.Replace(".dot", ".doc"),
                        true);

                    // record name of merged doc
                    docsToMerge.Add(tmpSingleFileName);
                }
            }


            if (UseBulkLetterSender)
            {
                if ((smsCountSending * smsCost) > smsBalance)
                {
                    BulkLetterSendingQueueDB.DeleteByBatchID(bulkLetterSendingQueueBatchID);
                    BulkLetterSendingQueueBatchDB.Delete(bulkLetterSendingQueueBatchID);

                    SetErrorMessage("Not Enough Credit To Send SMS's. Please Top Up You SMS Credit or Choose Methods Other Than SMS.");
                    return;
                }

                BulkLetterSendingQueueBatchDB.UpdateReadyToProcess(bulkLetterSendingQueueBatchID, true);
                SetErrorMessage("Items Added To Sending Queue. View Details <a href='/Letters_PrintBatch_StatusV2.aspx?batch_id=" + bulkLetterSendingQueueBatchID + "'>Here</a>");
            }
            else
            {
                // merge all tmp files
                string tmpFinalFileName = Letter.MergeMultipleDocuments(
                    ((string[])docsToMerge.ToArray(typeof(string))),
                    tmpLettersDirectory + letter.Docname.Replace(".dot", ".doc"));

                // delete all single tmp files
                foreach (string file in docsToMerge)
                {
                    File.Delete(file);
                }

                // download the document
                byte[] fileContents = File.ReadAllBytes(tmpFinalFileName);
                System.IO.File.Delete(tmpFinalFileName);

                // Nothing gets past the "DownloadDocument" method because it outputs the file
                // which is writing a response to the client browser and calls Response.End()
                // So make sure any other code that functions goes before this
                Letter.DownloadDocument(Response, fileContents, letter.Docname.Replace(".dot", ".doc"));
            }
        }
        catch (CustomMessageException cmEx)
        {
            SetErrorMessage(cmEx.Message);
            return;
        }
    }
コード例 #34
0
    protected void UpdateOrgsFromJavascriptChanges()
    {
        string referrerIDs = hiddenReferrerIDsList.Value;  // comma seperated
        Hashtable referrerIDsHash = new Hashtable();
        if (referrerIDs.Length > 0)
            foreach (string referrerID in referrerIDs.Split(','))
                referrerIDsHash[Convert.ToInt32(referrerID)] = 1;

        DataTable referrers = RegisterReferrerDB.GetDataTable(0, -1, true);
        RegisterReferrer[] regRefs = new RegisterReferrer[referrers.Rows.Count];
        for (int i = 0; i < referrers.Rows.Count; i++)
            regRefs[i] = RegisterReferrerDB.LoadAll(referrers.Rows[i]);

        ArrayList referrersAdded = new ArrayList();
        lstReferrers.Items.Clear();
        for (int i = 0; i < regRefs.Length; i++)
        {
            if (referrerIDsHash[regRefs[i].RegisterReferrerID] != null)
            {
                string text = regRefs[i].Referrer.Person.FullnameWithoutMiddlename + " [" + regRefs[i].Organisation.Name + "]";
                lstReferrers.Items.Add(new ListItem(text, regRefs[i].RegisterReferrerID.ToString()));

                referrersAdded.Add(regRefs[i]);
            }
        }

        int hasBothMobileEmail    = 0;
        int hasMobileNoEmail      = 0;
        int hasEmailNoMobile      = 0;
        int hasNeitherMobileEmail = 0;
        RegisterReferrerDB.GetCountsByEmailMobile(
            (RegisterReferrer[])referrersAdded.ToArray(typeof(RegisterReferrer)),
            ref hasBothMobileEmail,
            ref hasMobileNoEmail,
            ref hasEmailNoMobile,
            ref hasNeitherMobileEmail);

        lblReferrersWithMobileAndEmailTotal.Text       = hasBothMobileEmail.ToString();
        lblReferrersWithMobileNoEmailTotal.Text        = hasMobileNoEmail.ToString();
        lblReferrersWithEmailNoMobileTotal.Text        = hasEmailNoMobile.ToString();
        lblReferrersWithNeitherMobileOrEmailTotal.Text = hasNeitherMobileEmail.ToString();
        lblReferrerCount.Text = lstReferrers.Items.Count.ToString();
    }
コード例 #35
0
    public static string[] BulkGetAllTreatmentNotes(DateTime date_start, DateTime date_end, string newline = "\n", bool incNoteIDForDebug = false)
    {
        string recurring_condition     = string.Empty;
        string non_recurring_condition = string.Empty;

        if (date_start != DateTime.MinValue && date_end != DateTime.MinValue)
        {
            recurring_condition     = "AND (  booking.date_start >= '" + date_start.ToString("yyyy-MM-dd HH:mm:ss") + "' AND booking.date_end <= '" + date_end.ToString("yyyy-MM-dd HH:mm:ss") + @"' )";
            non_recurring_condition = "AND (  booking.date_end IS NULL OR booking.date_end > '" + date_start.Date.ToString("yyyy-MM-dd HH:mm:ss") + "') " + (date_end == DateTime.MinValue ? "" : " AND booking.date_start < '" + date_end.Date.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss") + "'") + @"";
        }
        else if (date_start != DateTime.MinValue)
        {
            recurring_condition     = "AND (  booking.date_start >= '" + date_start.ToString("yyyy-MM-dd HH:mm:ss") + "')";
            non_recurring_condition = "AND (  booking.date_end IS NULL OR booking.date_end > '" + date_start.Date.ToString("yyyy-MM-dd HH:mm:ss") + "') " + @"";
        }
        else if (date_end != DateTime.MinValue)
        {
            recurring_condition     = "AND (  booking.date_end  <= '" + date_end.ToString("yyyy-MM-dd HH:mm:ss") + @"' )";
            non_recurring_condition = "AND (  booking.date_start < '" + date_end.Date.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss") + @"' )";
        }
        else
        {
            recurring_condition     = "";
            non_recurring_condition = "";
        }


        string sql = @"

                SELECT 
                    note.note_id as note_note_id, note.entity_id as note_entity_id, note.note_type_id as note_note_type_id, note.body_part_id as note_body_part_id, note.text as note_text, note.date_added as note_date_added, note.date_modified as note_date_modified, note.added_by as note_added_by, note.modified_by as note_modified_by, note.site_id as note_site_id,


                    booking.booking_id as booking_booking_id,booking.entity_id as booking_entity_id,
                    booking.date_start as booking_date_start,booking.date_end as booking_date_end,booking.organisation_id as booking_organisation_id,
                    booking.provider as booking_provider,booking.patient_id as booking_patient_id,booking.offering_id as booking_offering_id,booking.booking_type_id as booking_booking_type_id,
                    booking.booking_status_id as booking_booking_status_id,booking.booking_unavailability_reason_id as booking_booking_unavailability_reason_id,booking.added_by as booking_added_by,booking.date_created as booking_date_created,
                    booking.booking_confirmed_by_type_id as booking_booking_confirmed_by_type_id,booking.confirmed_by as booking_confirmed_by,booking.date_confirmed as booking_date_confirmed,
                    booking.deleted_by as booking_deleted_by, booking.date_deleted as booking_date_deleted,
                    booking.cancelled_by as booking_cancelled_by, booking.date_cancelled as booking_date_cancelled,
                    booking.is_patient_missed_appt as booking_is_patient_missed_appt,booking.is_provider_missed_appt as booking_is_provider_missed_appt,
                    booking.is_emergency as booking_is_emergency,
                    booking.need_to_generate_first_letter as booking_need_to_generate_first_letter,booking.need_to_generate_last_letter as booking_need_to_generate_last_letter,booking.has_generated_system_letters as booking_has_generated_system_letters,
                    booking.arrival_time              as booking_arrival_time,
                    booking.sterilisation_code        as booking_sterilisation_code,
                    booking.informed_consent_added_by as booking_informed_consent_added_by, 
                    booking.informed_consent_date     as booking_informed_consent_date,
                    booking.is_recurring as booking_is_recurring,booking.recurring_weekday_id as booking_recurring_weekday_id,
                    booking.recurring_start_time as booking_recurring_start_time,booking.recurring_end_time as booking_recurring_end_time,
                    (SELECT 0) AS booking_note_count,
                    (SELECT 0) AS booking_inv_count,

                    patient.patient_id as patient_patient_id, patient.person_id as patient_person_id, patient.patient_date_added as patient_patient_date_added, 
                    patient.is_clinic_patient as patient_is_clinic_patient,patient.is_gp_patient as patient_is_gp_patient,patient.is_deleted as patient_is_deleted,patient.is_deceased as patient_is_deceased, 
                    patient.flashing_text as patient_flashing_text, patient.flashing_text_added_by as patient_flashing_text_added_by, patient.flashing_text_last_modified_date as patient_flashing_text_last_modified_date, 
                    patient.private_health_fund as patient_private_health_fund, patient.concession_card_number as patient_concession_card_number, patient.concession_card_expiry_date as patient_concession_card_expiry_date, patient.is_diabetic as patient_is_diabetic, patient.is_member_diabetes_australia as patient_is_member_diabetes_australia, patient.diabetic_assessment_review_date as patient_diabetic_assessment_review_date, patient.ac_inv_offering_id as patient_ac_inv_offering_id, patient.ac_pat_offering_id as patient_ac_pat_offering_id, patient.login as patient_login, patient.pwd as patient_pwd, patient.is_company as patient_is_company, patient.abn as patient_abn, 
                    patient.next_of_kin_name as patient_next_of_kin_name, patient.next_of_kin_relation as patient_next_of_kin_relation, patient.next_of_kin_contact_info as patient_next_of_kin_contact_info,

                    " + PersonDB.GetFields("person_patient_", "person_patient") + @", 
                    title_patient.title_id as title_patient_title_id, title_patient.descr as title_patient_descr,


                    rr.register_referrer_id as rr_register_referrer_id, rr.organisation_id as rr_organisation_id, rr.referrer_id as rr_referrer_id, 
                    rr.provider_number as rr_provider_number, rr.report_every_visit_to_referrer as rr_report_every_visit_to_referrer, 
                    rr.batch_send_all_patients_treatment_notes as rr_batch_send_all_patients_treatment_notes, 
                    rr.date_last_batch_send_all_patients_treatment_notes as rr_date_last_batch_send_all_patients_treatment_notes, 
                    rr.register_referrer_date_added as rr_register_referrer_date_added, rr.is_deleted as rr_is_deleted,

                    ref.referrer_id as ref_referrer_id, ref.person_id as ref_person_id, ref.referrer_date_added as ref_referrer_date_added, 
                    " + PersonDB.GetFields("p_", "p") + @", 
                    t.title_id as t_title_id, t.descr as t_descr

                FROM
                    Note note
                    INNER JOIN Booking          booking           ON booking.entity_id                      = note.entity_id
                    INNER JOIN Patient          patient           ON patient.patient_id                     = booking.patient_id
                    INNER JOIN Person           person_patient    ON person_patient.person_id               = patient.person_id
                    INNER JOIN Title            title_patient     ON title_patient.title_id                 = person_patient.title_id

                    INNER Join PatientReferrer  patient_referrer  ON patient_referrer.patient_id            = patient.patient_id
                    INNER Join RegisterReferrer rr                ON rr.register_referrer_id                = patient_referrer.register_referrer_id
                    INNER JOIN Referrer         ref               ON ref.referrer_id                        = rr.referrer_id 
                    INNER JOIN Person           p                 ON p.person_id                            = ref.person_id
                    INNER JOIN Title            t                 ON t.title_id                             = p.title_id

                WHERE
                    note.note_type_id = 252             -- only provider treatment notes
                    AND booking.booking_status_id = 187 -- only get completed bookings
                    AND booking.booking_type_id   = 34  -- only get bookings for patients (not blockout-prov/org-timeslot bookings)
                    AND (
                            (booking.is_recurring = 0 " + recurring_condition + @") OR  
                            (booking.is_recurring = 1 " + non_recurring_condition + @") 
                        )
                    AND rr.is_deleted = 0
                    AND rr.batch_send_all_patients_treatment_notes = 1

                ORDER BY 
                    rr.register_referrer_id, person_patient.surname, person_patient.firstname, booking.date_start, note.note_id
                    ";

        DataTable tbl = DBBase.ExecuteQuery(sql).Tables[0];

        string[] notes = new string[tbl.Rows.Count];
        for (int i = 0; i < tbl.Rows.Count; i++)
        {
            Booking booking = BookingDB.Load(tbl.Rows[i], "booking_");
            booking.Patient              = PatientDB.Load(tbl.Rows[i], "patient_");
            booking.Patient.Person       = PersonDB.Load(tbl.Rows[i], "person_patient_");
            booking.Patient.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "title_patient_title_id", "title_patient_descr");

            Note note = NoteDB.Load(tbl.Rows[i], "note_");

            RegisterReferrer rr = RegisterReferrerDB.Load(tbl.Rows[i], "rr_");
            rr.Referrer              = ReferrerDB.Load(tbl.Rows[i], "ref_");
            rr.Referrer.Person       = PersonDB.Load(tbl.Rows[i], "p_");
            rr.Referrer.Person.Title = IDandDescrDB.Load(tbl.Rows[i], "t_title_id", "t_descr");

            notes[i] = booking.GetNoteTextForTreatmentLetter(rr.Referrer, note, newline, incNoteIDForDebug);
        }

        return(notes);
    }
コード例 #36
0
    protected void FillGrid_Patients(Type type, int id)
    {
        UserView userView = UserView.GetInstance();

        DataTable dt = null;

        if (type == typeof(Organisation))
        {
            Organisation org = OrganisationDB.GetByID(id);
            lblPatientsHeading.Text = "Patients of &nbsp;&nbsp;<big><b>All Referrers</b></big>&nbsp;&nbsp; at &nbsp;&nbsp;<big><b>" + org.Name + "</b></big>";

            if (userView.IsAdminView && userView.IsClinicView)
            {
                dt = PatientDB.GetDataTable(false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", "", "", id.ToString(), false, false, false);
            }
            if (userView.IsAdminView && !userView.IsClinicView)
            {
                dt = RegisterPatientDB.GetDataTable_PatientsOfOrgGroupType(false, "6", false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", "", "", id.ToString(), false, false, false);
            }
            if (!userView.IsAdminView)
            {
                dt = RegisterPatientDB.GetDataTable_PatientsOf(false, Convert.ToInt32(Session["OrgID"]), false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", "", "", id.ToString(), false, false, false);
            }
        }
        else if (type == typeof(RegisterReferrer))
        {
            RegisterReferrer regRef = RegisterReferrerDB.GetByID(id);
            lblPatientsHeading.Text = "Patients of &nbsp;&nbsp;<big><b>" + regRef.Referrer.Person.FullnameWithoutMiddlename + "</b></big>&nbsp;&nbsp; at &nbsp;&nbsp;<big><b>" + regRef.Organisation.Name + "</b></big>";

            if (userView.IsAdminView && userView.IsClinicView)
            {
                dt = PatientDB.GetDataTable(false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", id.ToString(), "", "", false, false, false);
            }
            if (userView.IsAdminView && !userView.IsClinicView)
            {
                dt = RegisterPatientDB.GetDataTable_PatientsOfOrgGroupType(false, "6", false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", id.ToString(), "", "", false, false, false);
            }
            if (!userView.IsAdminView)
            {
                dt = RegisterPatientDB.GetDataTable_PatientsOf(false, Convert.ToInt32(Session["OrgID"]), false, false, userView.IsClinicView, false, "", false, "", false, "", "", "", "", "", false, -1, -1, -1, "", "", id.ToString(), "", "", false, false, false);
            }
        }
        else
        {
            SetErrorMessage("Unknown type: " + type.ToString());
            return;
        }


        lblPatientsHeading.Visible = true;
        GrdPatients.Visible        = true;



        // put in epc info into the table in a bulk call
        // epc exp date, if valid, how many epc's remaining...


        int[] patientIDs = new int[dt.Rows.Count];
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            patientIDs[i] = Convert.ToInt32(dt.Rows[i]["patient_id"]);
        }

        int MedicareMaxNbrServicesPerYear = Convert.ToInt32(SystemVariableDB.GetByDescr("MedicareMaxNbrServicesPerYear").Value);

        Hashtable patientsMedicareCountThisYearCache = PatientsMedicareCardCountThisYearCacheDB.GetBullk(patientIDs, DateTime.Today.Year);
        Hashtable patientsMedicareCountNextYearCache = PatientsMedicareCardCountThisYearCacheDB.GetBullk(patientIDs, DateTime.Today.Year + 1);
        Hashtable patientsEPCRemainingCache          = PatientsEPCRemainingCacheDB.GetBullk(patientIDs, DateTime.MinValue);

        dt.Columns.Add("epc_signed_date", typeof(DateTime));
        dt.Columns.Add("epc_expiry_date", typeof(DateTime));
        dt.Columns.Add("epc_n_services_left", typeof(Int32));
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            int patientID = Convert.ToInt32(dt.Rows[i]["patient_id"]);

            int  totalServicesAllowedLeft = (MedicareMaxNbrServicesPerYear - (int)patientsMedicareCountThisYearCache[patientID]);
            Pair totalEPCRemaining        = patientsEPCRemainingCache[patientID] as Pair;

            int nServicesLeft = 0;
            if (totalEPCRemaining != null)
            {
                DateTime referralSignedDate = (DateTime)totalEPCRemaining.Second;
                DateTime hcExpiredDate      = referralSignedDate.AddYears(1);
                if (DateTime.Today >= referralSignedDate.Date && DateTime.Today < hcExpiredDate.Date)
                {
                    nServicesLeft = (int)totalEPCRemaining.First;
                }
                if (totalServicesAllowedLeft < nServicesLeft)
                {
                    nServicesLeft = totalServicesAllowedLeft;
                }

                dt.Rows[i]["epc_signed_date"]     = referralSignedDate;
                dt.Rows[i]["epc_expiry_date"]     = hcExpiredDate;
                dt.Rows[i]["epc_n_services_left"] = nServicesLeft;
            }
            else
            {
                dt.Rows[i]["epc_signed_date"]     = DBNull.Value;
                dt.Rows[i]["epc_expiry_date"]     = DBNull.Value;
                dt.Rows[i]["epc_n_services_left"] = DBNull.Value;
            }
        }



        Session["referrerinfoclinic_patients_data"] = dt;

        if (dt.Rows.Count > 0)
        {
            if (IsPostBack && Session["referrerinfoclinic_patients_sortexpression"] != null && Session["referrerinfoclinic_patients_sortexpression"].ToString().Length > 0)
            {
                DataView dataView = new DataView(dt);
                dataView.Sort          = Session["referrerinfoclinic_patients_sortexpression"].ToString();
                GrdPatients.DataSource = dataView;
            }
            else
            {
                GrdPatients.DataSource = dt;
            }


            try
            {
                GrdPatients.DataBind();
            }
            catch (Exception ex)
            {
                HideTableAndSetErrorMessage("", ex.ToString());
            }
        }
        else
        {
            dt.Rows.Add(dt.NewRow());
            GrdPatients.DataSource = dt;
            GrdPatients.DataBind();

            int TotalColumns = GrdPatients.Rows[0].Cells.Count;
            GrdPatients.Rows[0].Cells.Clear();
            GrdPatients.Rows[0].Cells.Add(new TableCell());
            GrdPatients.Rows[0].Cells[0].ColumnSpan = TotalColumns;
            GrdPatients.Rows[0].Cells[0].Text       = "No Patients";
        }
    }
コード例 #37
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Utilities.SetNoCache(Response);
        }

        try
        {
            if (Session == null || Session["DB"] == null)
            {
                throw new SessionTimedOutException();
            }

            string fieldsSep = "|";
            string itemSep   = "<>";


            string id = Request.QueryString["id"];
            if (id == null || !Regex.IsMatch(id, @"^\-?\d+$"))
            {
                throw new CustomMessageException();
            }

            string type = Request.QueryString["type"];
            if (type == null || (type.ToLower() != "patient" && type.ToLower() != "staff" && type.ToLower() != "referrer" && type.ToLower() != "register_referrer"))
            {
                throw new CustomMessageException();
            }


            Person person          = null;
            int    contactEntityID = -1;

            if (type == "patient")
            {
                Patient patient = PatientDB.GetByID(Convert.ToInt32(id));
                if (patient == null)
                {
                    throw new CustomMessageException();
                }
                person          = patient.Person;
                contactEntityID = patient.Person.EntityID;
            }
            else if (type == "staff")
            {
                Staff staff = StaffDB.GetByID(Convert.ToInt32(id));
                if (staff == null)
                {
                    throw new CustomMessageException();
                }
                person          = staff.Person;
                contactEntityID = staff.Person.EntityID;
            }
            else if (type == "referrer")
            {
                Referrer referrer = ReferrerDB.GetByID(Convert.ToInt32(id));
                if (referrer == null)
                {
                    throw new CustomMessageException();
                }
                person          = referrer.Person;
                contactEntityID = referrer.Person.EntityID;
            }
            else if (type == "register_referrer")
            {
                RegisterReferrer regReferrer = RegisterReferrerDB.GetByID(Convert.ToInt32(id));
                if (regReferrer == null || regReferrer.Referrer == null)
                {
                    throw new CustomMessageException();
                }
                person          = regReferrer.Referrer.Person;
                contactEntityID = regReferrer.Organisation.EntityID;
            }
            else
            {
                throw new CustomMessageException();
            }


            string details = GetDetails(person, contactEntityID, fieldsSep, itemSep);
            Response.Write(details);
        }
        catch (SessionTimedOutException)
        {
            Utilities.UnsetSessionVariables();
            Response.Write("SessionTimedOutException");
        }
        catch (Exception ex)
        {
            Response.Write("Exception: " + (Utilities.IsDev() ? ex.ToString() : "please contact system administrator."));
        }
    }