private void butOK_Click(object sender, EventArgs e) { if (_listProblemReconcile.Count == 0) { if (!MsgBox.Show(this, true, "The reconcile list is empty which will cause all existing problems to be removed. Continue?")) { return; } } Disease dis; DiseaseDef disD; bool isActive; //Discontinue any current medications that are not present in the reconcile list. for (int i = 0; i < _listProblemCur.Count; i++) //Start looping through all current problems { isActive = false; dis = _listProblemCur[i]; disD = DiseaseDefs.GetItem(dis.DiseaseDefNum); for (int j = 0; j < _listProblemReconcile.Count; j++) //Compare each reconcile problem to the current problem { DiseaseDef disDR = DiseaseDefs.GetItem(_listProblemReconcile[j].DiseaseDefNum); if (_listProblemReconcile[j].DiseaseDefNum == _listProblemCur[i].DiseaseDefNum) //Has identical DiseaseDefNums { isActive = true; break; } if (disDR == null) { continue; } if (disDR.SnomedCode != "" && disDR.SnomedCode == disD.SnomedCode) //Has a Snomed code and they are equal { isActive = true; break; } } if (!isActive) //Update current problems. { dis.ProbStatus = ProblemStatus.Inactive; Diseases.Update(_listProblemCur[i]); } } //Always update every current problem for the patient so that DateTStamp reflects the last reconcile date. if (_listProblemCur.Count > 0) { Diseases.ResetTimeStamps(_patCur.PatNum, ProblemStatus.Active); } DiseaseDef disDU = null; int index; for (int j = 0; j < _listProblemReconcile.Count; j++) { index = ListProblemNew.IndexOf(_listProblemReconcile[j]); if (index < 0) { continue; } if (_listProblemReconcile[j] == ListProblemNew[index]) { disDU = DiseaseDefs.GetItem(DiseaseDefs.GetNumFromCode(ListProblemDefNew[index].SnomedCode)); if (disDU == null) { ListProblemNew[index].DiseaseDefNum = DiseaseDefs.Insert(ListProblemDefNew[index]); } else { ListProblemNew[index].DiseaseDefNum = disDU.DiseaseDefNum; } Diseases.Insert(ListProblemNew[index]); } } DataValid.SetInvalid(InvalidType.Diseases); //EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); //newMeasureEvent.DateTEvent=DateTime.Now; //newMeasureEvent.EventType=EhrMeasureEventType.ProblemReconcile; //newMeasureEvent.PatNum=PatCur.PatNum; //newMeasureEvent.MoreInfo=""; //EhrMeasureEvents.Insert(newMeasureEvent); for (int inter = 0; inter < _listProblemReconcile.Count; inter++) { if (CDSPermissions.GetForUser(Security.CurUser.UserNum).ShowCDS&& CDSPermissions.GetForUser(Security.CurUser.UserNum).ProblemCDS) { DiseaseDef disDInter = DiseaseDefs.GetItem(_listProblemReconcile[inter].DiseaseDefNum); FormCDSIntervention FormCDSI = new FormCDSIntervention(); FormCDSI.ListCDSI = EhrTriggers.TriggerMatch(disDInter, _patCur); FormCDSI.ShowIfRequired(false); } } DialogResult = DialogResult.OK; }
private void butGiveAccess_Click(object sender, EventArgs e) { string interval = PrefC.GetStringSilent(PrefName.MobileSyncIntervalMinutes); if (interval == "" || interval == "0") //not a paid customer or chooses not to synch { MessageBox.Show("Synch must be setup first from the Tools menu, Mobile and Patient Portal Synch. Interval must not be blank or zero."); return; } //we won't check PrefName.MobileSyncWorkstationName because we are forcing the synch if (System.Environment.MachineName.ToUpper() != PrefC.GetStringSilent(PrefName.MobileSyncWorkstationName).ToUpper()) { //Since GetStringSilent returns "" before OD is connected to db, this gracefully loops out if (!MsgBox.Show(this, MsgBoxButtons.OKCancel, "Warning. Workstation is not entered in the Tools menu, Mobile and Patient Portal Synch. No automatic synch is taking place. Continue anyway?")) { return; } } if (PrefC.GetDate(PrefName.MobileExcludeApptsBeforeDate).Year < 1880) { MessageBox.Show("Full Synch must be run first first from the Tools menu, Mobile and Patient Portal Synch."); return; } if (butGiveAccess.Text == "Provide Online Access") //When form open opens with a blank password { Cursor = Cursors.WaitCursor; //1. Fill password. textOnlinePassword.Text = GenerateRandomPassword(8, 10); //won't save until OK or Print //2. Fill link. textOnlineLink.Text = GetPatientPortalLink(); //3. Reset timestamps for this patient to trigger all their objects to upload with the next synch LabPanels.ResetTimeStamps(PatCur.PatNum); Diseases.ResetTimeStamps(PatCur.PatNum); Allergies.ResetTimeStamps(PatCur.PatNum); MedicationPats.ResetTimeStamps(PatCur.PatNum); Statements.ResetTimeStamps(PatCur.PatNum); Documents.ResetTimeStamps(PatCur.PatNum); //4. Make the password editable in case they want to change it. textOnlinePassword.ReadOnly = false; //5. Save password to db PatCur.OnlinePassword = textOnlinePassword.Text; Patients.Update(PatCur, PatOld); PatOld.OnlinePassword = textOnlinePassword.Text; //so that subsequent Updates will work. //6. Force a synch FormMobile.SynchFromMain(true); //7. Insert EhrMeasureEvent EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = DateTime.Now; newMeasureEvent.EventType = EhrMeasureEventType.OnlineAccessProvided; newMeasureEvent.PatNum = PatCur.PatNum; newMeasureEvent.MoreInfo = ""; EhrMeasureEvents.Insert(newMeasureEvent); //8. 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; //5. Force a synch FormMobile.SynchFromMain(true); //no event to insert //6. Rename button butGiveAccess.Text = "Provide Online Access"; Cursor = Cursors.Default; } }