private void gridEmailMessages_CellDoubleClick(object sender, UI.ODGridClickEventArgs e) { if (e.Row == -1) { return; } EmailMessage emailMessage = (EmailMessage)gridEmailMessages.Rows[e.Row].Tag; if (emailMessage.SentOrReceived == EmailSentOrReceived.WebMailReceived || emailMessage.SentOrReceived == EmailSentOrReceived.WebMailRecdRead || emailMessage.SentOrReceived == EmailSentOrReceived.WebMailSent || emailMessage.SentOrReceived == EmailSentOrReceived.WebMailSentRead) { //web mail uses special secure messaging portal FormWebMailMessageEdit FormWMME = new FormWebMailMessageEdit(emailMessage.PatNum, emailMessage.EmailMessageNum); if (FormWMME.ShowDialog() != DialogResult.Abort) //will only return Abort if validation fails on load, in which case the message will remain unread { EmailMessages.UpdateSentOrReceivedRead(emailMessage); //Mark the message read. } } else { FormEmailMessageEdit formEME = new FormEmailMessageEdit(emailMessage); formEME.ShowDialog(); emailMessage = EmailMessages.GetOne(emailMessage.EmailMessageNum); //Fetch from DB, in case changed to to decrypt. if (emailMessage != null && emailMessage.SentOrReceived != EmailSentOrReceived.ReceivedEncrypted) //emailMessage could be null if the message was deleted in FormEmailMessageEdit(). { EmailMessages.UpdateSentOrReceivedRead(emailMessage); } } FillGridEmailMessages(); //To show the email is read. }
private void butEmail_Click(object sender, EventArgs e) { EmailMessage message = new EmailMessage(); message.PatNum = PatCur.PatNum; message.ToAddress = PatCur.Email; message.FromAddress = PrefB.GetString("EmailSenderAddress"); FormEmailMessageEdit FormE = new FormEmailMessageEdit(message); FormE.IsNew = true; FormE.ShowDialog(); if (FormE.DialogResult == DialogResult.OK) { DialogResult = DialogResult.OK; } }
/// <summary>Also displays the dialog for the email. Must have already created and attached the pdf. Returns false if it could not create the email.</summary> private bool CreateEmailMessage() { string attachPath=FormEmailMessageEdit.GetAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); if(!PrefC.UsingAtoZfolder){ MsgBox.Show(this,"Could not create email because no AtoZ folder."); return false; } Patient pat=Patients.GetPat(StmtCur.PatNum); string oldPath=ODFileUtils.CombinePaths(ImageStore.GetPatientFolder(pat,ImageStore.GetPreferredAtoZpath()),Documents.GetByNum(StmtCur.DocNum).FileName); File.Copy(oldPath,filePathAndName);// //Process.Start(filePathAndName); EmailMessage message=new EmailMessage(); message.PatNum=pat.PatNum; message.ToAddress=pat.Email; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); string str; str=PrefC.GetString(PrefName.BillingEmailSubject); str=str.Replace("[nameF]",pat.GetNameFirst()); str=str.Replace("[nameFL]",pat.GetNameFL()); str=str.Replace("[namePref]",pat.Preferred); str=str.Replace("[PatNum]",pat.PatNum.ToString()); message.Subject=str; str=PrefC.GetString(PrefName.BillingEmailBodyText); str=str.Replace("[nameF]",pat.GetNameFirst()); str=str.Replace("[nameFL]",pat.GetNameFL()); str=str.Replace("[namePref]",pat.Preferred); str=str.Replace("[PatNum]",pat.PatNum.ToString()); message.BodyText=str; EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="Statement.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK){ return true; } return false; }
private void butSendEmail_Click(object sender,EventArgs e) { if(!Security.IsAuthorized(Permissions.EmailSend)) { return; } //Generate the CCD first so that any validation errors are apparent and up front. //It is better to not let the user waste their time creating a referral if there is a basic validation issue with the CCD generation. string ccd=""; try { ccd=EhrCCD.GenerateSummaryOfCare(PatCur); } catch(Exception ex) { MessageBox.Show(ex.Message); return; } FormReferralsPatient FormRP=new FormReferralsPatient(); FormRP.PatNum=PatCur.PatNum; FormRP.IsSelectionMode=true; if(FormRP.ShowDialog()==DialogResult.Cancel) { MessageBox.Show("Summary of Care not exported."); return; } Cursor=Cursors.WaitCursor; EmailAddress emailAddressFrom=EmailAddresses.GetByClinic(0);//Default for clinic/practice. EmailMessage emailMessage=new EmailMessage(); emailMessage.PatNum=PatCur.PatNum; emailMessage.MsgDateTime=DateTime.Now; emailMessage.SentOrReceived=EmailSentOrReceived.Neither;//To force FormEmailMessageEdit into "compose" mode. emailMessage.FromAddress=emailAddressFrom.EmailUsername;//Cannot be emailAddressFrom.SenderAddress, because it would cause encryption to fail. emailMessage.ToAddress="";//User must set inside of FormEmailMessageEdit emailMessage.Subject="Summary of Care"; emailMessage.BodyText="Summary of Care"; try { emailMessage.Attachments.Add(EmailAttaches.CreateAttach("ccd.xml",Encoding.UTF8.GetBytes(ccd))); emailMessage.Attachments.Add(EmailAttaches.CreateAttach("ccd.xsl",Encoding.UTF8.GetBytes(FormEHR.GetEhrResource("CCD")))); } catch(Exception ex) { Cursor=Cursors.Default; MessageBox.Show(ex.Message); return; } EmailMessages.Insert(emailMessage); FormEmailMessageEdit formE=new FormEmailMessageEdit(emailMessage); if(formE.ShowDialog()==DialogResult.OK) { EhrMeasureEvent newMeasureEvent=new EhrMeasureEvent(); newMeasureEvent.DateTEvent=DateTime.Now; newMeasureEvent.EventType=EhrMeasureEventType.SummaryOfCareProvidedToDr; newMeasureEvent.PatNum=PatCur.PatNum; newMeasureEvent.FKey=FormRP.RefAttachNum;//Can be 0 if user didn't pick a referral for some reason. EhrMeasureEvents.Insert(newMeasureEvent); newMeasureEvent=new EhrMeasureEvent(); newMeasureEvent.DateTEvent=DateTime.Now; newMeasureEvent.EventType=EhrMeasureEventType.SummaryOfCareProvidedToDrElectronic; newMeasureEvent.PatNum=PatCur.PatNum; newMeasureEvent.FKey=FormRP.RefAttachNum;//Can be 0 if user didn't pick a referral for some reason. EhrMeasureEvents.Insert(newMeasureEvent); FillGridSent(); } Cursor=Cursors.Default; }
private void butSendEmail_Click(object sender,EventArgs e) { FormReferralsPatient FormRP=new FormReferralsPatient(); FormRP.PatNum=PatCur.PatNum; FormRP.IsSelectionMode=true; if(FormRP.ShowDialog()==DialogResult.Cancel) { MessageBox.Show("Summary of Care not exported."); return; } string ccd=""; try { ccd=EhrCCD.GenerateSummaryOfCare(PatCur); } catch(Exception ex) { MessageBox.Show(ex.Message); return; } Cursor=Cursors.WaitCursor; EmailAddress emailAddressFrom=EmailAddresses.GetByClinic(0);//Default for clinic/practice. EmailMessage emailMessage=new EmailMessage(); emailMessage.PatNum=PatCur.PatNum; emailMessage.MsgDateTime=DateTime.Now; emailMessage.SentOrReceived=EmailSentOrReceived.Neither;//To force FormEmailMessageEdit into "compose" mode. emailMessage.FromAddress=emailAddressFrom.EmailUsername;//Cannot be emailAddressFrom.SenderAddress, because it would cause encryption to fail. emailMessage.ToAddress="";//User must set inside of FormEmailMessageEdit emailMessage.Subject="Summary of Care"; emailMessage.BodyText="Summary of Care"; try { EmailMessages.CreateAttachmentFromText(emailMessage,ccd,"ccd.xml"); EmailMessages.CreateAttachmentFromText(emailMessage,FormEHR.GetEhrResource("CCD"),"ccd.xsl"); } catch(Exception ex) { Cursor=Cursors.Default; MessageBox.Show(ex.Message); return; } EmailMessages.Insert(emailMessage); FormEmailMessageEdit formE=new FormEmailMessageEdit(emailMessage); if(formE.ShowDialog()==DialogResult.OK) { EhrMeasureEvent newMeasureEvent=new EhrMeasureEvent(); newMeasureEvent.DateTEvent=DateTime.Now; newMeasureEvent.EventType=EhrMeasureEventType.SummaryOfCareProvidedToDr; newMeasureEvent.PatNum=PatCur.PatNum; long fkey=EhrMeasureEvents.Insert(newMeasureEvent); newMeasureEvent=new EhrMeasureEvent(); newMeasureEvent.DateTEvent=DateTime.Now; newMeasureEvent.FKey=fkey; newMeasureEvent.EventType=EhrMeasureEventType.SummaryOfCareProvidedToDrElectronic; newMeasureEvent.PatNum=PatCur.PatNum; newMeasureEvent.FKey=FormRP.RefAttachNum;//Can be 0 if user didn't pick a referral for some reason. EhrMeasureEvents.Insert(newMeasureEvent); FillGridSent(); } Cursor=Cursors.Default; }
private void SaveAttachment() { Patient PatCur = Patients.GetPat(PatNum); //if(PatCur.ImageFolder=="") { // MsgBox.Show(this,"Invalid patient image folder."); // return; //} if (!PrefC.UsingAtoZfolder) { MsgBox.Show(this, "Error. Not using AtoZ images folder."); return; } string patfolder = ImageStore.GetPatientFolder(PatCur, ImageStore.GetPreferredAtoZpath()); //ODFileUtils.CombinePaths( //FormPath.GetPreferredImagePath(),PatCur.ImageFolder.Substring(0,1).ToUpper(),PatCur.ImageFolder); //if(!Directory.Exists(patfolder)) { // MsgBox.Show(this,"Patient folder not found in AtoZ folder."); // return; //} Document doc = Docs[gridMain.GetSelectedIndex()]; if (!ImageHelper.HasImageExtension(doc.FileName)) { MsgBox.Show(this, "Invalid file. Only images may be attached, no other file format."); return; } string oldPath = ODFileUtils.CombinePaths(patfolder, doc.FileName); Random rnd = new Random(); string newName = DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.TimeOfDay.Ticks.ToString() + rnd.Next(1000).ToString() + Path.GetExtension(oldPath); string attachPath = FormEmailMessageEdit.GetAttachPath(); string newPath = ODFileUtils.CombinePaths(attachPath, newName); try { if (ImageHelper.HasImageExtension(oldPath)) { if (doc.CropH != 0 || doc.CropW != 0 || doc.CropX != 0 || doc.CropY != 0 || doc.DegreesRotated != 0 || doc.IsFlipped || doc.WindowingMax != 0 || doc.WindowingMin != 0) { //this does result in a significantly larger images size if jpg. A later optimization would recompress it. Bitmap bitmapold = (Bitmap)Bitmap.FromFile(oldPath); Bitmap bitmapnew = ImageHelper.ApplyDocumentSettingsToImage(doc, bitmapold, ImageSettingFlags.ALL); bitmapnew.Save(newPath); } else { File.Copy(oldPath, newPath); } } else { File.Copy(oldPath, newPath); } ClaimAttachNew = new ClaimAttach(); ClaimAttachNew.DisplayedFileName = Docs[gridMain.GetSelectedIndex()].FileName; ClaimAttachNew.ActualFileName = newName; DialogResult = DialogResult.OK; } catch (FileNotFoundException ex) { MessageBox.Show(Lan.g(this, "File not found: ") + ex.Message); return; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void menuEmail_Click(object sender,System.EventArgs e) { if(((MenuItem)sender).Tag==null){ return; } LabelSingle label=new LabelSingle(); if(((MenuItem)sender).Tag.GetType()==typeof(Referral)) { Referral refer=(Referral)((MenuItem)sender).Tag; if(refer.EMail==""){ return; //MsgBox.Show(this,""); } EmailMessage message=new EmailMessage(); message.PatNum=CurPatNum; Patient pat=Patients.GetPat(CurPatNum); message.ToAddress=refer.EMail;//pat.Email; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); message.Subject=Lan.g(this,"RE: ")+pat.GetNameFL(); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK) { RefreshCurrentModule(); } } }
/// <summary>Also displays the dialog for the email. Must have already created and attached the pdf. Returns false if it could not create the email.</summary> private bool CreateEmailMessage(){ string attachPath=EmailAttaches.GetAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); if(!PrefC.AtoZfolderUsed){ MsgBox.Show(this,"Could not create email because no AtoZ folder."); return false; } Patient pat=Patients.GetPat(StmtCur.PatNum); string oldPath=ODFileUtils.CombinePaths(ImageStore.GetPatientFolder(pat,ImageStore.GetPreferredAtoZpath()),Documents.GetByNum(StmtCur.DocNum).FileName); File.Copy(oldPath,filePathAndName);// //Process.Start(filePathAndName); EmailMessage message=Statements.GetEmailMessageForStatement(StmtCur,pat); EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="Statement.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK){ return true; } return false; }
private void gridEmailMessages_CellDoubleClick(object sender,UI.ODGridClickEventArgs e) { if(e.Row==-1) { return; } EmailMessage emailMessage=(EmailMessage)gridEmailMessages.Rows[e.Row].Tag; if(emailMessage.SentOrReceived==EmailSentOrReceived.WebMailReceived || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailRecdRead || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailSent || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailSentRead) { //web mail uses special secure messaging portal FormWebMailMessageEdit FormWMME=new FormWebMailMessageEdit(emailMessage.PatNum,emailMessage.EmailMessageNum); if(FormWMME.ShowDialog()!=DialogResult.Abort) { //will only return Abort if validation fails on load, in which case the message will remain unread EmailMessages.UpdateSentOrReceivedRead(emailMessage);//Mark the message read. } } else { //When an email is read from the database for display in the inbox, the BodyText is limited to 50 characters and the RawEmailIn is blank. emailMessage=EmailMessages.GetOne(emailMessage.EmailMessageNum);//Refresh the email from the database to include the full BodyText and RawEmailIn. FormEmailMessageEdit formEME=new FormEmailMessageEdit(emailMessage); formEME.ShowDialog(); emailMessage=EmailMessages.GetOne(emailMessage.EmailMessageNum);//Fetch from DB, in case changed due to decrypt. if(emailMessage!=null && emailMessage.SentOrReceived!=EmailSentOrReceived.ReceivedEncrypted) {//emailMessage could be null if the message was deleted in FormEmailMessageEdit(). EmailMessages.UpdateSentOrReceivedRead(emailMessage); } } FillGridEmailMessages();//To show the email is read. }
private void butPrint_Click(object sender,EventArgs e) { if(!TryToSaveData()){ return; } SheetCur=Sheets.GetSheet(SheetCur.SheetNum); //whether this is a new sheet, or one pulled from the database, //it will have the extra parameter we are looking for. //A new sheet will also have a PatNum parameter which we will ignore. FormSheetOutputFormat FormS=new FormSheetOutputFormat(); if(SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) { FormS.PaperCopies=2; } else{ FormS.PaperCopies=1; } if(SheetCur.PatNum!=0 && SheetCur.SheetType!=SheetTypeEnum.DepositSlip) { Patient pat=Patients.GetPat(SheetCur.PatNum); if(SheetCur.SheetType==SheetTypeEnum.LabSlip) { FormS.IsForLab=true;//Changes label to "E-mail to Lab:" } else if(pat.Email!="") { FormS.EmailPatOrLabAddress=pat.Email; //No need to email to a patient for sheet types: LabelPatient (0), LabelCarrier (1), LabelReferral (2), ReferralSlip (3), LabelAppointment (4), Rx (5), Consent (6), ReferralLetter (8), ExamSheet (13), DepositSlip (14) //The data is too private to email unencrypted for sheet types: PatientForm (9), RoutingSlip (10), MedicalHistory (11), LabSlip (12) //A patient might want email for the following sheet types and the data is not very private: PatientLetter (7) if(SheetCur.SheetType==SheetTypeEnum.PatientLetter) { //This just defines the default selection. The user can manually change selections in FormSheetOutputFormat. FormS.EmailPatOrLab=true; FormS.PaperCopies--; } } } Referral referral=null; if(SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) { FormS.Email2Visible=true; SheetParameter parameter=SheetParameter.GetParamByName(SheetCur.Parameters,"ReferralNum"); if(parameter==null){//it can be null sometimes because of old bug in db. FormS.Email2Visible=false;//prevents trying to attach email to nonexistent referral. } else{ long referralNum=PIn.Long(parameter.ParamValue.ToString()); referral=Referrals.GetReferral(referralNum); if(referral.EMail!=""){ FormS.Email2Address=referral.EMail; FormS.Email2=true; FormS.PaperCopies--; } } } else{ FormS.Email2Visible=false; } FormS.ShowDialog(); if(FormS.DialogResult!=DialogResult.OK){ return; } if(FormS.PaperCopies>0){ SheetPrinting.Print(SheetCur,FormS.PaperCopies,RxIsControlled); } EmailMessage message; Random rnd=new Random(); string attachPath=EmailMessages.GetEmailAttachPath(); string fileName; string filePathAndName; EmailAddress emailAddress; Patient patCur=Patients.GetPat(SheetCur.PatNum); if(patCur==null) { emailAddress=EmailAddresses.GetByClinic(0); } else { emailAddress=EmailAddresses.GetByClinic(patCur.ClinicNum); } //Graphics g=this.CreateGraphics(); if(FormS.EmailPatOrLab){ fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); SheetPrinting.CreatePdf(SheetCur,filePathAndName); //Process.Start(filePathAndName); message=new EmailMessage(); message.PatNum=SheetCur.PatNum; message.ToAddress=FormS.EmailPatOrLabAddress; message.FromAddress=emailAddress.SenderAddress;//Can be blank just as it could with the old pref. message.Subject=SheetCur.Description.ToString();//this could be improved EmailAttach attach=new EmailAttach(); string shortFileName=Regex.Replace(SheetCur.Description.ToString(), @"[^\w'@-_()&]", ""); attach.DisplayedFileName=shortFileName+".pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); } if((SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) && FormS.Email2) { //email referral fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); SheetPrinting.CreatePdf(SheetCur,filePathAndName); //Process.Start(filePathAndName); message=new EmailMessage(); message.PatNum=SheetCur.PatNum; message.ToAddress=FormS.Email2Address; message.FromAddress=emailAddress.SenderAddress;//Can be blank just as it could with the old pref. message.Subject=Lan.g(this,"RE: ")+Patients.GetLim(SheetCur.PatNum).GetNameLF();//works even if patnum invalid //SheetCur.Description.ToString()+" to "+Referrals.GetNameFL(referral.ReferralNum);//this could be improved EmailAttach attach=new EmailAttach(); string shortFileName=Regex.Replace(SheetCur.Description.ToString(), @"[^\w,'@-_()&]", ""); attach.DisplayedFileName=shortFileName+".pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); } //g.Dispose(); DialogResult=DialogResult.OK; }
private void butPrint_Click(object sender,EventArgs e) { if(!TryToSaveData()){ return; } SheetCur=Sheets.GetSheet(SheetCur.SheetNum); //whether this is a new sheet, or one pulled from the database, //it will have the extra parameter we are looking for. //A new sheet will also have a PatNum parameter which we will ignore. FormSheetOutputFormat FormS=new FormSheetOutputFormat(); if(SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) { FormS.PaperCopies=2; } else{ FormS.PaperCopies=1; } if(SheetCur.PatNum!=0 && SheetCur.SheetType!=SheetTypeEnum.DepositSlip) { Patient pat=Patients.GetPat(SheetCur.PatNum); if(SheetCur.SheetType==SheetTypeEnum.LabSlip) { FormS.IsForLab=true;//Changes label to "E-mail to Lab:" } else if(pat.Email!="") { FormS.EmailPatOrLabAddress=pat.Email; FormS.EmailPatOrLab=true; FormS.PaperCopies--; } } Referral referral=null; if(SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) { FormS.Email2Visible=true; SheetParameter parameter=SheetParameter.GetParamByName(SheetCur.Parameters,"ReferralNum"); if(parameter==null){//it can be null sometimes because of old bug in db. FormS.Email2Visible=false;//prevents trying to attach email to nonexistent referral. } else{ long referralNum=PIn.Long(parameter.ParamValue.ToString()); referral=Referrals.GetReferral(referralNum); if(referral.EMail!=""){ FormS.Email2Address=referral.EMail; FormS.Email2=true; FormS.PaperCopies--; } } } else{ FormS.Email2Visible=false; } FormS.ShowDialog(); if(FormS.DialogResult!=DialogResult.OK){ return; } if(FormS.PaperCopies>0){ SheetPrinting.Print(SheetCur,FormS.PaperCopies,RxIsControlled); } EmailMessage message; Random rnd=new Random(); string attachPath=FormEmailMessageEdit.GetAttachPath(); string fileName; string filePathAndName; //Graphics g=this.CreateGraphics(); if(FormS.EmailPatOrLab){ fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); SheetPrinting.CreatePdf(SheetCur,filePathAndName); //Process.Start(filePathAndName); message=new EmailMessage(); message.PatNum=SheetCur.PatNum; message.ToAddress=FormS.EmailPatOrLabAddress; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); message.Subject=SheetCur.Description.ToString();//this could be improved EmailAttach attach=new EmailAttach(); string shortFileName=Regex.Replace(SheetCur.Description.ToString(), @"[^\w'@-_()&]", ""); attach.DisplayedFileName=shortFileName+".pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); } if((SheetCur.SheetType==SheetTypeEnum.ReferralSlip || SheetCur.SheetType==SheetTypeEnum.ReferralLetter) && FormS.Email2) { //email referral fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); SheetPrinting.CreatePdf(SheetCur,filePathAndName); //Process.Start(filePathAndName); message=new EmailMessage(); message.PatNum=SheetCur.PatNum; message.ToAddress=FormS.Email2Address; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); message.Subject=SheetCur.Description.ToString()+" to "+Referrals.GetNameFL(referral.ReferralNum);//this could be improved EmailAttach attach=new EmailAttach(); string shortFileName=Regex.Replace(SheetCur.Description.ToString(), @"[^\w,'@-_()&]", ""); attach.DisplayedFileName=shortFileName+".pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); } //g.Dispose(); DialogResult=DialogResult.OK; }
private void butPrint_Click(object sender, EventArgs e) { if (!TryToSaveData()) { return; } SheetCur = Sheets.GetSheet(SheetCur.SheetNum); //whether this is a new sheet, or one pulled from the database, //it will have the extra parameter we are looking for. //A new sheet will also have a PatNum parameter which we will ignore. FormSheetOutputFormat FormS = new FormSheetOutputFormat(); if (SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) { FormS.PaperCopies = 2; } else { FormS.PaperCopies = 1; } if (SheetCur.PatNum != 0 && SheetCur.SheetType != SheetTypeEnum.DepositSlip) { Patient pat = Patients.GetPat(SheetCur.PatNum); if (SheetCur.SheetType == SheetTypeEnum.LabSlip) { FormS.IsForLab = true; //Changes label to "E-mail to Lab:" } else if (pat.Email != "") { FormS.EmailPatOrLabAddress = pat.Email; FormS.EmailPatOrLab = true; FormS.PaperCopies--; } } Referral referral = null; if (SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) { FormS.Email2Visible = true; SheetParameter parameter = SheetParameter.GetParamByName(SheetCur.Parameters, "ReferralNum"); if (parameter == null) //it can be null sometimes because of old bug in db. { FormS.Email2Visible = false; //prevents trying to attach email to nonexistent referral. } else { long referralNum = PIn.Long(parameter.ParamValue.ToString()); referral = Referrals.GetReferral(referralNum); if (referral.EMail != "") { FormS.Email2Address = referral.EMail; FormS.Email2 = true; FormS.PaperCopies--; } } } else { FormS.Email2Visible = false; } FormS.ShowDialog(); if (FormS.DialogResult != DialogResult.OK) { return; } if (FormS.PaperCopies > 0) { SheetPrinting.Print(SheetCur, FormS.PaperCopies, RxIsControlled); } EmailMessage message; Random rnd = new Random(); string attachPath = FormEmailMessageEdit.GetAttachPath(); string fileName; string filePathAndName; //Graphics g=this.CreateGraphics(); if (FormS.EmailPatOrLab) { fileName = DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.TimeOfDay.Ticks.ToString() + rnd.Next(1000).ToString() + ".pdf"; filePathAndName = ODFileUtils.CombinePaths(attachPath, fileName); SheetPrinting.CreatePdf(SheetCur, filePathAndName); //Process.Start(filePathAndName); message = new EmailMessage(); message.PatNum = SheetCur.PatNum; message.ToAddress = FormS.EmailPatOrLabAddress; message.FromAddress = PrefC.GetString(PrefName.EmailSenderAddress); message.Subject = SheetCur.Description.ToString(); //this could be improved EmailAttach attach = new EmailAttach(); string shortFileName = Regex.Replace(SheetCur.Description.ToString(), @"[^\w'@-_()&]", ""); attach.DisplayedFileName = shortFileName + ".pdf"; attach.ActualFileName = fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE = new FormEmailMessageEdit(message); FormE.IsNew = true; FormE.ShowDialog(); } if ((SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) && FormS.Email2) { //email referral fileName = DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.TimeOfDay.Ticks.ToString() + rnd.Next(1000).ToString() + ".pdf"; filePathAndName = ODFileUtils.CombinePaths(attachPath, fileName); SheetPrinting.CreatePdf(SheetCur, filePathAndName); //Process.Start(filePathAndName); message = new EmailMessage(); message.PatNum = SheetCur.PatNum; message.ToAddress = FormS.Email2Address; message.FromAddress = PrefC.GetString(PrefName.EmailSenderAddress); message.Subject = SheetCur.Description.ToString() + " to " + Referrals.GetNameFL(referral.ReferralNum); //this could be improved EmailAttach attach = new EmailAttach(); string shortFileName = Regex.Replace(SheetCur.Description.ToString(), @"[^\w,'@-_()&]", ""); attach.DisplayedFileName = shortFileName + ".pdf"; attach.ActualFileName = fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE = new FormEmailMessageEdit(message); FormE.IsNew = true; FormE.ShowDialog(); } //g.Dispose(); DialogResult = DialogResult.OK; }
private void gridComm_CellDoubleClick(object sender,OpenDental.UI.ODGridClickEventArgs e) { int row=(int)gridComm.Rows[e.Row].Tag; if(DataSetMain.Tables["Commlog"].Rows[row]["CommlogNum"].ToString()!="0") { Commlog CommlogCur= Commlogs.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["CommlogNum"].ToString())); FormCommItem FormCI=new FormCommItem(CommlogCur); FormCI.ShowDialog(); if(FormCI.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else if(DataSetMain.Tables["Commlog"].Rows[row]["EmailMessageNum"].ToString()!="0") { EmailMessage email= EmailMessages.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["EmailMessageNum"].ToString())); if(email.SentOrReceived==EmailSentOrReceived.WebMailReceived || email.SentOrReceived==EmailSentOrReceived.WebMailRecdRead || email.SentOrReceived==EmailSentOrReceived.WebMailSent || email.SentOrReceived==EmailSentOrReceived.WebMailSentRead) { //web mail uses special secure messaging portal FormWebMailMessageEdit FormWMME=new FormWebMailMessageEdit(PatCur.PatNum,email.EmailMessageNum); if(FormWMME.ShowDialog()==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else { FormEmailMessageEdit FormE=new FormEmailMessageEdit(email); FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } } else if(DataSetMain.Tables["Commlog"].Rows[row]["FormPatNum"].ToString()!="0") { FormPat form=FormPats.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["FormPatNum"].ToString())); FormFormPatEdit FormP=new FormFormPatEdit(); FormP.FormPatCur=form; FormP.ShowDialog(); if(FormP.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else if(DataSetMain.Tables["Commlog"].Rows[row]["SheetNum"].ToString()!="0") { Sheet sheet=Sheets.GetSheet(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["SheetNum"].ToString())); FormSheetFillEdit FormSFE=new FormSheetFillEdit(sheet); FormSFE.ShowDialog(); if(FormSFE.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } }
private void PrintStatementSheets(Statement stmt) { Cursor=Cursors.WaitCursor; Statements.Insert(stmt); SheetDef sheetDef=SheetUtil.GetStatementSheetDef(); Sheet sheet=SheetUtil.CreateSheet(sheetDef,stmt.PatNum,stmt.HidePayment); SheetFiller.FillFields(sheet,stmt); SheetUtil.CalculateHeights(sheet,Graphics.FromImage(new Bitmap(sheet.HeightPage,sheet.WidthPage)),stmt); string tempPath=CodeBase.ODFileUtils.CombinePaths(PrefL.GetTempFolderPath(),stmt.PatNum.ToString()+".pdf"); SheetPrinting.CreatePdf(sheet,tempPath,stmt);//We don't delete this from temp folder long category=0; for(int i=0;i<DefC.Short[(int)DefCat.ImageCats].Length;i++) { if(Regex.IsMatch(DefC.Short[(int)DefCat.ImageCats][i].ItemValue,@"S")) { category=DefC.Short[(int)DefCat.ImageCats][i].DefNum; break; } } if(category==0) { category=DefC.Short[(int)DefCat.ImageCats][0].DefNum;//put it in the first category. } //create doc-------------------------------------------------------------------------------------- OpenDentBusiness.Document docc=null; try { docc=ImageStore.Import(tempPath,category,Patients.GetPat(stmt.PatNum)); } catch { MsgBox.Show(this,"Error saving document."); //this.Cursor=Cursors.Default; return; } docc.ImgType=ImageType.Document; docc.DateCreated=stmt.DateSent; Documents.Update(docc); stmt.DocNum=docc.DocNum;//this signals the calling class that the pdf was created successfully. Statements.AttachDoc(stmt.StatementNum,docc.DocNum); //if(ImageStore.UpdatePatient == null){ // ImageStore.UpdatePatient = new FileStore.UpdatePatientDelegate(Patients.Update); //} Patient guar=Patients.GetPat(stmt.PatNum); string guarFolder=ImageStore.GetPatientFolder(guar,ImageStore.GetPreferredAtoZpath()); //OpenDental.Imaging.ImageStoreBase imageStore = OpenDental.Imaging.ImageStore.GetImageStore(guar); if(stmt.Mode_==StatementMode.Email) { if(!Security.IsAuthorized(Permissions.EmailSend)) { Cursor=Cursors.Default; return; } string attachPath=EmailAttaches.GetAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); File.Copy(ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder),filePathAndName); //Process.Start(filePathAndName); EmailMessage message=Statements.GetEmailMessageForStatement(stmt,guar); EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="Statement.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); //If user clicked delete or cancel, delete pdf and statement if(FormE.DialogResult==DialogResult.Cancel) { Patient pat; string patFolder; if(stmt.DocNum!=0) { //delete the pdf pat=Patients.GetPat(stmt.PatNum); patFolder=ImageStore.GetPatientFolder(pat,ImageStore.GetPreferredAtoZpath()); List<Document> listdocs=new List<Document>(); listdocs.Add(Documents.GetByNum(stmt.DocNum)); try { ImageStore.DeleteDocuments(listdocs,patFolder); } catch { //Image could not be deleted, in use. //This should never get hit because the file was created by this user within this method. //If the doc cannot be deleted, then we will not stop them, they will have to manually delete it from the images module. } } //delete statement Statements.Delete(stmt); } } else {//not email #if DEBUG //don't bother to check valid path because it's just debug. string imgPath=ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder); DateTime now=DateTime.Now; while(DateTime.Now<now.AddSeconds(5) && !File.Exists(imgPath)) {//wait up to 5 seconds. Application.DoEvents(); } Process.Start(imgPath); #else //Thread thread=new Thread(new ParameterizedThreadStart(SheetPrinting.PrintStatement)); //thread.Start(new List<object> { sheetDef,stmt,tempPath }); //NOTE: This is printing a "fresh" GDI+ version of the statment which is ever so slightly different than the PDFSharp statment that was saved to disk. sheet=SheetUtil.CreateSheet(sheetDef,stmt.PatNum,stmt.HidePayment); SheetFiller.FillFields(sheet,stmt); SheetUtil.CalculateHeights(sheet,Graphics.FromImage(new Bitmap(sheet.HeightPage,sheet.WidthPage)),stmt); SheetPrinting.Print(sheet,1,false,stmt);//use GDI+ printing, which is slightly different than the pdf. #endif } Cursor=Cursors.Default; }
/// <summary>Saves the statement. Attaches a pdf to it by creating a doc object. Prints it or emails it. </summary> private void PrintStatement(Statement stmt) { Cursor=Cursors.WaitCursor; Statements.Insert(stmt); FormRpStatement FormST=new FormRpStatement(); DataSet dataSet=AccountModules.GetStatementDataSet(stmt); FormST.CreateStatementPdf(stmt,PatCur,FamCur,dataSet); //if(ImageStore.UpdatePatient == null){ // ImageStore.UpdatePatient = new FileStore.UpdatePatientDelegate(Patients.Update); //} Patient guar=Patients.GetPat(stmt.PatNum); string guarFolder=ImageStore.GetPatientFolder(guar,ImageStore.GetPreferredAtoZpath()); //OpenDental.Imaging.ImageStoreBase imageStore = OpenDental.Imaging.ImageStore.GetImageStore(guar); if(stmt.Mode_==StatementMode.Email){ string attachPath=FormEmailMessageEdit.GetAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); File.Copy(ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder),filePathAndName); //Process.Start(filePathAndName); EmailMessage message=new EmailMessage(); message.PatNum=guar.PatNum; message.ToAddress=guar.Email; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); string str; str=PrefC.GetString(PrefName.BillingEmailSubject); str=str.Replace("[nameF]",guar.GetNameFirst()); str=str.Replace("[nameFL]",guar.GetNameFL()); str=str.Replace("[namePref]",guar.Preferred); str=str.Replace("[PatNum]",guar.PatNum.ToString()); message.Subject=str; str=PrefC.GetString(PrefName.BillingEmailBodyText); str=str.Replace("[nameF]",guar.GetNameFirst()); str=str.Replace("[nameFL]",guar.GetNameFL()); str=str.Replace("[namePref]",guar.Preferred); str=str.Replace("[PatNum]",guar.PatNum.ToString()); message.BodyText=str; EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="Statement.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); } else{ #if DEBUG //don't bother to check valid path because it's just debug. string imgPath=ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder); DateTime now=DateTime.Now; while(DateTime.Now<now.AddSeconds(5) && !File.Exists(imgPath)) {//wait up to 5 seconds. Application.DoEvents(); } Process.Start(imgPath); #else FormST.PrintStatement(stmt,false,dataSet,FamCur,PatCur); #endif } Cursor=Cursors.Default; }
private void ToolBarMainEmail_Click() { if(PrefC.GetBool(PrefName.FuchsOptionsOn)) { if(checkShowDiscount.Checked || checkShowIns.Checked) { if(MessageBox.Show(this,string.Format(Lan.g(this,"Do you want to remove insurance estimates and PPO discounts from e-mailed treatment plan?")),"Open Dental",MessageBoxButtons.YesNo,MessageBoxIcon.Question) != DialogResult.No) { checkShowDiscount.Checked=false; checkShowIns.Checked=false; FillMain(); } } } PrepImageForPrinting(); string attachPath=EmailMessages.GetEmailAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); MigraDoc.Rendering.PdfDocumentRenderer pdfRenderer=new MigraDoc.Rendering.PdfDocumentRenderer(true,PdfFontEmbedding.Always); pdfRenderer.Document=CreateDocument(); pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save(filePathAndName); //Process.Start(filePathAndName); EmailMessage message=new EmailMessage(); message.PatNum=PatCur.PatNum; message.ToAddress=PatCur.Email; message.FromAddress=EmailAddresses.GetByClinic(PatCur.ClinicNum).SenderAddress; message.Subject=Lan.g(this,"Treatment Plan"); EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="TreatmentPlan.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); //if(FormE.DialogResult==DialogResult.OK) { // RefreshCurrentModule(); //} }
private void gridProg_CellDoubleClick(object sender,ODGridClickEventArgs e) { Chartscrollval=gridProg.ScrollValue; DataRow row=(DataRow)gridProg.Rows[e.Row].Tag; if(row["ProcNum"].ToString()!="0"){ if(checkAudit.Checked){ MsgBox.Show(this,"Not allowed to edit procedures when in audit mode."); return; } Procedure proc=Procedures.GetOneProc(PIn.Long(row["ProcNum"].ToString()),true); if(ProcedureCodes.GetStringProcCode(proc.CodeNum)==ProcedureCodes.GroupProcCode){ FormProcGroup FormP=new FormProcGroup(); List<ProcGroupItem> groupItemList=ProcGroupItems.GetForGroup(proc.ProcNum); List<Procedure> procList=new List<Procedure>(); for(int i=0;i<groupItemList.Count;i++){ procList.Add(Procedures.GetOneProc(groupItemList[i].ProcNum,false)); } FormP.GroupCur=proc; FormP.GroupItemList=groupItemList; FormP.ProcList=procList; FormP.ShowDialog(); if(FormP.DialogResult==DialogResult.OK){ ModuleSelected(PatCur.PatNum); FillProgNotes(); } return; } else{ FormProcEdit FormP=new FormProcEdit(proc,PatCur,FamCur); Plugins.HookAddCode(this, "ContrChart.gridProg_CellDoubleClick_proc", proc, FormP); if(!FormP.IsDisposed) { //Form might be disposed by the above hook. FormP.ShowDialog(); } Plugins.HookAddCode(this, "ContrChart.gridProg_CellDoubleClick_proc2", proc, FormP); if(FormP.DialogResult!=DialogResult.OK) { return; } } } else if(row["CommlogNum"].ToString()!="0"){ Commlog comm=Commlogs.GetOne(PIn.Long(row["CommlogNum"].ToString())); FormCommItem FormC=new FormCommItem(comm); FormC.ShowDialog(); if(FormC.DialogResult!=DialogResult.OK){ return; } } else if(row["RxNum"].ToString()!="0") { RxPat rx=RxPats.GetRx(PIn.Long(row["RxNum"].ToString())); FormRxEdit FormRxE=new FormRxEdit(PatCur,rx); FormRxE.ShowDialog(); if(FormRxE.DialogResult!=DialogResult.OK){ return; } } else if(row["LabCaseNum"].ToString()!="0") { LabCase lab=LabCases.GetOne(PIn.Long(row["LabCaseNum"].ToString())); FormLabCaseEdit FormL=new FormLabCaseEdit(); FormL.CaseCur=lab; FormL.ShowDialog(); //needs to always refresh due to complex ok/cancel } else if(row["TaskNum"].ToString()!="0") { Task task=Tasks.GetOne(PIn.Long(row["TaskNum"].ToString())); if(task==null) { MsgBox.Show(this,"This task has been deleted by another user."); } else { FormTaskEdit FormT=new FormTaskEdit(task,task.Copy()); FormT.Closing+=new CancelEventHandler(TaskGoToEvent); FormT.Show();//non-modal } } else if(row["AptNum"].ToString()!="0") { //Appointment apt=Appointments.GetOneApt( FormApptEdit FormA=new FormApptEdit(PIn.Long(row["AptNum"].ToString())); //PinIsVisible=false FormA.IsInChartModule=true; FormA.ShowDialog(); if(FormA.CloseOD) { ((Form)this.Parent).Close(); return; } if(FormA.DialogResult!=DialogResult.OK) { return; } } else if(row["EmailMessageNum"].ToString()!="0") { EmailMessage msg=EmailMessages.GetOne(PIn.Long(row["EmailMessageNum"].ToString())); if(msg.SentOrReceived==EmailSentOrReceived.WebMailReceived || msg.SentOrReceived==EmailSentOrReceived.WebMailRecdRead || msg.SentOrReceived==EmailSentOrReceived.WebMailSent || msg.SentOrReceived==EmailSentOrReceived.WebMailSentRead) { //web mail uses special secure messaging portal FormWebMailMessageEdit FormWMME=new FormWebMailMessageEdit(PatCur.PatNum,msg.EmailMessageNum); if(FormWMME.ShowDialog()!=DialogResult.OK) { return; } } else { FormEmailMessageEdit FormE=new FormEmailMessageEdit(msg); FormE.ShowDialog(); if(FormE.DialogResult!=DialogResult.OK) { return; } } } else if(row["SheetNum"].ToString()!="0") { Sheet sheet=Sheets.GetSheet(PIn.Long(row["SheetNum"].ToString())); FormSheetFillEdit FormSFE=new FormSheetFillEdit(sheet); FormSFE.ShowDialog(); if(FormSFE.DialogResult!=DialogResult.OK) { return; } } else if(row["FormPatNum"].ToString()!="0"){ FormPat form=FormPats.GetOne(PIn.Long(row["FormPatNum"].ToString())); FormFormPatEdit FormP=new FormFormPatEdit(); FormP.FormPatCur=form; FormP.ShowDialog(); if(FormP.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum);//Why is this called here and down 3 lines? Do we need the Allocator, or should we return here? } } ModuleSelected(PatCur.PatNum); Reporting.Allocators.MyAllocator1_ProviderPayment.AllocateWithToolCheck(this.PatCur.Guarantor); }
/// <summary>Saves the statement. Attaches a pdf to it by creating a doc object. Prints it or emails it. </summary> private void PrintStatement(Statement stmt) { Cursor=Cursors.WaitCursor; Statements.Insert(stmt); FormRpStatement FormST=new FormRpStatement(); DataSet dataSet=AccountModules.GetStatementDataSet(stmt); FormST.CreateStatementPdf(stmt,PatCur,FamCur,dataSet); //if(ImageStore.UpdatePatient == null){ // ImageStore.UpdatePatient = new FileStore.UpdatePatientDelegate(Patients.Update); //} Patient guar=Patients.GetPat(stmt.PatNum); string guarFolder=ImageStore.GetPatientFolder(guar,ImageStore.GetPreferredAtoZpath()); //OpenDental.Imaging.ImageStoreBase imageStore = OpenDental.Imaging.ImageStore.GetImageStore(guar); if(stmt.Mode_==StatementMode.Email) { string attachPath=EmailMessages.GetEmailAttachPath(); Random rnd=new Random(); string fileName=DateTime.Now.ToString("yyyyMMdd")+"_"+DateTime.Now.TimeOfDay.Ticks.ToString()+rnd.Next(1000).ToString()+".pdf"; string filePathAndName=ODFileUtils.CombinePaths(attachPath,fileName); File.Copy(ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder),filePathAndName); //Process.Start(filePathAndName); EmailMessage message=Statements.GetEmailMessageForStatement(stmt,guar); EmailAttach attach=new EmailAttach(); attach.DisplayedFileName="Statement.pdf"; attach.ActualFileName=fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); //If user clicked delete or cancel, delete pdf and statement if(FormE.DialogResult==DialogResult.Cancel) { Patient pat; string patFolder; if(stmt.DocNum!=0) { //delete the pdf pat=Patients.GetPat(stmt.PatNum); patFolder=ImageStore.GetPatientFolder(pat,ImageStore.GetPreferredAtoZpath()); List<Document> listdocs=new List<Document>(); listdocs.Add(Documents.GetByNum(stmt.DocNum)); try { ImageStore.DeleteDocuments(listdocs,patFolder); } catch { //Image could not be deleted, in use. //This should never get hit because the file was created by this user within this method. //If the doc cannot be deleted, then we will not stop them, they will have to manually delete it from the images module. } } //delete statement Procedures.DetachFromInvoice(stmt.StatementNum); Adjustments.DetachFromInvoice(stmt.StatementNum); Statements.DeleteObject(stmt); } } else {//not email #if DEBUG //don't bother to check valid path because it's just debug. string imgPath=ImageStore.GetFilePath(Documents.GetByNum(stmt.DocNum),guarFolder); DateTime now=DateTime.Now; while(DateTime.Now<now.AddSeconds(5) && !File.Exists(imgPath)) {//wait up to 5 seconds. Application.DoEvents(); } Process.Start(imgPath); #else FormST.PrintStatement(stmt,false,dataSet,FamCur,PatCur); #endif } Cursor=Cursors.Default; }
private void OnEmail_Click() { //this button item will be disabled if pat does not have email address if(!Security.IsAuthorized(Permissions.EmailSend)){ return; } EmailMessage message=new EmailMessage(); message.PatNum=CurPatNum; Patient pat=Patients.GetPat(CurPatNum); message.ToAddress=pat.Email; message.FromAddress=EmailAddresses.GetByClinic(pat.ClinicNum).SenderAddress; FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK) { RefreshCurrentModule(); } }
private void gridComm_CellDoubleClick(object sender,OpenDental.UI.ODGridClickEventArgs e) { //TODO: transition this to checking the Tag object. int row=e.Row; if(!this.checkShowFamilyComm.Checked) {//if only showing entries for one patient instead of intermingled family entries int i; for(row=0,i=0;row<DataSetMain.Tables["Commlog"].Rows.Count;row++) { //Matching FName is not perfect because children can have the same names as parents. //But it does currently match the logic for display, so it will at least select the right row when double clicked. if(DataSetMain.Tables["Commlog"].Rows[row]["patName"].ToString()==PatCur.FName || DataSetMain.Tables["Commlog"].Rows[row]["patName"].ToString()=="") { if(i==e.Row) { break; } i++; } } } if(DataSetMain.Tables["Commlog"].Rows[row]["CommlogNum"].ToString()!="0") { Commlog CommlogCur= Commlogs.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["CommlogNum"].ToString())); FormCommItem FormCI=new FormCommItem(CommlogCur); FormCI.ShowDialog(); if(FormCI.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else if(DataSetMain.Tables["Commlog"].Rows[row]["EmailMessageNum"].ToString()!="0") { EmailMessage email= EmailMessages.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["EmailMessageNum"].ToString())); FormEmailMessageEdit FormE=new FormEmailMessageEdit(email); FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else if(DataSetMain.Tables["Commlog"].Rows[row]["FormPatNum"].ToString()!="0") { FormPat form=FormPats.GetOne(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["FormPatNum"].ToString())); FormFormPatEdit FormP=new FormFormPatEdit(); FormP.FormPatCur=form; FormP.ShowDialog(); if(FormP.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } else if(DataSetMain.Tables["Commlog"].Rows[row]["SheetNum"].ToString()!="0") { Sheet sheet=Sheets.GetSheet(PIn.Long(DataSetMain.Tables["Commlog"].Rows[row]["SheetNum"].ToString())); FormSheetFillEdit FormSFE=new FormSheetFillEdit(sheet); FormSFE.ShowDialog(); if(FormSFE.DialogResult==DialogResult.OK) { ModuleSelected(PatCur.PatNum); } } }
private void butPrint_Click(object sender, EventArgs e) { if (!TryToSaveData()) { return; } SheetCur = Sheets.GetSheet(SheetCur.SheetNum); //whether this is a new sheet, or one pulled from the database, //it will have the extra parameter we are looking for. //A new sheet will also have a PatNum parameter which we will ignore. FormSheetOutputFormat FormS = new FormSheetOutputFormat(); if (SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) { FormS.PaperCopies = 2; } else { FormS.PaperCopies = 1; } if (SheetCur.PatNum != 0 && SheetCur.SheetType != SheetTypeEnum.DepositSlip) { Patient pat = Patients.GetPat(SheetCur.PatNum); if (SheetCur.SheetType == SheetTypeEnum.LabSlip) { FormS.IsForLab = true; //Changes label to "E-mail to Lab:" } else if (pat.Email != "") { FormS.EmailPatOrLabAddress = pat.Email; //No need to email to a patient for sheet types: LabelPatient (0), LabelCarrier (1), LabelReferral (2), ReferralSlip (3), LabelAppointment (4), Rx (5), Consent (6), ReferralLetter (8), ExamSheet (13), DepositSlip (14) //The data is too private to email unencrypted for sheet types: PatientForm (9), RoutingSlip (10), MedicalHistory (11), LabSlip (12) //A patient might want email for the following sheet types and the data is not very private: PatientLetter (7) if (SheetCur.SheetType == SheetTypeEnum.PatientLetter) { //This just defines the default selection. The user can manually change selections in FormSheetOutputFormat. FormS.EmailPatOrLab = true; FormS.PaperCopies--; } } } Referral referral = null; if (SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) { FormS.Email2Visible = true; SheetParameter parameter = SheetParameter.GetParamByName(SheetCur.Parameters, "ReferralNum"); if (parameter == null) //it can be null sometimes because of old bug in db. { FormS.Email2Visible = false; //prevents trying to attach email to nonexistent referral. } else { long referralNum = PIn.Long(parameter.ParamValue.ToString()); referral = Referrals.GetReferral(referralNum); if (referral.EMail != "") { FormS.Email2Address = referral.EMail; FormS.Email2 = true; FormS.PaperCopies--; } } } else { FormS.Email2Visible = false; } FormS.ShowDialog(); if (FormS.DialogResult != DialogResult.OK) { return; } if (FormS.PaperCopies > 0) { SheetPrinting.Print(SheetCur, FormS.PaperCopies, RxIsControlled); } EmailMessage message; Random rnd = new Random(); string attachPath = EmailMessages.GetEmailAttachPath(); string fileName; string filePathAndName; EmailAddress emailAddress; Patient patCur = Patients.GetPat(SheetCur.PatNum); if (patCur == null) { emailAddress = EmailAddresses.GetByClinic(0); } else { emailAddress = EmailAddresses.GetByClinic(patCur.ClinicNum); } //Graphics g=this.CreateGraphics(); if (FormS.EmailPatOrLab) { fileName = DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.TimeOfDay.Ticks.ToString() + rnd.Next(1000).ToString() + ".pdf"; filePathAndName = ODFileUtils.CombinePaths(attachPath, fileName); SheetPrinting.CreatePdf(SheetCur, filePathAndName); //Process.Start(filePathAndName); message = new EmailMessage(); message.PatNum = SheetCur.PatNum; message.ToAddress = FormS.EmailPatOrLabAddress; message.FromAddress = emailAddress.SenderAddress; //Can be blank just as it could with the old pref. message.Subject = SheetCur.Description.ToString(); //this could be improved EmailAttach attach = new EmailAttach(); string shortFileName = Regex.Replace(SheetCur.Description.ToString(), @"[^\w'@-_()&]", ""); attach.DisplayedFileName = shortFileName + ".pdf"; attach.ActualFileName = fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE = new FormEmailMessageEdit(message); FormE.IsNew = true; FormE.ShowDialog(); } if ((SheetCur.SheetType == SheetTypeEnum.ReferralSlip || SheetCur.SheetType == SheetTypeEnum.ReferralLetter) && FormS.Email2) { //email referral fileName = DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.TimeOfDay.Ticks.ToString() + rnd.Next(1000).ToString() + ".pdf"; filePathAndName = ODFileUtils.CombinePaths(attachPath, fileName); SheetPrinting.CreatePdf(SheetCur, filePathAndName); //Process.Start(filePathAndName); message = new EmailMessage(); message.PatNum = SheetCur.PatNum; message.ToAddress = FormS.Email2Address; message.FromAddress = emailAddress.SenderAddress; //Can be blank just as it could with the old pref. message.Subject = Lan.g(this, "RE: ") + Patients.GetLim(SheetCur.PatNum).GetNameLF(); //works even if patnum invalid //SheetCur.Description.ToString()+" to "+Referrals.GetNameFL(referral.ReferralNum);//this could be improved EmailAttach attach = new EmailAttach(); string shortFileName = Regex.Replace(SheetCur.Description.ToString(), @"[^\w,'@-_()&]", ""); attach.DisplayedFileName = shortFileName + ".pdf"; attach.ActualFileName = fileName; message.Attachments.Add(attach); FormEmailMessageEdit FormE = new FormEmailMessageEdit(message); FormE.IsNew = true; FormE.ShowDialog(); } //g.Dispose(); DialogResult = DialogResult.OK; }
private void gridProg_CellDoubleClick(object sender,ODGridClickEventArgs e) { //Chartscrollval = gridProg.ScrollValue; DataRow row = (DataRow)gridProg.Rows[e.Row].Tag; if(row["ProcNum"].ToString() != "0") { if(checkAudit.Checked) { MsgBox.Show(this,"Not allowed to edit procedures when in audit mode."); return; } Procedure proc = Procedures.GetOneProc(PIn.Long(row["ProcNum"].ToString()),true); FormProcEdit FormP = new FormProcEdit(proc,PatCur,FamCur); FormP.ShowDialog(); if(FormP.DialogResult != DialogResult.OK) { return; } } else if(row["CommlogNum"].ToString() != "0") { Commlog comm = Commlogs.GetOne(PIn.Long(row["CommlogNum"].ToString())); FormCommItem FormC = new FormCommItem(comm); FormC.ShowDialog(); if(FormC.DialogResult != DialogResult.OK) { return; } } else if(row["RxNum"].ToString() != "0") { RxPat rx = RxPats.GetRx(PIn.Long(row["RxNum"].ToString())); FormRxEdit FormRxE = new FormRxEdit(PatCur,rx); FormRxE.ShowDialog(); if(FormRxE.DialogResult != DialogResult.OK) { return; } } else if(row["LabCaseNum"].ToString() != "0") { LabCase lab = LabCases.GetOne(PIn.Long(row["LabCaseNum"].ToString())); FormLabCaseEdit FormL = new FormLabCaseEdit(); FormL.CaseCur = lab; FormL.ShowDialog(); } else if(row["TaskNum"].ToString() != "0") { Task task = Tasks.GetOne(PIn.Long(row["TaskNum"].ToString())); FormTaskEdit FormT = new FormTaskEdit(task,task.Copy()); FormT.Closing+=new CancelEventHandler(TaskGoToEvent); FormT.Show();//non-modal } else if(row["AptNum"].ToString() != "0") { //Appointment apt=Appointments.GetOneApt( FormApptEdit FormA = new FormApptEdit(PIn.Long(row["AptNum"].ToString())); //PinIsVisible=false FormA.ShowDialog(); if(FormA.DialogResult != DialogResult.OK) { return; } } else if(row["EmailMessageNum"].ToString() != "0") { EmailMessage msg = EmailMessages.GetOne(PIn.Long(row["EmailMessageNum"].ToString())); FormEmailMessageEdit FormE = new FormEmailMessageEdit(msg); FormE.ShowDialog(); if(FormE.DialogResult != DialogResult.OK) { return; } } ModuleSelected(PatCur.PatNum); }
private void OnEmail_Click() { //this button item will be disabled if pat does not have email address EmailMessage message=new EmailMessage(); message.PatNum=CurPatNum; Patient pat=Patients.GetPat(CurPatNum); message.ToAddress=pat.Email; message.FromAddress=PrefC.GetString(PrefName.EmailSenderAddress); FormEmailMessageEdit FormE=new FormEmailMessageEdit(message); FormE.IsNew=true; FormE.ShowDialog(); if(FormE.DialogResult==DialogResult.OK) { RefreshCurrentModule(); } }
private void gridEmailMessages_CellDoubleClick(object sender,UI.ODGridClickEventArgs e) { if(e.Row==-1) { return; } EmailMessage emailMessage=(EmailMessage)gridEmailMessages.Rows[e.Row].Tag; if(emailMessage.SentOrReceived==EmailSentOrReceived.WebMailReceived || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailRecdRead || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailSent || emailMessage.SentOrReceived==EmailSentOrReceived.WebMailSentRead) { //web mail uses special secure messaging portal FormWebMailMessageEdit FormWMME=new FormWebMailMessageEdit(emailMessage.PatNum,emailMessage.EmailMessageNum); if(FormWMME.ShowDialog()!=DialogResult.Abort) { //will only return Abort if validation fails on load, in which case the message will remain unread EmailMessages.UpdateSentOrReceivedRead(emailMessage);//Mark the message read. } } else { FormEmailMessageEdit formEME=new FormEmailMessageEdit(emailMessage); formEME.ShowDialog(); emailMessage=EmailMessages.GetOne(emailMessage.EmailMessageNum);//Fetch from DB, in case changed to to decrypt. if(emailMessage!=null && emailMessage.SentOrReceived!=EmailSentOrReceived.ReceivedEncrypted) {//emailMessage could be null if the message was deleted in FormEmailMessageEdit(). EmailMessages.UpdateSentOrReceivedRead(emailMessage); } } FillGridEmailMessages();//To show the email is read. }