source: Scheduling/trunk/cs/bsdx0200GUISourceCode/DAL.cs@ 848

Last change on this file since 848 was 848, checked in by Sam Habiel, 14 years ago

More refactoring.

File size: 5.9 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Data;
5using System.Text;
6using System.Diagnostics;
7using IndianHealthService.BMXNet;
8
9namespace IndianHealthService.ClinicalScheduling
10{
11 /// <summary>
12 /// Data Access Layer
13 /// </summary>
14 public class DAL
15 {
16 private BMXNetConnectInfo _thisConnection; // set in constructor
17
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
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 }
71
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 }
85
86 /// <summary>
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>Not sure if this works yet</remarks>
97 /// <remarks>Mirrors dsRebookAppts.PatientAppt Schema. Can merge table into schema.</remarks>
98 public DataTable GetRebookedAppointments(string sClinicList, DateTime BeginDate, DateTime EndDate)
99 {
100 string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
101 string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
102 string cmd = String.Format("BSDX REBOOK CLINIC LIST^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
103 return RPMSDataTable(cmd, "");
104 }
105
106 /// <summary>
107 /// Workhorse
108 /// </summary>
109 /// <param name="sSQL"></param>
110 /// <param name="sTableName"></param>
111 /// <returns></returns>
112 private DataTable RPMSDataTable(string sSQL, string sTableName)
113 {
114 //Retrieves a recordset from RPMS
115 string sErrorMessage = "";
116 DataTable dtOut;
117
118#if TRACE
119 DateTime sendTime = DateTime.Now;
120#endif
121 try
122 {
123 RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(_thisConnection.RPMSDataTable);
124 dtOut = (DataTable)rdtd.Invoke(sSQL, sTableName);
125 }
126
127 catch (Exception ex)
128 {
129 sErrorMessage = "DAL.RPMSDataTable error: " + ex.Message;
130 throw ex;
131 }
132
133#if TRACE
134 DateTime receiveTime = DateTime.Now;
135 TimeSpan executionTime = receiveTime - sendTime;
136 Debug.Write("RPMSDataTable Execution Time: " + executionTime.Milliseconds + " ms.\n");
137#endif
138
139 return dtOut;
140
141 }
142
143
144 }
145}
146
147
Note: See TracBrowser for help on using the repository browser.