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();
        }
Esempio n. 3
0
 ///<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();
        }
Esempio n. 5
0
 ///<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);
     }
 }
Esempio n. 6
0
        ///<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);
        }
Esempio n. 7
0
 ///<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));
     }
 }
Esempio n. 8
0
 ///<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;
 }
Esempio n. 9
0
        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();
            }
        }
Esempio n. 10
0
        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();
            }
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
 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;
     }
 }
Esempio n. 13
0
        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();
        }
Esempio n. 14
0
        ///<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);
        }
Esempio n. 15
0
        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();
        }
Esempio n. 17
0
 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;
     }
 }
Esempio n. 18
0
 ///<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);
 }
Esempio n. 20
0
        ///<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);
        }
Esempio n. 21
0
        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");
        }
Esempio n. 22
0
        ///<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);
        }
Esempio n. 23
0
        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();
        }
Esempio n. 24
0
        ///<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);
        }
Esempio n. 28
0
        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();
        }
Esempio n. 29
0
        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();
        }
Esempio n. 30
0
        ///<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);
        }
Esempio n. 32
0
 ///<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;
        }
Esempio n. 34
0
 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);
		}