[843] | 1 | using System;
|
---|
| 2 | using System.Collections.Generic;
|
---|
| 3 | using System.Linq;
|
---|
| 4 | using System.Data;
|
---|
| 5 | using System.Text;
|
---|
| 6 | using System.Diagnostics;
|
---|
| 7 | using IndianHealthService.BMXNet;
|
---|
| 8 |
|
---|
| 9 | namespace IndianHealthService.ClinicalScheduling
|
---|
| 10 | {
|
---|
| 11 | /// <summary>
|
---|
| 12 | /// Data Access Layer
|
---|
| 13 | /// </summary>
|
---|
| 14 | public class DAL
|
---|
| 15 | {
|
---|
| 16 | private BMXNetConnectInfo _thisConnection; // set in constructor
|
---|
[848] | 17 |
|
---|
[843] | 18 | delegate DataTable RPMSDataTableDelegate(string CommandString, string TableName); // for use in calling (Sync and Async)
|
---|
| 19 |
|
---|
| 20 | /// <summary>
|
---|
| 21 | /// Constructor
|
---|
| 22 | /// </summary>
|
---|
| 23 | /// <param name="conn">The current connection to use</param>
|
---|
| 24 | public DAL(BMXNetConnectInfo conn)
|
---|
| 25 | {
|
---|
| 26 | this._thisConnection = conn;
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | public DataTable GetVersion(string nmsp)
|
---|
| 30 | {
|
---|
| 31 | string cmd = String.Format("BMX VERSION INFO^{0}", nmsp);
|
---|
| 32 | return RPMSDataTable(cmd, "");
|
---|
| 33 | }
|
---|
| 34 |
|
---|
| 35 | public DataTable GetUserInfo(string DUZ)
|
---|
| 36 | {
|
---|
| 37 | string cmd = String.Format("BSDX SCHEDULING USER INFO^{0}", DUZ);
|
---|
| 38 | return RPMSDataTable(cmd, "");
|
---|
| 39 | }
|
---|
| 40 |
|
---|
| 41 | public DataTable GetAccessTypes()
|
---|
| 42 | {
|
---|
| 43 | string sCommandText = "SELECT * FROM BSDX_ACCESS_TYPE";
|
---|
| 44 | DataTable table = RPMSDataTable(sCommandText, "");
|
---|
| 45 | DataColumn dcKey = table.Columns["BMXIEN"];
|
---|
| 46 | DataColumn[] dcKeys = new DataColumn[1];
|
---|
| 47 | dcKeys[0] = dcKey;
|
---|
| 48 | table.PrimaryKey = dcKeys;
|
---|
| 49 | return table;
|
---|
| 50 | }
|
---|
| 51 |
|
---|
[848] | 52 | /// <summary>
|
---|
| 53 | /// Get the Patients who have appointments in between dates for the clinics requested
|
---|
| 54 | /// </summary>
|
---|
| 55 | /// <param name="sClinicList">| delimited resource list (resource IENS, not names)</param>
|
---|
| 56 | /// <param name="BeginDate">Self Explanatory</param>
|
---|
| 57 | /// <param name="EndDate">Self Explanatory</param>
|
---|
| 58 | /// <returns>DataTable with the following columns:
|
---|
| 59 | /// T00030Name^D00020DOB^T00030Sex^T00030HRN^D00030ApptDate^T00030Clinic^T00030TypeStatus
|
---|
| 60 | /// I00010RESOURCEID^T00030APPT_MADE_BY^D00020DATE_APPT_MADE^T00250NOTE^T00030STREET^
|
---|
| 61 | /// T00030CITY^T00030STATE^T00030ZIP^T00030HOMEPHONE
|
---|
| 62 | ///</returns>
|
---|
| 63 | ///<remarks>Mirrors dsPatientApptDisplay2.PatientAppts Schema in this project. Can merge table into schema.</remarks>
|
---|
| 64 | public DataTable GetClinicSchedules(string sClinicList, DateTime BeginDate, DateTime EndDate)
|
---|
| 65 | {
|
---|
| 66 | string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
---|
| 67 | string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
---|
| 68 | string cmd = String.Format("BSDX CLINIC LETTERS^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
---|
| 69 | return RPMSDataTable(cmd, "");
|
---|
| 70 | }
|
---|
[843] | 71 |
|
---|
[848] | 72 | /// <summary>
|
---|
| 73 | /// Get the letter templates associated with the requested clinics (reminder letter, cancellation letter etc)
|
---|
| 74 | /// </summary>
|
---|
| 75 | /// <param name="sClinicList">| delimited resource list (resource IENS, not names)</param>
|
---|
| 76 | /// <returns>DataTable with the following columns:
|
---|
| 77 | /// I00010RESOURCEID^T00030RESOURCE_NAME^T00030LETTER_TEXT^T00030NO_SHOW_LETTER^T00030CLINIC_CANCELLATION_LETTER
|
---|
| 78 | /// </returns>
|
---|
| 79 | /// <remarks>Mirrors dsPatientApptDisplay2.BSDXResource Schema. Can merge table into schema.</remarks>
|
---|
| 80 | public DataTable GetResourceLetters(string sClinicList)
|
---|
| 81 | {
|
---|
| 82 | string cmd = String.Format("BSDX RESOURCE LETTERS^{0}", sClinicList);
|
---|
| 83 | return RPMSDataTable(cmd, "");
|
---|
| 84 | }
|
---|
[843] | 85 |
|
---|
| 86 | /// <summary>
|
---|
[848] | 87 | /// Get the list of Patients who have Rebooked Appointments
|
---|
| 88 | /// </summary>
|
---|
| 89 | /// <param name="sClinicList">| delimited resource list (resource IENS, not names)</param>
|
---|
| 90 | /// <param name="BeginDate">Self Explanatory</param>
|
---|
| 91 | /// <param name="EndDate">Self Explanatory</param>
|
---|
| 92 | /// <returns>T00030Name^D00020DOB^T00030Sex^T00030HRN^D00030NewApptDate^T00030Clinic^T00030TypeStatus
|
---|
| 93 | /// ^I00010RESOURCEID^T00030APPT_MADE_BY^D00020DATE_APPT_MADE^T00250NOTE^T00030STREET^T00030CITY
|
---|
| 94 | /// ^T00030STATE^T00030ZIP^T00030HOMEPHONE^D00030OldApptDate
|
---|
| 95 | ///</returns>
|
---|
| 96 | /// <remarks>Mirrors dsRebookAppts.PatientAppt Schema. Can merge table into schema.</remarks>
|
---|
| 97 | public DataTable GetRebookedAppointments(string sClinicList, DateTime BeginDate, DateTime EndDate)
|
---|
| 98 | {
|
---|
| 99 | string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
---|
| 100 | string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
---|
| 101 | string cmd = String.Format("BSDX REBOOK CLINIC LIST^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
---|
| 102 | return RPMSDataTable(cmd, "");
|
---|
| 103 | }
|
---|
| 104 |
|
---|
[850] | 105 | public DataTable GetRebookedAppointments(string sApptList)
|
---|
| 106 | {
|
---|
| 107 | string cmd = String.Format("BSDX REBOOK LIST^{0}", sApptList);
|
---|
| 108 | return RPMSDataTable(cmd, "");
|
---|
| 109 | }
|
---|
| 110 |
|
---|
| 111 | public DataTable GetCancelledAppointments(string sClinicList, DateTime BeginDate, DateTime EndDate)
|
---|
| 112 | {
|
---|
| 113 | string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
---|
| 114 | string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
---|
| 115 | string cmd = String.Format("BSDX CANCEL CLINIC LIST^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
---|
| 116 | return RPMSDataTable(cmd, "");
|
---|
| 117 | }
|
---|
| 118 |
|
---|
| 119 |
|
---|
[848] | 120 | /// <summary>
|
---|
[843] | 121 | /// Workhorse
|
---|
| 122 | /// </summary>
|
---|
| 123 | /// <param name="sSQL"></param>
|
---|
| 124 | /// <param name="sTableName"></param>
|
---|
| 125 | /// <returns></returns>
|
---|
| 126 | private DataTable RPMSDataTable(string sSQL, string sTableName)
|
---|
| 127 | {
|
---|
| 128 | //Retrieves a recordset from RPMS
|
---|
| 129 | string sErrorMessage = "";
|
---|
| 130 | DataTable dtOut;
|
---|
| 131 |
|
---|
| 132 | #if TRACE
|
---|
| 133 | DateTime sendTime = DateTime.Now;
|
---|
| 134 | #endif
|
---|
| 135 | try
|
---|
| 136 | {
|
---|
| 137 | RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(_thisConnection.RPMSDataTable);
|
---|
| 138 | dtOut = (DataTable)rdtd.Invoke(sSQL, sTableName);
|
---|
| 139 | }
|
---|
| 140 |
|
---|
| 141 | catch (Exception ex)
|
---|
| 142 | {
|
---|
[848] | 143 | sErrorMessage = "DAL.RPMSDataTable error: " + ex.Message;
|
---|
[843] | 144 | throw ex;
|
---|
| 145 | }
|
---|
| 146 |
|
---|
| 147 | #if TRACE
|
---|
| 148 | DateTime receiveTime = DateTime.Now;
|
---|
| 149 | TimeSpan executionTime = receiveTime - sendTime;
|
---|
| 150 | Debug.Write("RPMSDataTable Execution Time: " + executionTime.Milliseconds + " ms.\n");
|
---|
| 151 | #endif
|
---|
| 152 |
|
---|
| 153 | return dtOut;
|
---|
| 154 |
|
---|
| 155 | }
|
---|
| 156 |
|
---|
| 157 |
|
---|
| 158 | }
|
---|
| 159 | }
|
---|
| 160 |
|
---|
| 161 |
|
---|