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

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

Updated Source Code for i18n.
Changes in DPatientLetter.cs
Changes in CGSchedLib.cs

File size: 6.5 KB
RevLine 
[843]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
[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
Note: See TracBrowser for help on using the repository browser.