Changeset 1112 for Scheduling/trunk/cs/bsdx0200GUISourceCode
- Timestamp:
- Mar 24, 2011, 9:26:14 AM (14 years ago)
- Location:
- Scheduling/trunk/cs/bsdx0200GUISourceCode
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocument.cs
r1111 r1112 1003 1003 this.m_appointments.AddAppointment(aCopy); 1004 1004 1005 1005 //TODO: Improve 1006 //Yucky hack for now... haven't investigated why we need to create a new CGAppointment beyond 1007 //the one that we pass. 1008 rApptInfo.AppointmentKey = nApptID; 1009 1006 1010 //Have make appointment from CGView responsible for requesting an update for the avialability. 1007 1011 //bool bRet = RefreshAvailabilitySchedule(); -
Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocumentManager.cs
r1111 r1112 8 8 using Mono.Options; 9 9 using System.Runtime.InteropServices; 10 using System.Globalization; 10 11 11 12 namespace IndianHealthService.ClinicalScheduling … … 33 34 private string m_Encoding=""; //Encoding is "" by default; 34 35 36 //Globalization Object (tied to command line parameter /culture) 37 private string m_CultureName = ""; 38 35 39 //Data Access Layer 36 40 private DAL _dal = null; … … 96 100 97 101 /// <summary> 98 /// More later...102 /// User Preferences Auto Property 99 103 /// </summary> 100 104 public UserPreferences UserPreferences { get; private set; } … … 171 175 /// /v or -v = Verify Code 172 176 /// /e or -e = Encoding (name of encoding as known to windows, such as windows-1256) 177 /// /culture or -culture = Culture Name for UI Culture if you wish to override the Windows Culture 173 178 /// </param> 174 179 /// <remarks> … … 200 205 { "a=", a => _current.m_AccessCode = a }, 201 206 { "v=", v => _current.m_VerifyCode = v }, 202 { "e=", e => _current.m_Encoding = e} 207 { "e=", e => _current.m_Encoding = e}, 208 { "culture=", culture => _current.m_CultureName = culture } 203 209 }; 204 210 … … 469 475 _current.UserPreferences = new UserPreferences(); 470 476 477 //User Interface Culture (m_CultureName is set from the command line flag /culture) 478 try { Thread.CurrentThread.CurrentUICulture = new CultureInfo(m_CultureName); } // if "", invariant culture 479 catch (CultureNotFoundException) { Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; } 480 471 481 //Create global dataset 472 482 _current.m_dsGlobal = new DataSet("GlobalDataSet"); -
Scheduling/trunk/cs/bsdx0200GUISourceCode/CGView.cs
r1111 r1112 9 9 using System.Runtime.InteropServices; 10 10 using System.Drawing.Printing; 11 using System.Linq; 11 12 12 13 namespace IndianHealthService.ClinicalScheduling … … 1954 1955 calendarGrid1.CGToolTip.Active = true; 1955 1956 1956 if (bAlreadyCheckedIn == true) 1957 return; 1958 1959 DateTime dtCheckIn = dlgCheckin.CheckInTime; 1960 1961 //Tell appointment that it is checked in, for proper coloring; 1962 //When you refresh from the DB, it will have this property. 1963 a.CheckInTime = DateTime.Now; 1957 if (bAlreadyCheckedIn != true) 1958 { 1959 DateTime dtCheckIn = dlgCheckin.CheckInTime; 1960 1961 //Tell appointment that it is checked in, for proper coloring; 1962 //When you refresh from the DB, it will have this property. 1963 a.CheckInTime = DateTime.Now; 1964 1965 //Save to Database 1966 this.Document.CheckInAppointment(nApptID, dtCheckIn); 1967 } 1964 1968 1965 //Save to Database1966 this.Document.CheckInAppointment(nApptID, dtCheckIn);1967 1968 1969 //Get Provider (XXXXXXXX: NOT SAVED TO THE DATABASE RIGHT NOW) 1969 1970 a.Provider = dlgCheckin.Provider; … … 2103 2104 try 2104 2105 { 2105 2106 2107 2106 //Get Time and Resource from Selected Cell 2108 2107 DateTime dStart = DateTime.Today; … … 3217 3216 private void PrintRoutingSlip(CGAppointment appt) 3218 3217 { 3218 //get this appointment's order 3219 //Today's appointments 3220 var todaysAppts = (from lkappts in this.Document.Appointments.AppointmentTable.Values.Cast<CGAppointment>() 3221 where lkappts.StartTime > appt.StartTime.Date && lkappts.StartTime < appt.StartTime.AddDays(1).Date 3222 orderby lkappts.StartTime 3223 select lkappts).ToList(); 3224 3225 //Find the order of the appointment 3226 int apptOrder = todaysAppts.FindIndex(eachappt => eachappt.StartTime == appt.StartTime && eachappt.PatientID == appt.PatientID); 3227 3228 //Index is zero based, so add 1 3229 apptOrder++; 3230 3231 //Send that to the routing slip as a parameter 3219 3232 PrintDocument pd = new PrintDocument() { DocumentName = "Routing Slip for Appt " + appt.AppointmentKey }; 3220 pd.PrintPage += (object s, System.Drawing.Printing.PrintPageEventArgs e) => CGDocumentManager.Current.PrintingObject.PrintRoutingSlip(appt, "Routing Slip", e);3233 pd.PrintPage += (object s, System.Drawing.Printing.PrintPageEventArgs e) => CGDocumentManager.Current.PrintingObject.PrintRoutingSlip(appt, apptOrder, e); 3221 3234 pd.Print(); 3222 3235 } -
Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj
r1111 r1112 141 141 <ItemGroup> 142 142 <Compile Include="Provider.cs" /> 143 <Compile Include="strings.ar.Designer.cs"> 144 <AutoGen>True</AutoGen> 145 <DesignTime>True</DesignTime> 146 <DependentUpon>strings.ar.resx</DependentUpon> 147 </Compile> 148 <Compile Include="strings.Designer.cs"> 149 <AutoGen>True</AutoGen> 150 <DesignTime>True</DesignTime> 151 <DependentUpon>strings.resx</DependentUpon> 152 </Compile> 143 153 <Compile Include="UserPreferences.cs" /> 144 154 <None Include="app.config" /> … … 412 422 <EmbeddedResource Include="LoadingSplash.resx"> 413 423 <DependentUpon>LoadingSplash.cs</DependentUpon> 424 </EmbeddedResource> 425 <EmbeddedResource Include="strings.ar.resx"> 426 <Generator>ResXFileCodeGenerator</Generator> 427 <LastGenOutput>strings.ar.Designer.cs</LastGenOutput> 428 </EmbeddedResource> 429 <EmbeddedResource Include="strings.resx"> 430 <Generator>ResXFileCodeGenerator</Generator> 431 <LastGenOutput>strings.Designer.cs</LastGenOutput> 414 432 </EmbeddedResource> 415 433 <EmbeddedResource Include="UCPatientAppts.resx"> -
Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj.user
r1111 r1112 37 37 </RemoteDebugMachine> 38 38 <StartAction>Project</StartAction> 39 <StartArguments>/s=172.16.16.108 /p=9250 /a=BASMA.ALDWAIRI /v=SELEN.123 </StartArguments>39 <StartArguments>/s=172.16.16.108 /p=9250 /a=BASMA.ALDWAIRI /v=SELEN.123 /culture="ar-JO"</StartArguments> 40 40 <StartPage> 41 41 </StartPage> -
Scheduling/trunk/cs/bsdx0200GUISourceCode/Patient.cs
r1111 r1112 54 54 { 55 55 if (Age.TotalDays / 365.24 > 5) 56 return Math.Floor((Age.TotalDays / 365.24)).ToString() + " years";56 return Math.Floor((Age.TotalDays / 365.24)).ToString() + " " + strings.years; 57 57 else 58 return Math.Floor((Age.TotalDays / 365.24)).ToString() + " years &"59 + Math.Floor(Age.TotalDays % 365.24 / 30).ToString() + " months";58 return Math.Floor((Age.TotalDays / 365.24)).ToString() + " " + strings.years + " " + strings.and + " " 59 + Math.Floor(Age.TotalDays % 365.24 / 30).ToString() + " " + strings.months; 60 60 } 61 61 } -
Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs
r1110 r1112 9 9 namespace IndianHealthService.ClinicalScheduling 10 10 { 11 public class Printing11 public partial class Printing 12 12 { 13 13 /// <summary> … … 48 48 //Typical manipulable print area 49 49 Rectangle printArea = e.MarginBounds; 50 50 Rectangle pageArea = e.PageBounds; 51 Rectangle headerArea = new Rectangle() 52 { 53 X = e.MarginBounds.X, 54 Y = e.PageBounds.Y, 55 Height = e.MarginBounds.Y - e.PageBounds.Y, 56 Width = e.MarginBounds.Width 57 }; 58 Rectangle footerArea = new Rectangle() 59 { 60 X = e.MarginBounds.X, 61 Y = e.MarginBounds.Height + headerArea.Height, 62 Width = e.MarginBounds.Width, 63 Height = pageArea.Height - (e.MarginBounds.Height + headerArea.Height) 64 }; 65 66 //print footer 67 StringFormat sfFooter = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; 68 string s = strings.Printed + ": " + DateTime.Now.ToString(); 69 Font fFooter = new Font(FontFamily.GenericSerif, 7); 70 g.DrawString(s, fFooter, Brushes.Black, footerArea, sfFooter); 71 51 72 //resource we want to print 52 73 dsPatientApptDisplay2.BSDXResourceRow r = ds.BSDXResource[resourceToPrint]; … … 54 75 //header 55 76 string toprint; 56 if (beg == end) toprint = "Appointments for " + r.RESOURCE_NAME + " on " + beg.ToLongDateString();77 if (beg.Date == end.Date) toprint = "Appointments for " + r.RESOURCE_NAME + " on " + beg.ToLongDateString(); 57 78 else toprint = "Appointments for " + r.RESOURCE_NAME + " from " + beg.ToShortDateString() + " to " 58 79 + end.ToShortDateString(); … … 60 81 61 82 //Move print area down 62 printArea.Height -= (int)f14bold.GetHeight(); 63 printArea.Y += (int)f14bold.GetHeight(); 83 int titleHeight = (int)g.MeasureString(toprint, f14bold, printArea.Size).Height; 84 printArea.Height -= titleHeight; 85 printArea.Y += titleHeight; 64 86 65 87 //Draw Line … … 134 156 Width = e.MarginBounds.Width 135 157 }; 136 137 // A few fonts138 Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title139 Font fBody = new Font(FontFamily.GenericSerif, 12);140 Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);141 142 StringFormat sf0 = new StringFormat()143 {144 Alignment = StringAlignment.Center,145 LineAlignment = StringAlignment.Center146 };147 148 // Draw Header149 string division = CGDocumentManager.Current.ConnectInfo.DivisionName;150 g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);151 152 // Draw Title153 StringFormat sf = new StringFormat();154 sf.Alignment = StringAlignment.Center; //for title & header155 156 string s = "Appointment Reminder Slip";157 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title158 159 // move down160 int titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;161 printArea.Y += titleHeight;162 printArea.Height -= titleHeight;163 164 // draw underline165 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));166 printArea.Y += 15;167 printArea.Height -= 15;168 169 // draw curved rectangle.170 Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, 300);171 using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10))172 {173 g.DrawPath(Pens.Black, path);174 }175 176 // group header177 g.DrawString("Patient Information", fGroupTitle, Brushes.Black, new Point(personalInfoRectangle.X, personalInfoRectangle.Y - 20));178 179 // inner rectangle for drawing strings:180 Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, 280 - 40, 300 - 40);181 182 // Strings to write183 StringBuilder sb = new StringBuilder(500);184 sb.AppendLine("Name:" + "\t" + appt.Patient.Name);185 sb.AppendLine();186 sb.AppendLine("ID#:" + "\t" + appt.Patient.ID);187 sb.AppendLine();188 sb.AppendLine("DOB:" + "\t" + appt.Patient.DOB.ToShortDateString());189 sb.AppendLine();190 sb.AppendLine("Age:" + "\t" + appt.Patient.UserFriendlyAge);191 sb.AppendLine();192 sb.AppendLine("Sex:" + "\t" + appt.Patient.Sex.ToString());193 194 // Draw them195 g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle);196 197 // draw curved rectangle198 Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, 300);199 using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10))200 {201 g.DrawPath(Pens.Black, path);202 }203 204 // group header205 g.DrawString("Appointment Information", fGroupTitle, Brushes.Black, new Point(apptInfoRectangle.X, apptInfoRectangle.Y - 20));206 207 // Strings to write208 sb = new StringBuilder();209 sb.AppendLine("Clinic: " + "\t" + appt.Resource);210 sb.AppendLine();211 sb.AppendLine("Date: " + "\t" + appt.StartTime.ToShortDateString());212 sb.AppendLine();213 sb.AppendLine("Day: " + "\t" + appt.StartTime.DayOfWeek.ToString());214 sb.AppendLine();215 sb.AppendLine("Time: " + "\t" + appt.StartTime.ToShortTimeString());216 217 // Draw them218 Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, 280 - 40, 300 - 40);219 220 // Draw them221 g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle);222 223 // Move Drawing Rectangle Down224 printArea.Y += 300 + 30 + 20;225 printArea.Height -= 300 + 30 + 20;226 227 // Draw New Line228 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));229 printArea.Y += 5;230 printArea.Height -= 5;231 232 // Draw new Title233 s = "Clinic Instructions";234 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title235 236 // move down237 titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;238 printArea.Y += titleHeight;239 printArea.Height -= titleHeight;240 241 // Draw New Line242 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));243 printArea.Y += 15;244 printArea.Height -= 15;245 246 // Get Resource Clinic Appointment Letter Text247 DataTable resources = CGDocumentManager.Current.GlobalDataSet.Tables["Resources"];248 249 string ltrTxt = (from resource in resources.AsEnumerable()250 where resource.Field<string>("RESOURCE_NAME") == appt.Resource251 select resource.Field<string>("LETTER_TEXT")).SingleOrDefault<string>();252 253 if (String.IsNullOrWhiteSpace(ltrTxt)) ltrTxt = "(no instructions provided)";254 255 g.DrawString(ltrTxt, fBody, Brushes.Black, printArea);256 257 int ltrTxtHeight = (int)g.MeasureString(ltrTxt, fBody).Height;258 259 printArea.Y += ltrTxtHeight + 15;260 printArea.Height -= ltrTxtHeight + 15;261 262 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));263 printArea.Y += 5;264 printArea.Height -= 5;265 266 s = "Notes";267 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); // Notes title268 269 // move down270 titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;271 printArea.Y += titleHeight;272 printArea.Height -= titleHeight;273 274 // Draw New Line275 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));276 printArea.Y += 15;277 printArea.Height -= 15;278 279 // Draw Notes Area280 using (GraphicsPath path = GetRoundedRectPath(printArea, 15))281 {282 g.DrawPath(Pens.Black, path);283 }284 285 // Draw Footer286 // Get footer rectangle287 158 Rectangle footerArea = new Rectangle() 288 159 { … … 293 164 }; 294 165 166 167 // A few fonts 168 Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title 169 Font fBody = new Font(FontFamily.GenericSerif, 12); 170 Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold); 171 172 StringFormat sf0 = new StringFormat() 173 { 174 Alignment = StringAlignment.Center, 175 LineAlignment = StringAlignment.Center 176 }; 177 178 // Draw Header 179 string division = CGDocumentManager.Current.ConnectInfo.DivisionName; 180 g.DrawString(division, fBody, Brushes.Black, headerArea, sf0); 181 182 // Draw Title 183 StringFormat sf = new StringFormat(); 184 sf.Alignment = StringAlignment.Center; //for title & header 185 186 //string s = "Appointment Reminder Slip"; 187 string s = strings.ApptRoutingSlip; 188 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title 189 190 // move down 191 int titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height; 192 printArea.Y += titleHeight; 193 printArea.Height -= titleHeight; 194 195 // draw underline 196 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 197 printArea.Y += 15; 198 printArea.Height -= 15; 199 200 // draw curved rectangle. 201 Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, 300); 202 using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10)) 203 { 204 g.DrawPath(Pens.Black, path); 205 } 206 207 // group header 208 s = strings.PtInfo; 209 StringFormat sf3 = new StringFormat(System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft ? StringFormatFlags.DirectionRightToLeft : 0); 210 g.DrawString(s, fGroupTitle, Brushes.Black, new Rectangle(personalInfoRectangle.X, personalInfoRectangle.Y - 20,personalInfoRectangle.Width, 20),sf3); 211 212 // inner rectangle for drawing strings: 213 Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, 280 - 40, 300 - 40); 214 215 // Strings to write 216 StringBuilder sb = new StringBuilder(500); 217 sb.AppendLine(strings.Name + ":" + "\t" + appt.Patient.Name); 218 sb.AppendLine(); 219 sb.AppendLine(strings.ID + ":" + "\t" + appt.Patient.ID); 220 sb.AppendLine(); 221 sb.AppendLine(strings.DOB + ":" + "\t" + appt.Patient.DOB.ToShortDateString()); 222 sb.AppendLine(); 223 sb.AppendLine(strings.Age + ":" + "\t" + appt.Patient.UserFriendlyAge); 224 sb.AppendLine(); 225 s = appt.Patient.Sex == Sex.Male ? strings.Male : strings.Female; 226 sb.AppendLine(strings.Sex + ":" + "\t" + s); 227 228 // Draw them 229 sf3 = new StringFormat(System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft ? StringFormatFlags.DirectionRightToLeft : 0); 230 sf3.SetTabStops(0, new float[] {75} ); 231 sf3.SetDigitSubstitution(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID, StringDigitSubstitute.Traditional); 232 g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle, sf3); 233 234 // draw curved rectangle 235 Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, 300); 236 using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10)) 237 { 238 g.DrawPath(Pens.Black, path); 239 } 240 241 s = strings.ApptInfo; 242 // group header 243 g.DrawString(s, fGroupTitle, Brushes.Black, new Rectangle(apptInfoRectangle.X, apptInfoRectangle.Y - 20,apptInfoRectangle.Width, 20), sf3); 244 245 // Strings to write 246 sb = new StringBuilder(); 247 sb.AppendLine(strings.Clinic + ":" + "\t" + appt.Resource); 248 sb.AppendLine(); 249 sb.AppendLine(strings.Date + ":" + "\t" + appt.StartTime.ToShortDateString()); 250 sb.AppendLine(); 251 sb.AppendLine(strings.Day + ":" + "\t" + appt.StartTime.ToString("dddd")); 252 sb.AppendLine(); 253 sb.AppendLine(strings.Time + ":" + "\t" + appt.StartTime.ToShortTimeString()); 254 255 // Draw them 256 Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, 280 - 40, 300 - 40); 257 258 // Draw them 259 g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle, sf3); 260 261 // Move Drawing Rectangle Down 262 printArea.Y += 300 + 30 + 20; 263 printArea.Height -= 300 + 30 + 20; 264 265 // Draw New Line 266 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 267 printArea.Y += 5; 268 printArea.Height -= 5; 269 270 // Draw new Title 271 s = strings.ClinicInstructions; 272 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title 273 274 // move down 275 titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height; 276 printArea.Y += titleHeight; 277 printArea.Height -= titleHeight; 278 279 // Draw New Line 280 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 281 printArea.Y += 15; 282 printArea.Height -= 15; 283 284 // Get Resource Clinic Appointment Letter Text 285 DataTable resources = CGDocumentManager.Current.GlobalDataSet.Tables["Resources"]; 286 287 string ltrTxt = (from resource in resources.AsEnumerable() 288 where resource.Field<string>("RESOURCE_NAME") == appt.Resource 289 select resource.Field<string>("LETTER_TEXT")).SingleOrDefault<string>(); 290 291 if (String.IsNullOrWhiteSpace(ltrTxt)) ltrTxt = strings.NoInstructionsProvided; 292 293 g.DrawString(ltrTxt, fBody, Brushes.Black, printArea, sf3); 294 295 int ltrTxtHeight = (int)g.MeasureString(ltrTxt, fBody).Height; 296 297 printArea.Y += ltrTxtHeight + 15; 298 printArea.Height -= ltrTxtHeight + 15; 299 300 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 301 printArea.Y += 5; 302 printArea.Height -= 5; 303 304 s = strings.Notes; 305 g.DrawString(s, fTitle, Brushes.Black, printArea, sf); // Notes title 306 307 // move down 308 titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height; 309 printArea.Y += titleHeight; 310 printArea.Height -= titleHeight; 311 312 // Draw New Line 313 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 314 printArea.Y += 15; 315 printArea.Height -= 15; 316 317 // Draw Notes Area 318 using (GraphicsPath path = GetRoundedRectPath(printArea, 15)) 319 { 320 g.DrawPath(Pens.Black, path); 321 } 322 295 323 //use sf0 to print the footer (center all the way) 296 s = "Printed: " + DateTime.Now.ToString();324 s = strings.Printed + ": " + DateTime.Now.ToString(); 297 325 Font fFooter = new Font(FontFamily.GenericSerif, 7); 298 326 g.DrawString(s, fFooter, Brushes.Black, footerArea, sf0); … … 510 538 /// <param name="title">String to print for title</param> 511 539 /// <param name="e">etc</param> 512 public virtual void PrintRoutingSlip(CGAppointment a , string title, PrintPageEventArgs e)540 public virtual void PrintRoutingSlip(CGAppointment appt, int apptOrder, PrintPageEventArgs e) 513 541 { 542 // Prep 543 Graphics g = e.Graphics; 514 544 Rectangle printArea = e.MarginBounds; 515 Graphics g = e.Graphics; 545 Rectangle pageArea = e.PageBounds; 546 Rectangle headerArea = new Rectangle() 547 { 548 X = e.MarginBounds.X, 549 Y = e.PageBounds.Y, 550 Height = e.MarginBounds.Y - e.PageBounds.Y, 551 Width = e.MarginBounds.Width 552 }; 553 Rectangle footerArea = new Rectangle() 554 { 555 X = e.MarginBounds.X, 556 Y = e.MarginBounds.Height + headerArea.Height, 557 Width = e.MarginBounds.Width, 558 Height = pageArea.Height - (e.MarginBounds.Height + headerArea.Height) 559 }; 560 561 const int part1Height = 400; 562 string s; 563 564 // A few fonts 565 Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title 566 Font fBody = new Font(FontFamily.GenericSerif, 12); 567 Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold); 568 569 StringFormat sf0 = new StringFormat() 570 { 571 Alignment = StringAlignment.Center, 572 LineAlignment = StringAlignment.Center 573 }; 574 575 // Draw Header 576 string division = CGDocumentManager.Current.ConnectInfo.DivisionName; 577 g.DrawString(division, fBody, Brushes.Black, headerArea, sf0); 578 579 // Draw Title 516 580 StringFormat sf = new StringFormat(); 517 sf.Alignment = StringAlignment.Center; //for title 518 Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title 519 Font fBody = new Font(FontFamily.GenericSerif, 18); 520 Font fBodyEm = new Font(FontFamily.GenericSerif, 18, FontStyle.Bold); 581 sf.Alignment = StringAlignment.Center; //for title & header 582 string title = "Routing Slip"; 521 583 g.DrawString(title, fTitle, Brushes.Black, printArea, sf); //title 522 584 … … 528 590 // draw underline 529 591 g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y)); 530 531 // move down532 592 printArea.Y += 15; 533 593 printArea.Height -= 15; 534 594 535 //construct what to print 536 string toprint = "Patient: " + a.PatientName + "\t" + "ID: " + a.HealthRecordNumber; 537 toprint += "\n\n"; 538 toprint += "Clinic: " + a.Resource; 539 toprint += "\n\n"; 540 toprint += "Appointment Time: " + a.StartTime; 541 toprint += "\n\n"; 542 toprint += "Notes:\n" + a.Note; 543 544 //print 545 g.DrawString(toprint, fBody, Brushes.Black, printArea); 546 547 // Print Date Printed 548 //sf to move to bottom center 549 StringFormat sf2 = new StringFormat(); 550 sf2.LineAlignment = StringAlignment.Far; 551 sf2.Alignment = StringAlignment.Center; 552 553 //Print 554 Font fFooter = new Font(FontFamily.GenericSerif, 8); 555 g.DrawString("Printed: " + DateTime.Now, fFooter, Brushes.Black, printArea, sf2); 595 // draw curved rectangle. 596 Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, part1Height); 597 using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10)) 598 { 599 g.DrawPath(Pens.Black, path); 600 } 601 602 // group header 603 g.DrawString("Patient Information", fGroupTitle, Brushes.Black, new Point(personalInfoRectangle.X, personalInfoRectangle.Y - 20)); 604 605 // inner rectangle for drawing strings: 606 Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, personalInfoRectangle.Width - 40, personalInfoRectangle.Height - 40); 607 608 // Strings to write 609 StringBuilder sb = new StringBuilder(500); 610 sb.AppendLine("Name:" + "\t" + appt.Patient.Name); 611 sb.AppendLine(); 612 sb.AppendLine("ID#:" + "\t" + appt.Patient.ID); 613 sb.AppendLine(); 614 sb.AppendLine("DOB:" + "\t" + appt.Patient.DOB.ToShortDateString()); 615 sb.AppendLine(); 616 sb.AppendLine("Age:" + "\t" + appt.Patient.UserFriendlyAge); 617 sb.AppendLine(); 618 sb.AppendLine("Sex:" + "\t" + appt.Patient.Sex.ToString()); 619 620 // Draw them 621 g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle); 622 623 // draw curved rectangle 624 Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, part1Height); 625 using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10)) 626 { 627 g.DrawPath(Pens.Black, path); 628 } 629 630 // group header 631 g.DrawString("Appointment Information", fGroupTitle, Brushes.Black, new Point(apptInfoRectangle.X, apptInfoRectangle.Y - 20)); 632 633 // Strings to write 634 sb = new StringBuilder(); 635 sb.AppendLine("Clinic:"); 636 sb.AppendLine(appt.Resource); 637 sb.AppendLine(); 638 sb.AppendLine("Appointment Provider:"); 639 sb.AppendLine((appt.Provider == null) ? "(none)" : appt.Provider.ToString()); //Appt Provider or (none) if null 640 sb.AppendLine(); 641 sb.AppendLine("Patient Order:" + "\t" + apptOrder); 642 sb.AppendLine("Date: " + "\t" + appt.StartTime.ToShortDateString() + " " + appt.StartTime.ToShortTimeString()); 643 sb.AppendLine(); 644 sb.AppendLine("Appointment Note: "); 645 sb.AppendLine(String.IsNullOrWhiteSpace(appt.Note)? "(none)" : appt.Note); 646 647 // Draw them 648 Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, apptInfoRectangle.Width - 40, apptInfoRectangle.Height - 40); 649 650 // Draw them 651 g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle); 652 653 // Move Drawing Rectangle Down 654 printArea.Y += apptInfoRectangle.Height + 30 + 20; 655 printArea.Height -= apptInfoRectangle.Height + 30 + 20; 656 657 // Draw New Line 658 using (Pen dashpen = new Pen(Color.Black)) 659 { 660 dashpen.DashStyle = DashStyle.Dash; 661 g.DrawLine(dashpen, printArea.Location, new Point(printArea.Right, printArea.Y)); 662 } 663 664 printArea.Y += 5; 665 printArea.Height -= 5; 666 667 s = "Scratch Area"; 668 g.DrawString(s, fGroupTitle, Brushes.Black, printArea); 669 670 // move down 671 printArea.Y += 300; 672 printArea.Height -= 300; 673 674 //TODO: Put Next Appointment Area 675 using (Pen dashpen = new Pen(Color.Black)) 676 { 677 dashpen.DashStyle = DashStyle.Dot; 678 g.DrawLine(dashpen, printArea.Location, new Point(printArea.Right, printArea.Y)); 679 } 680 681 printArea.Y += 5; 682 printArea.Height -= 5; 683 684 s = "Next Appointment Instructions"; 685 g.DrawString(s, fGroupTitle, Brushes.Black, printArea); 686 687 // Draw Footer 688 //use sf0 to print the footer (center all the way) 689 s = "Printed: " + DateTime.Now.ToString(); 690 Font fFooter = new Font(FontFamily.GenericSerif, 7); 691 g.DrawString(s, fFooter, Brushes.Black, footerArea, sf0); 692 693 g.Dispose(); 694 556 695 } 557 696
Note:
See TracChangeset
for help on using the changeset viewer.