private void butAssessed_Click(object sender, EventArgs e) { if (comboSmokeStatus.SelectedIndex == 0) //None { MessageBox.Show("You must select a smoking status."); return; } DateTime dateTEntered = PIn.DateT(textDateAssessed.Text); for (int i = 0; i < _ListEvents.Count; i++) { if (_ListEvents[i].DateTEvent.Date == dateTEntered.Date) { MessageBox.Show("A Tobacco Assessment entry already exists with the selected date."); return; } } EhrMeasureEvent meas = new EhrMeasureEvent(); meas.DateTEvent = dateTEntered; meas.EventType = EhrMeasureEventType.TobaccoUseAssessed; meas.PatNum = PatCur.PatNum; meas.CodeValueEvent = _ListAssessmentCodes[comboAssessmentType.SelectedIndex].CodeValue; meas.CodeSystemEvent = _ListAssessmentCodes[comboAssessmentType.SelectedIndex].CodeSystem; meas.CodeValueResult = _TobaccoCodeSelected; meas.CodeSystemResult = "SNOMEDCT"; //only allow SNOMEDCT codes for now. meas.MoreInfo = ""; EhrMeasureEvents.Insert(meas); FillGrid(); }
private void comboSmokeStatus_SelectionChangeCommitted(object sender, EventArgs e) { if (comboSmokeStatus.SelectedIndex < 1) //If None or text set to other selected Snomed code so -1, do not create an event { return; } //Insert measure event if one does not already exist for this date DateTime dateTEntered = PIn.DateT(textDateAssessed.Text); //will be set to DateTime.Now when form loads EhrMeasureEvent eventCur; foreach (ODGridRow row in gridAssessments.Rows) { eventCur = (EhrMeasureEvent)row.Tag; if (eventCur.DateTEvent.Date == dateTEntered.Date) //one already exists for this date, don't auto insert event { return; } } //no entry for the date entered, so insert one eventCur = new EhrMeasureEvent(); eventCur.DateTEvent = dateTEntered; eventCur.EventType = EhrMeasureEventType.TobaccoUseAssessed; eventCur.PatNum = PatCur.PatNum; eventCur.CodeValueEvent = _listAssessmentCodes[comboAssessmentType.SelectedIndex].CodeValue; eventCur.CodeSystemEvent = _listAssessmentCodes[comboAssessmentType.SelectedIndex].CodeSystem; //SelectedIndex guaranteed to be greater than 0 eventCur.CodeValueResult = ((SmokingSnoMed)comboSmokeStatus.SelectedIndex - 1).ToString().Substring(1); eventCur.CodeSystemResult = "SNOMEDCT"; //only allow SNOMEDCT codes for now. eventCur.MoreInfo = ""; EhrMeasureEvents.Insert(eventCur); FillGridAssessments(); }
///<summary>Inserts many EhrMeasureEvents into the database. Provides option to use the existing priKey.</summary> public static void InsertMany(List <EhrMeasureEvent> listEhrMeasureEvents) { if (DataConnection.DBtype == DatabaseType.Oracle || PrefC.RandomKeys) { foreach (EhrMeasureEvent ehrMeasureEvent in listEhrMeasureEvents) { Insert(ehrMeasureEvent); } } else { StringBuilder sbCommands = null; int index = 0; while (index < listEhrMeasureEvents.Count) { EhrMeasureEvent ehrMeasureEvent = listEhrMeasureEvents[index]; StringBuilder sbRow = new StringBuilder("("); bool hasComma = false; if (sbCommands == null) { sbCommands = new StringBuilder(); sbCommands.Append("INSERT INTO ehrmeasureevent ("); sbCommands.Append("DateTEvent,EventType,PatNum,MoreInfo,CodeValueEvent,CodeSystemEvent,CodeValueResult,CodeSystemResult,FKey,DateStartTobacco,TobaccoCessationDesire) VALUES "); } else { hasComma = true; } sbRow.Append(POut.DateT(ehrMeasureEvent.DateTEvent)); sbRow.Append(","); sbRow.Append(POut.Int((int)ehrMeasureEvent.EventType)); sbRow.Append(","); sbRow.Append(POut.Long(ehrMeasureEvent.PatNum)); sbRow.Append(","); sbRow.Append("'" + POut.String(ehrMeasureEvent.MoreInfo) + "'"); sbRow.Append(","); sbRow.Append("'" + POut.String(ehrMeasureEvent.CodeValueEvent) + "'"); sbRow.Append(","); sbRow.Append("'" + POut.String(ehrMeasureEvent.CodeSystemEvent) + "'"); sbRow.Append(","); sbRow.Append("'" + POut.String(ehrMeasureEvent.CodeValueResult) + "'"); sbRow.Append(","); sbRow.Append("'" + POut.String(ehrMeasureEvent.CodeSystemResult) + "'"); sbRow.Append(","); sbRow.Append(POut.Long(ehrMeasureEvent.FKey)); sbRow.Append(","); sbRow.Append(POut.Date(ehrMeasureEvent.DateStartTobacco)); sbRow.Append(","); sbRow.Append(POut.Byte(ehrMeasureEvent.TobaccoCessationDesire)); sbRow.Append(")"); if (sbCommands.Length + sbRow.Length + 1 > TableBase.MaxAllowedPacketCount) { Db.NonQ(sbCommands.ToString()); sbCommands = null; } else { if (hasComma) { sbCommands.Append(","); } sbCommands.Append(sbRow.ToString()); if (index == listEhrMeasureEvents.Count - 1) { Db.NonQ(sbCommands.ToString()); } index++; } } } }
private void comboSmokeStatus_SelectionChangeCommitted(object sender, EventArgs e) { if (comboSmokeStatus.SelectedIndex <= 0) //If None or text set to other selected Snomed code so -1, do not create an event { return; } //SelectedIndex guaranteed to be greater than 0 _TobaccoCodeSelected = ((SmokingSnoMed)comboSmokeStatus.SelectedIndex - 1).ToString().Substring(1); DateTime dateTEntered = PIn.DateT(textDateAssessed.Text); //will be set to DateTime.Now when form loads //Automatically make an entry for (int i = 0; i < _ListEvents.Count; i++) { if (_ListEvents[i].DateTEvent.Date == dateTEntered.Date) { return; //if assessment already exists for date set, do not auto insert } } //an entry for the date entered does not yet exist EhrMeasureEvent meas = new EhrMeasureEvent(); meas.DateTEvent = dateTEntered; meas.EventType = EhrMeasureEventType.TobaccoUseAssessed; meas.PatNum = PatCur.PatNum; meas.CodeValueEvent = _ListAssessmentCodes[comboAssessmentType.SelectedIndex].CodeValue; meas.CodeSystemEvent = _ListAssessmentCodes[comboAssessmentType.SelectedIndex].CodeSystem; meas.CodeValueResult = _TobaccoCodeSelected; meas.CodeSystemResult = "SNOMEDCT"; //only allow SNOMEDCT codes for now. meas.MoreInfo = ""; EhrMeasureEvents.Insert(meas); FillGrid(); }
///<summary>Inserts one EhrMeasureEvent into the database. Returns the new priKey.</summary> internal static long Insert(EhrMeasureEvent ehrMeasureEvent) { if(DataConnection.DBtype==DatabaseType.Oracle) { ehrMeasureEvent.EhrMeasureEventNum=DbHelper.GetNextOracleKey("ehrmeasureevent","EhrMeasureEventNum"); int loopcount=0; while(loopcount<100){ try { return Insert(ehrMeasureEvent,true); } catch(Oracle.DataAccess.Client.OracleException ex){ if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){ ehrMeasureEvent.EhrMeasureEventNum++; loopcount++; } else{ throw ex; } } } throw new ApplicationException("Insert failed. Could not generate primary key."); } else { return Insert(ehrMeasureEvent,false); } }
///<summary>Inserts one EhrMeasureEvent into the database. Provides option to use the existing priKey.</summary> internal static long Insert(EhrMeasureEvent ehrMeasureEvent, bool useExistingPK) { if (!useExistingPK && PrefC.RandomKeys) { ehrMeasureEvent.EhrMeasureEventNum = ReplicationServers.GetKey("ehrmeasureevent", "EhrMeasureEventNum"); } string command = "INSERT INTO ehrmeasureevent ("; if (useExistingPK || PrefC.RandomKeys) { command += "EhrMeasureEventNum,"; } command += "DateTEvent,EventType,PatNum,MoreInfo) VALUES("; if (useExistingPK || PrefC.RandomKeys) { command += POut.Long(ehrMeasureEvent.EhrMeasureEventNum) + ","; } command += POut.DateT(ehrMeasureEvent.DateTEvent) + "," + POut.Int((int)ehrMeasureEvent.EventType) + "," + POut.Long(ehrMeasureEvent.PatNum) + "," + "'" + POut.String(ehrMeasureEvent.MoreInfo) + "')"; if (useExistingPK || PrefC.RandomKeys) { Db.NonQ(command); } else { ehrMeasureEvent.EhrMeasureEventNum = Db.NonQ(command, true); } return(ehrMeasureEvent.EhrMeasureEventNum); }
///<summary>Inserts one EhrMeasureEvent into the database. Returns the new priKey.</summary> internal static long Insert(EhrMeasureEvent ehrMeasureEvent) { if (DataConnection.DBtype == DatabaseType.Oracle) { ehrMeasureEvent.EhrMeasureEventNum = DbHelper.GetNextOracleKey("ehrmeasureevent", "EhrMeasureEventNum"); int loopcount = 0; while (loopcount < 100) { try { return(Insert(ehrMeasureEvent, true)); } catch (Oracle.DataAccess.Client.OracleException ex) { if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")) { ehrMeasureEvent.EhrMeasureEventNum++; loopcount++; } else { throw ex; } } } throw new ApplicationException("Insert failed. Could not generate primary key."); } else { return(Insert(ehrMeasureEvent, false)); } }
///<summary>Inserts one EhrMeasureEvent into the database. Provides option to use the existing priKey.</summary> internal static long Insert(EhrMeasureEvent ehrMeasureEvent,bool useExistingPK) { if(!useExistingPK && PrefC.RandomKeys) { ehrMeasureEvent.EhrMeasureEventNum=ReplicationServers.GetKey("ehrmeasureevent","EhrMeasureEventNum"); } string command="INSERT INTO ehrmeasureevent ("; if(useExistingPK || PrefC.RandomKeys) { command+="EhrMeasureEventNum,"; } command+="DateTEvent,EventType,PatNum,MoreInfo) VALUES("; if(useExistingPK || PrefC.RandomKeys) { command+=POut.Long(ehrMeasureEvent.EhrMeasureEventNum)+","; } command+= POut.DateT (ehrMeasureEvent.DateTEvent)+"," + POut.Int ((int)ehrMeasureEvent.EventType)+"," + POut.Long (ehrMeasureEvent.PatNum)+"," +"'"+POut.String(ehrMeasureEvent.MoreInfo)+"')"; if(useExistingPK || PrefC.RandomKeys) { Db.NonQ(command); } else { ehrMeasureEvent.EhrMeasureEventNum=Db.NonQ(command,true); } return ehrMeasureEvent.EhrMeasureEventNum; }
private void butShowXhtml_Click(object sender, EventArgs e) { string ccd = ""; try { FormEhrExportCCD FormEEC = new FormEhrExportCCD(PatCur); FormEEC.ShowDialog(); if (FormEEC.DialogResult == DialogResult.OK) { ccd = FormEEC.CCD; } else { return; } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } bool didPrint = FormEhrSummaryOfCare.DisplayCCD(ccd); if (didPrint) { //we are printing a ccd so add new measure event. EhrMeasureEvent measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now; measureEvent.EventType = EhrMeasureEventType.ClinicalSummaryProvidedToPt; measureEvent.PatNum = PatCur.PatNum; EhrMeasureEvents.Insert(measureEvent); FillGridEHRMeasureEvents(); } }
private void gridEdu_CellClick(object sender, ODGridClickEventArgs e) { if (e.Col != 1) { return; } bool didPrint = false; try { FormEhrEduBrowser FormEDUB = new FormEhrEduBrowser(eduResourceList[e.Row].ResourceUrl); FormEDUB.ShowDialog(); didPrint = FormEDUB.DidPrint; //System.Diagnostics.Process.Start(eduResourceList[e.Row].ResourceUrl); } catch { MessageBox.Show("Link not found."); return; } if (didPrint) { EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.EducationProvided; newMeasureEvent.PatNum = patCur.PatNum; newMeasureEvent.MoreInfo = eduResourceList[e.Row].ResourceUrl; EhrMeasureEvents.Insert(newMeasureEvent); FillGridProvided(); } }
private void FormEhrTriggers_FormClosing(object sender, FormClosingEventArgs e) { EhrMeasureEvent measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now; measureEvent.EventType = EhrMeasureEventType.ClinicalInterventionRules; measureEvent.MoreInfo = Lan.g(this, "Triggers currently enabled") + ": " + ListEhrTriggers.Count; EhrMeasureEvents.Insert(measureEvent); }
private void butGiveAccess_Click(object sender, EventArgs e) { if (butGiveAccess.Text == "Provide Online Access") //When form open opens with a blank password { if (PrefC.GetString(PrefName.PatientPortalURL) == "") { //User probably hasn't set up the patient portal yet. MsgBox.Show(this, "Patient Facing URL is required to be set before granting online access. Click Setup to set the Patient Facing URL."); return; } string error; if (!UserWebs.ValidatePatientAccess(_patCur, out error)) { MessageBox.Show(error); return; } Cursor = Cursors.WaitCursor; //1. Fill password. string passwordGenerated = UserWebs.GenerateRandomPassword(8); textOnlinePassword.Text = passwordGenerated; //2. Make the username and password editable in case they want to change it. textOnlineUsername.ReadOnly = false; textOnlinePassword.ReadOnly = false; //3. Save password to db. // We only save the hash of the generated password. string passwordHashed = Userods.HashPassword(passwordGenerated, false); _userWebCur.Password = passwordHashed; UserWebs.Update(_userWebCur, _userWebOld); _userWebOld.Password = passwordHashed; //Update _userWebOld in case the user changes password manually. //4. Insert EhrMeasureEvent EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.OnlineAccessProvided; newMeasureEvent.PatNum = _userWebCur.FKey; newMeasureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(newMeasureEvent); //5. Rename button butGiveAccess.Text = "Remove Online Access"; Cursor = Cursors.Default; } else //remove access { Cursor = Cursors.WaitCursor; //1. Clear password textOnlinePassword.Text = ""; //2. Make in uneditable textOnlinePassword.ReadOnly = true; //3. Save password to db _userWebCur.Password = textOnlinePassword.Text; UserWebs.Update(_userWebCur, _userWebOld); _userWebOld.Password = textOnlinePassword.Text; //Update PatOld in case the user changes password manually. //4. Rename button butGiveAccess.Text = "Provide Online Access"; Cursor = Cursors.Default; } }
private void butRequest_Click(object sender, EventArgs e) { EhrMeasureEvent measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now.AddMinutes(-1); measureEvent.EventType = EhrMeasureEventType.ElectronicCopyRequested; measureEvent.PatNum = PatCur.PatNum; measureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(measureEvent); FillGrid(); }
///<summary>Updates one EhrMeasureEvent in the database.</summary> internal static void Update(EhrMeasureEvent ehrMeasureEvent) { string command = "UPDATE ehrmeasureevent SET " + "DateTEvent = " + POut.DateT(ehrMeasureEvent.DateTEvent) + ", " + "EventType = " + POut.Int((int)ehrMeasureEvent.EventType) + ", " + "PatNum = " + POut.Long(ehrMeasureEvent.PatNum) + ", " + "MoreInfo = '" + POut.String(ehrMeasureEvent.MoreInfo) + "' " + "WHERE EhrMeasureEventNum = " + POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }
private void butAddEvent_Click(object sender, EventArgs e) { EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.MedicationReconcile; newMeasureEvent.PatNum = PatCur.PatNum; newMeasureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(newMeasureEvent); FillReconcilesGrid(); }
private void FormPatListResults_Load(object sender, EventArgs e) { if (PrefC.GetString(PrefName.SoftwareName) != "") { this.Text += " - " + PrefC.GetString(PrefName.SoftwareName); } EhrMeasureEvent measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now; measureEvent.EventType = EhrMeasureEventType.PatientList; EhrMeasureEvents.Insert(measureEvent); FillGrid(); }
private void butGiveAccess_Click(object sender, EventArgs e) { if (butGiveAccess.Text == "Provide Online Access") //When form open opens with a blank password { string error = ValidatePatientAccess(); if (error != "") { MessageBox.Show(error); return; } Cursor = Cursors.WaitCursor; //1. Fill password. string passwordGenerated = GenerateRandomPassword(8); textOnlinePassword.Text = passwordGenerated; //2. Make the password editable in case they want to change it. textOnlinePassword.ReadOnly = false; //3. Save password to db. // We only save the hash of the generated password. string passwordHashed = Userods.EncryptPassword(passwordGenerated, false); PatCur.OnlinePassword = passwordHashed; Patients.Update(PatCur, PatOld); PatOld.OnlinePassword = passwordHashed; //Update PatOld in case the user changes password manually. //4. Insert EhrMeasureEvent EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.OnlineAccessProvided; newMeasureEvent.PatNum = PatCur.PatNum; newMeasureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(newMeasureEvent); //5. Rename button butGiveAccess.Text = "Remove Online Access"; Cursor = Cursors.Default; } else //remove access { Cursor = Cursors.WaitCursor; //1. Clear password textOnlinePassword.Text = ""; //2. Make in uneditable textOnlinePassword.ReadOnly = true; //3. Save password to db PatCur.OnlinePassword = textOnlinePassword.Text; Patients.Update(PatCur, PatOld); PatOld.OnlinePassword = textOnlinePassword.Text; //Update PatOld in case the user changes password manually. //4. Rename button butGiveAccess.Text = "Provide Online Access"; Cursor = Cursors.Default; } }
///<summary>Inserts one EhrMeasureEvent into the database. Returns the new priKey. Doesn't use the cache.</summary> public static long InsertNoCache(EhrMeasureEvent ehrMeasureEvent) { if (DataConnection.DBtype == DatabaseType.MySql) { return(InsertNoCache(ehrMeasureEvent, false)); } else { if (DataConnection.DBtype == DatabaseType.Oracle) { ehrMeasureEvent.EhrMeasureEventNum = DbHelper.GetNextOracleKey("ehrmeasureevent", "EhrMeasureEventNum"); //Cacheless method } return(InsertNoCache(ehrMeasureEvent, true)); } }
///<summary>Returns true if Update(EhrMeasureEvent,EhrMeasureEvent) would make changes to the database. ///Does not make any changes to the database and can be called before remoting role is checked.</summary> public static bool UpdateComparison(EhrMeasureEvent ehrMeasureEvent, EhrMeasureEvent oldEhrMeasureEvent) { if (ehrMeasureEvent.DateTEvent != oldEhrMeasureEvent.DateTEvent) { return(true); } if (ehrMeasureEvent.EventType != oldEhrMeasureEvent.EventType) { return(true); } if (ehrMeasureEvent.PatNum != oldEhrMeasureEvent.PatNum) { return(true); } if (ehrMeasureEvent.MoreInfo != oldEhrMeasureEvent.MoreInfo) { return(true); } if (ehrMeasureEvent.CodeValueEvent != oldEhrMeasureEvent.CodeValueEvent) { return(true); } if (ehrMeasureEvent.CodeSystemEvent != oldEhrMeasureEvent.CodeSystemEvent) { return(true); } if (ehrMeasureEvent.CodeValueResult != oldEhrMeasureEvent.CodeValueResult) { return(true); } if (ehrMeasureEvent.CodeSystemResult != oldEhrMeasureEvent.CodeSystemResult) { return(true); } if (ehrMeasureEvent.FKey != oldEhrMeasureEvent.FKey) { return(true); } if (ehrMeasureEvent.DateStartTobacco.Date != oldEhrMeasureEvent.DateStartTobacco.Date) { return(true); } if (ehrMeasureEvent.TobaccoCessationDesire != oldEhrMeasureEvent.TobaccoCessationDesire) { return(true); } return(false); }
///<summary>Updates one EhrMeasureEvent in the database.</summary> public static void Update(EhrMeasureEvent ehrMeasureEvent) { string command = "UPDATE ehrmeasureevent SET " + "DateTEvent = " + POut.DateT(ehrMeasureEvent.DateTEvent) + ", " + "EventType = " + POut.Int((int)ehrMeasureEvent.EventType) + ", " + "PatNum = " + POut.Long(ehrMeasureEvent.PatNum) + ", " + "MoreInfo = '" + POut.String(ehrMeasureEvent.MoreInfo) + "', " + "CodeValueEvent = '" + POut.String(ehrMeasureEvent.CodeValueEvent) + "', " + "CodeSystemEvent = '" + POut.String(ehrMeasureEvent.CodeSystemEvent) + "', " + "CodeValueResult = '" + POut.String(ehrMeasureEvent.CodeValueResult) + "', " + "CodeSystemResult = '" + POut.String(ehrMeasureEvent.CodeSystemResult) + "', " + "FKey = " + POut.Long(ehrMeasureEvent.FKey) + " " + "WHERE EhrMeasureEventNum = " + POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }
private void butExport_Click(object sender, EventArgs e) { string ccd = ""; try { FormEhrExportCCD FormEEC = new FormEhrExportCCD(PatCur); FormEEC.ShowDialog(); if (FormEEC.DialogResult == DialogResult.OK) { ccd = FormEEC.CCD; } else { return; } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } FolderBrowserDialog dlg = new FolderBrowserDialog(); dlg.SelectedPath = ImageStore.GetPatientFolder(PatCur, ImageStore.GetPreferredAtoZpath()); //Default to patient image folder. DialogResult result = dlg.ShowDialog(); if (result != DialogResult.OK) { return; } if (File.Exists(Path.Combine(dlg.SelectedPath, "ccd.xml"))) { if (MessageBox.Show("Overwrite existing ccd.xml?", "", MessageBoxButtons.OKCancel) != DialogResult.OK) { return; } } File.WriteAllText(Path.Combine(dlg.SelectedPath, "ccd.xml"), ccd); File.WriteAllText(Path.Combine(dlg.SelectedPath, "ccd.xsl"), FormEHR.GetEhrResource("CCD")); EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.ClinicalSummaryProvidedToPt; newMeasureEvent.PatNum = PatCur.PatNum; EhrMeasureEvents.Insert(newMeasureEvent); FillGridEHRMeasureEvents(); MessageBox.Show("Exported"); }
///<summary>Converts a DataTable to a list of objects.</summary> internal static List <EhrMeasureEvent> TableToList(DataTable table) { List <EhrMeasureEvent> retVal = new List <EhrMeasureEvent>(); EhrMeasureEvent ehrMeasureEvent; for (int i = 0; i < table.Rows.Count; i++) { ehrMeasureEvent = new EhrMeasureEvent(); ehrMeasureEvent.EhrMeasureEventNum = PIn.Long(table.Rows[i]["EhrMeasureEventNum"].ToString()); ehrMeasureEvent.DateTEvent = PIn.DateT(table.Rows[i]["DateTEvent"].ToString()); ehrMeasureEvent.EventType = (EhrMeasureEventType)PIn.Int(table.Rows[i]["EventType"].ToString()); ehrMeasureEvent.PatNum = PIn.Long(table.Rows[i]["PatNum"].ToString()); ehrMeasureEvent.MoreInfo = PIn.String(table.Rows[i]["MoreInfo"].ToString()); retVal.Add(ehrMeasureEvent); } return(retVal); }
private void butSend_Click(object sender, EventArgs e) { EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.ReminderSent; newMeasureEvent.PatNum = PatCur.PatNum; string moreInfo = ""; if (gridMain.GetSelectedIndex() > -1) { moreInfo = gridMain.ListGridRows[gridMain.GetSelectedIndex()].Cells[1].Text; } newMeasureEvent.MoreInfo = moreInfo; EhrMeasureEvents.Insert(newMeasureEvent); FillGridProvided(); }
///<summary>Updates one EhrMeasureEvent in the database. Uses an old object to compare to, and only alters changed fields. This prevents collisions and concurrency problems in heavily used tables.</summary> internal static void Update(EhrMeasureEvent ehrMeasureEvent, EhrMeasureEvent oldEhrMeasureEvent) { string command = ""; if (ehrMeasureEvent.DateTEvent != oldEhrMeasureEvent.DateTEvent) { if (command != "") { command += ","; } command += "DateTEvent = " + POut.DateT(ehrMeasureEvent.DateTEvent) + ""; } if (ehrMeasureEvent.EventType != oldEhrMeasureEvent.EventType) { if (command != "") { command += ","; } command += "EventType = " + POut.Int((int)ehrMeasureEvent.EventType) + ""; } if (ehrMeasureEvent.PatNum != oldEhrMeasureEvent.PatNum) { if (command != "") { command += ","; } command += "PatNum = " + POut.Long(ehrMeasureEvent.PatNum) + ""; } if (ehrMeasureEvent.MoreInfo != oldEhrMeasureEvent.MoreInfo) { if (command != "") { command += ","; } command += "MoreInfo = '" + POut.String(ehrMeasureEvent.MoreInfo) + "'"; } if (command == "") { return; } command = "UPDATE ehrmeasureevent SET " + command + " WHERE EhrMeasureEventNum = " + POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }
///<summary>Converts a DataTable to a list of objects.</summary> public static List<EhrMeasureEvent> TableToList(DataTable table){ List<EhrMeasureEvent> retVal=new List<EhrMeasureEvent>(); EhrMeasureEvent ehrMeasureEvent; for(int i=0;i<table.Rows.Count;i++) { ehrMeasureEvent=new EhrMeasureEvent(); ehrMeasureEvent.EhrMeasureEventNum= PIn.Long (table.Rows[i]["EhrMeasureEventNum"].ToString()); ehrMeasureEvent.DateTEvent = PIn.DateT (table.Rows[i]["DateTEvent"].ToString()); ehrMeasureEvent.EventType = (EhrMeasureEventType)PIn.Int(table.Rows[i]["EventType"].ToString()); ehrMeasureEvent.PatNum = PIn.Long (table.Rows[i]["PatNum"].ToString()); ehrMeasureEvent.MoreInfo = PIn.String(table.Rows[i]["MoreInfo"].ToString()); ehrMeasureEvent.CodeValueEvent = PIn.String(table.Rows[i]["CodeValueEvent"].ToString()); ehrMeasureEvent.CodeSystemEvent = PIn.String(table.Rows[i]["CodeSystemEvent"].ToString()); ehrMeasureEvent.CodeValueResult = PIn.String(table.Rows[i]["CodeValueResult"].ToString()); ehrMeasureEvent.CodeSystemResult = PIn.String(table.Rows[i]["CodeSystemResult"].ToString()); ehrMeasureEvent.FKey = PIn.Long (table.Rows[i]["FKey"].ToString()); retVal.Add(ehrMeasureEvent); } return retVal; }
private void butOK_Click(object sender, EventArgs e) { if (textDescription.Text == "") { MessageBox.Show(this, "Please enter a description."); return; } try { MedOrderCur.DateTimeOrder = PIn.DateT(textDateTime.Text); } catch { MessageBox.Show(this, "Please enter a Date Time with format DD/MM/YYYY HH:mm AM/PM"); } MedOrderCur.Description = textDescription.Text; MedOrderCur.IsDiscontinued = checkIsDiscontinued.Checked; if (comboProv.SelectedIndex == -1) { //don't make any changes to provnum. 0 is ok, but should never happen. ProvNum might also be for a hidden prov. } else { MedOrderCur.ProvNum = _listProviders[comboProv.SelectedIndex].ProvNum; } if (IsNew) { MedicalOrders.Insert(MedOrderCur); EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.CPOE_RadOrdered; newMeasureEvent.PatNum = MedOrderCur.PatNum; newMeasureEvent.MoreInfo = ""; newMeasureEvent.FKey = MedOrderCur.MedicalOrderNum; EhrMeasureEvents.Insert(newMeasureEvent); } else { MedicalOrders.Update(MedOrderCur); } DialogResult = DialogResult.OK; }
///<summary>Inserts one EhrMeasureEvent into the database. Provides option to use the existing priKey. Doesn't use the cache.</summary> public static long InsertNoCache(EhrMeasureEvent ehrMeasureEvent, bool useExistingPK) { bool isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys); string command = "INSERT INTO ehrmeasureevent ("; if (!useExistingPK && isRandomKeys) { ehrMeasureEvent.EhrMeasureEventNum = ReplicationServers.GetKeyNoCache("ehrmeasureevent", "EhrMeasureEventNum"); } if (isRandomKeys || useExistingPK) { command += "EhrMeasureEventNum,"; } command += "DateTEvent,EventType,PatNum,MoreInfo,CodeValueEvent,CodeSystemEvent,CodeValueResult,CodeSystemResult,FKey,DateStartTobacco,TobaccoCessationDesire) VALUES("; if (isRandomKeys || useExistingPK) { command += POut.Long(ehrMeasureEvent.EhrMeasureEventNum) + ","; } command += POut.DateT(ehrMeasureEvent.DateTEvent) + "," + POut.Int((int)ehrMeasureEvent.EventType) + "," + POut.Long(ehrMeasureEvent.PatNum) + "," + "'" + POut.String(ehrMeasureEvent.MoreInfo) + "'," + "'" + POut.String(ehrMeasureEvent.CodeValueEvent) + "'," + "'" + POut.String(ehrMeasureEvent.CodeSystemEvent) + "'," + "'" + POut.String(ehrMeasureEvent.CodeValueResult) + "'," + "'" + POut.String(ehrMeasureEvent.CodeSystemResult) + "'," + POut.Long(ehrMeasureEvent.FKey) + "," + POut.Date(ehrMeasureEvent.DateStartTobacco) + "," + POut.Byte(ehrMeasureEvent.TobaccoCessationDesire) + ")"; if (useExistingPK || isRandomKeys) { Db.NonQ(command); } else { ehrMeasureEvent.EhrMeasureEventNum = Db.NonQ(command, true, "EhrMeasureEventNum", "ehrMeasureEvent"); } return(ehrMeasureEvent.EhrMeasureEventNum); }
private void butAssessed_Click(object sender, EventArgs e) { if (comboTobaccoStatus.SelectedIndex < 0 || comboTobaccoStatus.SelectedIndex >= _listTobaccoStatuses.Count) { MsgBox.Show(this, "You must select a tobacco status."); return; } DateTime dateTEntered = PIn.DateT(textDateAssessed.Text); EhrMeasureEvent meas = new EhrMeasureEvent(); meas.DateTEvent = dateTEntered; meas.EventType = EhrMeasureEventType.TobaccoUseAssessed; meas.PatNum = PatCur.PatNum; meas.CodeValueEvent = _listAssessmentCodes[comboAssessmentType.SelectedIndex].CodeValue; meas.CodeSystemEvent = _listAssessmentCodes[comboAssessmentType.SelectedIndex].CodeSystem; meas.CodeValueResult = _listTobaccoStatuses[comboTobaccoStatus.SelectedIndex].CodeValue; meas.CodeSystemResult = "SNOMEDCT"; //only allow SNOMEDCT codes for now. meas.MoreInfo = ""; EhrMeasureEvents.Insert(meas); comboTobaccoStatus.SelectedIndex = -1; FillGridAssessments(); }
private void butAdd_Click(object sender, EventArgs e) { FormEhrLabOrderEdit2014 FormLOE = new FormEhrLabOrderEdit2014(); FormLOE.EhrLabCur = new EhrLab(); FormLOE.EhrLabCur.PatNum = PatCur.PatNum; FormLOE.IsNew = true; FormLOE.ShowDialog(); if (FormLOE.DialogResult != DialogResult.OK) { return; } EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.CPOE_LabOrdered; //default Loinc loinc = Loincs.GetByCode(FormLOE.EhrLabCur.UsiID); if (loinc != null && loinc.ClassType == "RAD") //short circuit logic { newMeasureEvent.EventType = EhrMeasureEventType.CPOE_RadOrdered; } newMeasureEvent.PatNum = FormLOE.EhrLabCur.PatNum; newMeasureEvent.MoreInfo = ""; newMeasureEvent.FKey = FormLOE.EhrLabCur.EhrLabNum; EhrMeasureEvents.Insert(newMeasureEvent); EhrLabs.SaveToDB(FormLOE.EhrLabCur); for (int i = 0; i < FormLOE.EhrLabCur.ListEhrLabResults.Count; i++) { if (CDSPermissions.GetForUser(Security.CurUser.UserNum).ShowCDS&& CDSPermissions.GetForUser(Security.CurUser.UserNum).LabTestCDS) { FormCDSIntervention FormCDSI = new FormCDSIntervention(); FormCDSI.ListCDSI = EhrTriggers.TriggerMatch(FormLOE.EhrLabCur.ListEhrLabResults[i], PatCur); FormCDSI.ShowIfRequired(false); } } FillGrid(); }
///<summary>When sent by email or exported, this records the event. It also recordes a request if needed.</summary> private void RecordRequestAndProvide() { //If there's not an event for a request within the last 5 days, automatically add one. bool requestExists = false; for (int i = 0; i < listHistory.Count; i++) { if (listHistory[i].EventType != EhrMeasureEventType.ElectronicCopyRequested) { continue; } if (listHistory[i].DateTEvent.Date >= DateTime.Today.AddDays(-5)) { requestExists = true; break; } } EhrMeasureEvent measureEvent; if (!requestExists) { measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now.AddMinutes(-1); measureEvent.EventType = EhrMeasureEventType.ElectronicCopyRequested; measureEvent.PatNum = PatCur.PatNum; measureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(measureEvent); } //Always add an event for providing the electronic copy measureEvent = new EhrMeasureEvent(); measureEvent.DateTEvent = DateTime.Now; measureEvent.EventType = EhrMeasureEventType.ElectronicCopyProvidedToPt; measureEvent.PatNum = PatCur.PatNum; measureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(measureEvent); FillGrid(); }
///<summary>Converts a DataTable to a list of objects.</summary> public static List <EhrMeasureEvent> TableToList(DataTable table) { List <EhrMeasureEvent> retVal = new List <EhrMeasureEvent>(); EhrMeasureEvent ehrMeasureEvent; foreach (DataRow row in table.Rows) { ehrMeasureEvent = new EhrMeasureEvent(); ehrMeasureEvent.EhrMeasureEventNum = PIn.Long(row["EhrMeasureEventNum"].ToString()); ehrMeasureEvent.DateTEvent = PIn.DateT(row["DateTEvent"].ToString()); ehrMeasureEvent.EventType = (OpenDentBusiness.EhrMeasureEventType)PIn.Int(row["EventType"].ToString()); ehrMeasureEvent.PatNum = PIn.Long(row["PatNum"].ToString()); ehrMeasureEvent.MoreInfo = PIn.String(row["MoreInfo"].ToString()); ehrMeasureEvent.CodeValueEvent = PIn.String(row["CodeValueEvent"].ToString()); ehrMeasureEvent.CodeSystemEvent = PIn.String(row["CodeSystemEvent"].ToString()); ehrMeasureEvent.CodeValueResult = PIn.String(row["CodeValueResult"].ToString()); ehrMeasureEvent.CodeSystemResult = PIn.String(row["CodeSystemResult"].ToString()); ehrMeasureEvent.FKey = PIn.Long(row["FKey"].ToString()); ehrMeasureEvent.DateStartTobacco = PIn.Date(row["DateStartTobacco"].ToString()); ehrMeasureEvent.TobaccoCessationDesire = PIn.Byte(row["TobaccoCessationDesire"].ToString()); retVal.Add(ehrMeasureEvent); } return(retVal); }
///<summary>Updates one EhrMeasureEvent in the database.</summary> internal static void Update(EhrMeasureEvent ehrMeasureEvent) { string command="UPDATE ehrmeasureevent SET " +"DateTEvent = "+POut.DateT (ehrMeasureEvent.DateTEvent)+", " +"EventType = "+POut.Int ((int)ehrMeasureEvent.EventType)+", " +"PatNum = "+POut.Long (ehrMeasureEvent.PatNum)+", " +"MoreInfo = '"+POut.String(ehrMeasureEvent.MoreInfo)+"' " +"WHERE EhrMeasureEventNum = "+POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }
private void butOK_Click(object sender, EventArgs e) { if (_listMedicationPatReconcile.Count == 0) { if (!MsgBox.Show(this, true, "The reconcile list is empty which will cause all existing medications to be removed. Continue?")) { return; } } MedicationPat medP; bool isActive; //Discontinue any current medications that are not present in the reconcile list. for (int i = 0; i < _listMedicationPatCur.Count; i++) //Start looping through all current medications { isActive = false; medP = _listMedicationPatCur[i]; for (int j = 0; j < _listMedicationPatReconcile.Count; j++) //Compare each reconcile medication to the current medication { if (medP.RxCui > 0 && medP.RxCui == _listMedicationPatReconcile[j].RxCui && _listMedicationPatReconcile[j].MedicationNum == _listMedicationPatCur[i].MedicationNum) //Has an RxNorm code and they are equal { isActive = true; break; } } if (!isActive) //Update current medications. { _listMedicationPatCur[i].DateStop = DateTime.Now; //Set the current DateStop to today (to set the medication as discontinued) MedicationPats.Update(_listMedicationPatCur[i]); } } //Always update every current medication for the patient so that DateTStamp reflects the last reconcile date. if (_listMedicationPatCur.Count > 0) { MedicationPats.ResetTimeStamps(_patCur.PatNum, true); } Medication med; int index; for (int j = 0; j < _listMedicationPatReconcile.Count; j++) { index = ListMedicationPatNew.IndexOf(_listMedicationPatReconcile[j]); if (index < 0) { continue; } if (_listMedicationPatReconcile[j] == ListMedicationPatNew[index]) { med = Medications.GetMedicationFromDbByRxCui(_listMedicationPatReconcile[j].RxCui); if (med == null) { med = new Medication(); med.MedName = ListMedicationPatNew[index].MedDescript; med.RxCui = ListMedicationPatNew[index].RxCui; ListMedicationPatNew[index].MedicationNum = Medications.Insert(med); med.GenericNum = med.MedicationNum; Medications.Update(med); } else { ListMedicationPatNew[index].MedicationNum = med.MedicationNum; } ListMedicationPatNew[index].ProvNum = 0; //Since imported, set provnum to 0 so it does not affect CPOE. MedicationPats.Insert(ListMedicationPatNew[index]); } } EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.MedicationReconcile; newMeasureEvent.PatNum = _patCur.PatNum; newMeasureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(newMeasureEvent); for (int inter = 0; inter < _listMedicationPatReconcile.Count; inter++) { if (CDSPermissions.GetForUser(Security.CurUser.UserNum).ShowCDS&& CDSPermissions.GetForUser(Security.CurUser.UserNum).MedicationCDS) { Medication medInter = Medications.GetMedicationFromDbByRxCui(_listMedicationPatReconcile[inter].RxCui); FormCDSIntervention FormCDSI = new FormCDSIntervention(); FormCDSI.ListCDSI = EhrTriggers.TriggerMatch(medInter, _patCur); FormCDSI.ShowIfRequired(false); } } DialogResult = DialogResult.OK; }
public FormEhrMeasureEventEdit(EhrMeasureEvent measureEventCur) { InitializeComponent(); _measureEventCur = measureEventCur; }
///<summary>Updates one EhrMeasureEvent in the database.</summary> public static void Update(EhrMeasureEvent ehrMeasureEvent){ string command="UPDATE ehrmeasureevent SET " +"DateTEvent = "+POut.DateT (ehrMeasureEvent.DateTEvent)+", " +"EventType = "+POut.Int ((int)ehrMeasureEvent.EventType)+", " +"PatNum = "+POut.Long (ehrMeasureEvent.PatNum)+", " +"MoreInfo = '"+POut.String(ehrMeasureEvent.MoreInfo)+"', " +"CodeValueEvent = '"+POut.String(ehrMeasureEvent.CodeValueEvent)+"', " +"CodeSystemEvent = '"+POut.String(ehrMeasureEvent.CodeSystemEvent)+"', " +"CodeValueResult = '"+POut.String(ehrMeasureEvent.CodeValueResult)+"', " +"CodeSystemResult = '"+POut.String(ehrMeasureEvent.CodeSystemResult)+"', " +"FKey = "+POut.Long (ehrMeasureEvent.FKey)+" " +"WHERE EhrMeasureEventNum = "+POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }
///<summary>Updates one EhrMeasureEvent in the database. Uses an old object to compare to, and only alters changed fields. This prevents collisions and concurrency problems in heavily used tables.</summary> public static void Update(EhrMeasureEvent ehrMeasureEvent,EhrMeasureEvent oldEhrMeasureEvent){ string command=""; if(ehrMeasureEvent.DateTEvent != oldEhrMeasureEvent.DateTEvent) { if(command!=""){ command+=",";} command+="DateTEvent = "+POut.DateT(ehrMeasureEvent.DateTEvent)+""; } if(ehrMeasureEvent.EventType != oldEhrMeasureEvent.EventType) { if(command!=""){ command+=",";} command+="EventType = "+POut.Int ((int)ehrMeasureEvent.EventType)+""; } if(ehrMeasureEvent.PatNum != oldEhrMeasureEvent.PatNum) { if(command!=""){ command+=",";} command+="PatNum = "+POut.Long(ehrMeasureEvent.PatNum)+""; } if(ehrMeasureEvent.MoreInfo != oldEhrMeasureEvent.MoreInfo) { if(command!=""){ command+=",";} command+="MoreInfo = '"+POut.String(ehrMeasureEvent.MoreInfo)+"'"; } if(ehrMeasureEvent.CodeValueEvent != oldEhrMeasureEvent.CodeValueEvent) { if(command!=""){ command+=",";} command+="CodeValueEvent = '"+POut.String(ehrMeasureEvent.CodeValueEvent)+"'"; } if(ehrMeasureEvent.CodeSystemEvent != oldEhrMeasureEvent.CodeSystemEvent) { if(command!=""){ command+=",";} command+="CodeSystemEvent = '"+POut.String(ehrMeasureEvent.CodeSystemEvent)+"'"; } if(ehrMeasureEvent.CodeValueResult != oldEhrMeasureEvent.CodeValueResult) { if(command!=""){ command+=",";} command+="CodeValueResult = '"+POut.String(ehrMeasureEvent.CodeValueResult)+"'"; } if(ehrMeasureEvent.CodeSystemResult != oldEhrMeasureEvent.CodeSystemResult) { if(command!=""){ command+=",";} command+="CodeSystemResult = '"+POut.String(ehrMeasureEvent.CodeSystemResult)+"'"; } if(ehrMeasureEvent.FKey != oldEhrMeasureEvent.FKey) { if(command!=""){ command+=",";} command+="FKey = "+POut.Long(ehrMeasureEvent.FKey)+""; } if(command==""){ return; } command="UPDATE ehrmeasureevent SET "+command +" WHERE EhrMeasureEventNum = "+POut.Long(ehrMeasureEvent.EhrMeasureEventNum); Db.NonQ(command); }