Print a Medical History with more than one page

This forum is for programmers who have questions about the source code.
Post Reply
japonte
Posts: 13
Joined: Tue Apr 16, 2013 1:07 pm

Print a Medical History with more than one page

Post by japonte » Thu Jul 18, 2013 10:16 am

I changed the file FormMedical.cs to allow the printing of a Medical History with more than one page. I share the code:

1) Replace the CreateDocument() method with the following code:

Code: Select all

//This method, along with CreateDocument() allow the printing of a Clinical History of more than one page.
private void butPrintMedical_Click(object sender,EventArgs e) {
	MigraDoc.DocumentObjectModel.Document doc = CreateDocument();
	MigraDoc.Rendering.Printing.MigraDocPrintDocument printdoc = new MigraDoc.Rendering.Printing.MigraDocPrintDocument();
	MigraDoc.Rendering.DocumentRenderer renderer = new MigraDoc.Rendering.DocumentRenderer(doc);
	renderer.PrepareDocument();
	printdoc.Renderer = renderer;

	try
	{
		pd = new PrintDocument();
		if (PrinterL.SetPrinter(pd, PrintSituation.Default))
		{
			printdoc.PrinterSettings = pd.PrinterSettings;
			printdoc.Print();
		}
	}
	catch
	{
		MessageBox.Show(Lan.g(this, "Printer not available"));
	}
}
2) Add this method:

Code: Select all

//This is a new method to create a MigraDoc object to print a Clinical History with more than one page
private MigraDoc.DocumentObjectModel.Document CreateDocument()
{
	MigraDoc.DocumentObjectModel.Document doc = new MigraDoc.DocumentObjectModel.Document();
	doc.DefaultPageSetup.PageWidth = MdDoc.Unit.FromInch(8.5);
	doc.DefaultPageSetup.PageHeight = MdDoc.Unit.FromInch(11);
	doc.DefaultPageSetup.TopMargin = MdDoc.Unit.FromInch(.5);
	doc.DefaultPageSetup.LeftMargin = MdDoc.Unit.FromInch(.5);
	doc.DefaultPageSetup.RightMargin = MdDoc.Unit.FromInch(.5);
	MigraDoc.DocumentObjectModel.Section section = doc.AddSection();
	string text;
	MigraDoc.DocumentObjectModel.Font headingFont = MigraDocHelper.CreateFont(13, true);
	MigraDoc.DocumentObjectModel.Font subHeadingFont = MigraDocHelper.CreateFont(10, true);
	MigraDoc.DocumentObjectModel.Font bodyFontx = MigraDocHelper.CreateFont(9, false);
	MigraDoc.DocumentObjectModel.Font nameFontx = MigraDocHelper.CreateFont(9, true);
	MigraDoc.DocumentObjectModel.Font totalFontx = MigraDocHelper.CreateFont(9, true);

	MdDoc.Paragraph par = section.AddParagraph();
	MdDoc.ParagraphFormat parformat = new MdDoc.ParagraphFormat();
	parformat.Alignment = MdDoc.ParagraphAlignment.Center;
	parformat.Font = MigraDocHelper.CreateFont(10, true);
	par.Format = parformat;

	text = Lan.g(this, "Medical History For ") + PatCur.FName + " " + PatCur.LName;
	par.AddFormattedText(text, headingFont);
	par.AddLineBreak();
	text = Lan.g(this, "Birthdate: ") + PatCur.Birthdate.ToShortDateString();
	par.AddText(text);
	par.AddLineBreak();
	text = Lan.g(this, "Created ") + DateTime.Now.ToString();
	par.AddText(text);
	par.AddLineBreak();

	if (gridDiseases.Rows.Count > 0)
	{
		MigraDocHelper.InsertSpacer(section, 20);
		par = section.AddParagraph();
		par.Format.Alignment = MdDoc.ParagraphAlignment.Center;                
		text = Lan.g(this, "Problems");
		par.AddFormattedText(text, headingFont);
		par.AddLineBreak();
		MigraDocHelper.InsertSpacer(section, 10);
		MigraDocHelper.DrawGrid(section, gridDiseases);
	}

	if (gridAllergies.Rows.Count > 0)
	{
		MigraDocHelper.InsertSpacer(section, 20);
		par = section.AddParagraph();
		par.Format.Alignment = MdDoc.ParagraphAlignment.Center;                
		text = Lan.g(this, "Allergies");
		par.AddFormattedText(text, headingFont);
		par.AddLineBreak();
		MigraDocHelper.InsertSpacer(section, 10);
		MigraDocHelper.DrawGrid(section, gridAllergies);
	}

	MigraDocHelper.InsertSpacer(section, 20);
	par = section.AddParagraph();
	par.Format.Alignment = MdDoc.ParagraphAlignment.Left;            
	text = Lan.g(this, "Premedicate (PAC or other): ") + (checkPremed.Checked ? "Y" : "N");
	par.AddFormattedText(text, headingFont);
	par.AddLineBreak();
	par.AddLineBreak();

	MigraDocHelper.InsertSpacer(section, 20);
	text = Lan.g(this, "Medical Urgent Note");            
	par.AddFormattedText(text, headingFont);     
	par.AddLineBreak();
	text = textMedUrgNote.Text;
	par.AddText(text);
	par.AddLineBreak();
	par.AddLineBreak();

	MigraDocHelper.InsertSpacer(section, 20);
	text = Lan.g(this, "Medical Summary");
	par.AddFormattedText(text, headingFont);
	par.AddLineBreak();
	text = textMedical.Text;
	par.AddFormattedText(text);
	par.AddLineBreak();

	text = Lan.g(this, "Medical History - Complete and Detailed");
	//MigraDocHelper.InsertSpacer(section, 10);
	par = section.AddParagraph();
	par.AddFormattedText(text, headingFont);
	par.Format.Alignment = MdDoc.ParagraphAlignment.Left;
	par.Format.Font = bodyFontx;
	par.AddLineBreak();
	text = textMedicalComp.Text;
	par = section.AddParagraph(text);
	par.Format.Alignment = MdDoc.ParagraphAlignment.Left;
	par.AddLineBreak();

	return doc;
}

dentalbrush
Posts: 2
Joined: Sat Dec 14, 2013 10:01 am

Re: Print a Medical History with more than one page

Post by dentalbrush » Sat Dec 14, 2013 10:05 am

Quick question, where and how exactly would one do this?

User avatar
jordansparks
Site Admin
Posts: 5739
Joined: Sun Jun 17, 2007 3:59 pm
Location: Salem, Oregon
Contact:

Re: Print a Medical History with more than one page

Post by jordansparks » Mon Jan 06, 2014 6:15 pm

I just moved this to the Developers forum. Regular users can't do this.
Jordan Sparks, DMD
http://www.opendental.com

Post Reply