Example #1
0
        ///<summary>Updates one Loinc in the database.</summary>
        public static void Update(Loinc loinc)
        {
            string command = "UPDATE loinc SET "
                             + "LoincCode              = '" + POut.String(loinc.LoincCode) + "', "
                             + "Component              = '" + POut.String(loinc.Component) + "', "
                             + "PropertyObserved       = '" + POut.String(loinc.PropertyObserved) + "', "
                             + "TimeAspct              = '" + POut.String(loinc.TimeAspct) + "', "
                             + "SystemMeasured         = '" + POut.String(loinc.SystemMeasured) + "', "
                             + "ScaleType              = '" + POut.String(loinc.ScaleType) + "', "
                             + "MethodType             = '" + POut.String(loinc.MethodType) + "', "
                             + "StatusOfCode           = '" + POut.String(loinc.StatusOfCode) + "', "
                             + "NameShort              = '" + POut.String(loinc.NameShort) + "', "
                             + "ClassType              = '" + POut.String(loinc.ClassType) + "', "
                             + "UnitsRequired          =  " + POut.Bool(loinc.UnitsRequired) + ", "
                             + "OrderObs               = '" + POut.String(loinc.OrderObs) + "', "
                             + "HL7FieldSubfieldID     = '" + POut.String(loinc.HL7FieldSubfieldID) + "', "
                             + "ExternalCopyrightNotice= '" + POut.String(loinc.ExternalCopyrightNotice) + "', "
                             + "NameLongCommon         = '" + POut.String(loinc.NameLongCommon) + "', "
                             + "UnitsUCUM              = '" + POut.String(loinc.UnitsUCUM) + "', "
                             + "RankCommonTests        =  " + POut.Int(loinc.RankCommonTests) + ", "
                             + "RankCommonOrders       =  " + POut.Int(loinc.RankCommonOrders) + " "
                             + "WHERE LoincNum = " + POut.Long(loinc.LoincNum);

            Db.NonQ(command);
        }
Example #2
0
		///<summary>Converts a DataTable to a list of objects.</summary>
		public static List<Loinc> TableToList(DataTable table){
			List<Loinc> retVal=new List<Loinc>();
			Loinc loinc;
			for(int i=0;i<table.Rows.Count;i++) {
				loinc=new Loinc();
				loinc.LoincNum               = PIn.Long  (table.Rows[i]["LoincNum"].ToString());
				loinc.LoincCode              = PIn.String(table.Rows[i]["LoincCode"].ToString());
				loinc.Component              = PIn.String(table.Rows[i]["Component"].ToString());
				loinc.PropertyObserved       = PIn.String(table.Rows[i]["PropertyObserved"].ToString());
				loinc.TimeAspct              = PIn.String(table.Rows[i]["TimeAspct"].ToString());
				loinc.SystemMeasured         = PIn.String(table.Rows[i]["SystemMeasured"].ToString());
				loinc.ScaleType              = PIn.String(table.Rows[i]["ScaleType"].ToString());
				loinc.MethodType             = PIn.String(table.Rows[i]["MethodType"].ToString());
				loinc.StatusOfCode           = PIn.String(table.Rows[i]["StatusOfCode"].ToString());
				loinc.NameShort              = PIn.String(table.Rows[i]["NameShort"].ToString());
				loinc.ClassType              = PIn.String(table.Rows[i]["ClassType"].ToString());
				loinc.UnitsRequired          = PIn.Bool  (table.Rows[i]["UnitsRequired"].ToString());
				loinc.OrderObs               = PIn.String(table.Rows[i]["OrderObs"].ToString());
				loinc.HL7FieldSubfieldID     = PIn.String(table.Rows[i]["HL7FieldSubfieldID"].ToString());
				loinc.ExternalCopyrightNotice= PIn.String(table.Rows[i]["ExternalCopyrightNotice"].ToString());
				loinc.NameLongCommon         = PIn.String(table.Rows[i]["NameLongCommon"].ToString());
				loinc.UnitsUCUM              = PIn.String(table.Rows[i]["UnitsUCUM"].ToString());
				loinc.RankCommonTests        = PIn.Int   (table.Rows[i]["RankCommonTests"].ToString());
				loinc.RankCommonOrders       = PIn.Int   (table.Rows[i]["RankCommonOrders"].ToString());
				retVal.Add(loinc);
			}
			return retVal;
		}
Example #3
0
 ///<summary>Inserts one Loinc into the database.  Returns the new priKey.</summary>
 public static long Insert(Loinc loinc)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         loinc.LoincNum = DbHelper.GetNextOracleKey("loinc", "LoincNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(loinc, true));
             }
             catch (Oracle.DataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     loinc.LoincNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(loinc, false));
     }
 }
        private void FillGridAssessments()
        {
            gridAssessments.BeginUpdate();
            gridAssessments.Columns.Clear();
            gridAssessments.Columns.Add(new ODGridColumn("Date", 70));
            gridAssessments.Columns.Add(new ODGridColumn("Type", 170));
            gridAssessments.Columns.Add(new ODGridColumn("Description", 170));
            gridAssessments.Columns.Add(new ODGridColumn("Documentation", 170));
            gridAssessments.Rows.Clear();
            ODGridRow row;
            List <EhrMeasureEvent> listEvents = EhrMeasureEvents.RefreshByType(PatCur.PatNum, EhrMeasureEventType.TobaccoUseAssessed);

            foreach (EhrMeasureEvent eventCur in listEvents)
            {
                row = new ODGridRow();
                row.Cells.Add(eventCur.DateTEvent.ToShortDateString());
                Loinc lCur = Loincs.GetByCode(eventCur.CodeValueEvent);              //TobaccoUseAssessed events can be one of three types, all LOINC codes
                row.Cells.Add(lCur != null?lCur.NameLongCommon:eventCur.EventType.ToString());
                Snomed sCur = Snomeds.GetByCode(eventCur.CodeValueResult);
                row.Cells.Add(sCur != null?sCur.Description:"");
                row.Cells.Add(eventCur.MoreInfo);
                row.Tag = eventCur;
                gridAssessments.Rows.Add(row);
            }
            gridAssessments.EndUpdate();
        }
Example #5
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <Loinc> TableToList(DataTable table)
        {
            List <Loinc> retVal = new List <Loinc>();
            Loinc        loinc;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                loinc                         = new Loinc();
                loinc.LoincNum                = PIn.Long(table.Rows[i]["LoincNum"].ToString());
                loinc.LoincCode               = PIn.String(table.Rows[i]["LoincCode"].ToString());
                loinc.Component               = PIn.String(table.Rows[i]["Component"].ToString());
                loinc.PropertyObserved        = PIn.String(table.Rows[i]["PropertyObserved"].ToString());
                loinc.TimeAspct               = PIn.String(table.Rows[i]["TimeAspct"].ToString());
                loinc.SystemMeasured          = PIn.String(table.Rows[i]["SystemMeasured"].ToString());
                loinc.ScaleType               = PIn.String(table.Rows[i]["ScaleType"].ToString());
                loinc.MethodType              = PIn.String(table.Rows[i]["MethodType"].ToString());
                loinc.StatusOfCode            = PIn.String(table.Rows[i]["StatusOfCode"].ToString());
                loinc.NameShort               = PIn.String(table.Rows[i]["NameShort"].ToString());
                loinc.ClassType               = PIn.String(table.Rows[i]["ClassType"].ToString());
                loinc.UnitsRequired           = PIn.Bool(table.Rows[i]["UnitsRequired"].ToString());
                loinc.OrderObs                = PIn.String(table.Rows[i]["OrderObs"].ToString());
                loinc.HL7FieldSubfieldID      = PIn.String(table.Rows[i]["HL7FieldSubfieldID"].ToString());
                loinc.ExternalCopyrightNotice = PIn.String(table.Rows[i]["ExternalCopyrightNotice"].ToString());
                loinc.NameLongCommon          = PIn.String(table.Rows[i]["NameLongCommon"].ToString());
                loinc.UnitsUCUM               = PIn.String(table.Rows[i]["UnitsUCUM"].ToString());
                loinc.RankCommonTests         = PIn.Int(table.Rows[i]["RankCommonTests"].ToString());
                loinc.RankCommonOrders        = PIn.Int(table.Rows[i]["RankCommonOrders"].ToString());
                retVal.Add(loinc);
            }
            return(retVal);
        }
Example #6
0
 private void gridMain_CellDoubleClick(object sender, ODGridClickEventArgs e)
 {
     if (IsSelectionMode)
     {
         SelectedLoinc = listLoincSearch[e.Row];
         DialogResult  = DialogResult.OK;
     }
     //Nothing to do if not selection mode
 }
Example #7
0
 private void listValueType_SelectedIndexChanged(object sender, EventArgs e)
 {
     textValue.Text = "";
     _loincValue    = null;
     _snomedValue   = null;
     _icd9Value     = null;
     _icd10Value    = null;
     SetFlags();
 }
Example #8
0
        ///<summary>Inserts one Loinc into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(Loinc loinc, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO loinc (";

            if (!useExistingPK && isRandomKeys)
            {
                loinc.LoincNum = ReplicationServers.GetKeyNoCache("loinc", "LoincNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "LoincNum,";
            }
            command += "LoincCode,Component,PropertyObserved,TimeAspct,SystemMeasured,ScaleType,MethodType,StatusOfCode,NameShort,ClassType,UnitsRequired,OrderObs,HL7FieldSubfieldID,ExternalCopyrightNotice,NameLongCommon,UnitsUCUM,RankCommonTests,RankCommonOrders) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(loinc.LoincNum) + ",";
            }
            command +=
                "'" + POut.String(loinc.LoincCode) + "',"
                + "'" + POut.String(loinc.Component) + "',"
                + "'" + POut.String(loinc.PropertyObserved) + "',"
                + "'" + POut.String(loinc.TimeAspct) + "',"
                + "'" + POut.String(loinc.SystemMeasured) + "',"
                + "'" + POut.String(loinc.ScaleType) + "',"
                + "'" + POut.String(loinc.MethodType) + "',"
                + "'" + POut.String(loinc.StatusOfCode) + "',"
                + "'" + POut.String(loinc.NameShort) + "',"
                + "'" + POut.String(loinc.ClassType) + "',"
                + POut.Bool(loinc.UnitsRequired) + ","
                + "'" + POut.String(loinc.OrderObs) + "',"
                + "'" + POut.String(loinc.HL7FieldSubfieldID) + "',"
                + DbHelper.ParamChar + "paramExternalCopyrightNotice,"
                + "'" + POut.String(loinc.NameLongCommon) + "',"
                + "'" + POut.String(loinc.UnitsUCUM) + "',"
                + POut.Int(loinc.RankCommonTests) + ","
                + POut.Int(loinc.RankCommonOrders) + ")";
            if (loinc.ExternalCopyrightNotice == null)
            {
                loinc.ExternalCopyrightNotice = "";
            }
            OdSqlParameter paramExternalCopyrightNotice = new OdSqlParameter("paramExternalCopyrightNotice", OdDbType.Text, POut.StringParam(loinc.ExternalCopyrightNotice));

            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command, paramExternalCopyrightNotice);
            }
            else
            {
                loinc.LoincNum = Db.NonQ(command, true, "LoincNum", "loinc", paramExternalCopyrightNotice);
            }
            return(loinc.LoincNum);
        }
Example #9
0
        private void butPickValueLoinc_Click(object sender, EventArgs e)
        {
            FormLoincs formL = new FormLoincs();

            formL.IsSelectionMode = true;
            if (formL.ShowDialog() == DialogResult.OK)
            {
                _loincValue       = formL.SelectedLoinc;
                textValue.Text    = _loincValue.NameShort;
                _strValCodeSystem = "LOINC";
                labelValue.Text   = _strValCodeSystem + " Value";
            }
        }
Example #10
0
 private void butOK_Click(object sender, EventArgs e)
 {
     if (gridMain.GetSelectedIndex() == -1)
     {
         MsgBox.Show(this, "Please select a Loinc code from the list.");
         return;
     }
     if (IsSelectionMode)
     {
         SelectedLoinc = listLoincSearch[gridMain.GetSelectedIndex()];
     }
     DialogResult = DialogResult.OK;
 }
        private void FormEhrMeasureEventEdit_Load(object sender, EventArgs e)
        {
            textDateTime.Text = _measureEventCur.DateTEvent.ToString();
            Patient patCur = Patients.GetPat(_measureEventCur.PatNum);

            if (patCur != null)
            {
                textPatient.Text = patCur.GetNameFL();
            }
            if (!String.IsNullOrWhiteSpace(MeasureDescript))
            {
                labelMoreInfo.Text = MeasureDescript;
            }
            if (_measureEventCur.EventType == EhrMeasureEventType.TobaccoUseAssessed)
            {
                Loinc lCur = Loincs.GetByCode(_measureEventCur.CodeValueEvent);              //TobaccoUseAssessed events can be one of three types, all LOINC codes
                if (lCur != null)
                {
                    textType.Text = lCur.NameLongCommon;                           //Example: History of tobacco use Narrative
                }
                Snomed sCur = Snomeds.GetByCode(_measureEventCur.CodeValueResult); //TobaccoUseAssessed results can be any SNOMEDCT code, we recommend one of 8 codes, but the CQM measure allows 54 codes and we let the user select any SNOMEDCT they want
                if (sCur != null)
                {
                    textResult.Text = sCur.Description;                  //Examples: Non-smoker (finding) or Smoker (finding)
                }
                //only visible if event is a tobacco use assessment
                textTobaccoDesireToQuit.Visible  = true;
                textTobaccoDuration.Visible      = true;
                textTobaccoStartDate.Visible     = true;
                labelTobaccoDesireToQuit.Visible = true;
                labelTobaccoDesireScale.Visible  = true;
                labelTobaccoStartDate.Visible    = true;
                textTobaccoDesireToQuit.Text     = _measureEventCur.TobaccoCessationDesire.ToString();
                if (_measureEventCur.DateStartTobacco.Year >= 1880)
                {
                    textTobaccoStartDate.Text = _measureEventCur.DateStartTobacco.ToShortDateString();
                }
                CalcTobaccoDuration();
            }
            else
            {
                //Currently, the TobaccoUseAssessed events are the only ones that can be deleted.
                butDelete.Enabled = false;
            }
            if (textType.Text == "")          //if not set by LOINC name above, then either not a TobaccoUseAssessed event or the code was not in the LOINC table, fill with EventType
            {
                textType.Text = _measureEventCur.EventType.ToString();
            }
            textMoreInfo.Text = _measureEventCur.MoreInfo;
        }
Example #12
0
 ///<summary>Inserts one Loinc into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(Loinc loinc)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(loinc, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             loinc.LoincNum = DbHelper.GetNextOracleKey("loinc", "LoincNum");                  //Cacheless method
         }
         return(InsertNoCache(loinc, true));
     }
 }
Example #13
0
        ///<summary>Inserts one Loinc into the database.  Provides option to use the existing priKey.</summary>
        public static long Insert(Loinc loinc, bool useExistingPK)
        {
            if (!useExistingPK && PrefC.RandomKeys)
            {
                loinc.LoincNum = ReplicationServers.GetKey("loinc", "LoincNum");
            }
            string command = "INSERT INTO loinc (";

            if (useExistingPK || PrefC.RandomKeys)
            {
                command += "LoincNum,";
            }
            command += "LoincCode,Component,PropertyObserved,TimeAspct,SystemMeasured,ScaleType,MethodType,StatusOfCode,NameShort,ClassType,UnitsRequired,OrderObs,HL7FieldSubfieldID,ExternalCopyrightNotice,NameLongCommon,UnitsUCUM,RankCommonTests,RankCommonOrders) VALUES(";
            if (useExistingPK || PrefC.RandomKeys)
            {
                command += POut.Long(loinc.LoincNum) + ",";
            }
            command +=
                "'" + POut.String(loinc.LoincCode) + "',"
                + "'" + POut.String(loinc.Component) + "',"
                + "'" + POut.String(loinc.PropertyObserved) + "',"
                + "'" + POut.String(loinc.TimeAspct) + "',"
                + "'" + POut.String(loinc.SystemMeasured) + "',"
                + "'" + POut.String(loinc.ScaleType) + "',"
                + "'" + POut.String(loinc.MethodType) + "',"
                + "'" + POut.String(loinc.StatusOfCode) + "',"
                + "'" + POut.String(loinc.NameShort) + "',"
                + "'" + POut.String(loinc.ClassType) + "',"
                + POut.Bool(loinc.UnitsRequired) + ","
                + "'" + POut.String(loinc.OrderObs) + "',"
                + "'" + POut.String(loinc.HL7FieldSubfieldID) + "',"
                + "'" + POut.String(loinc.ExternalCopyrightNotice) + "',"
                + "'" + POut.String(loinc.NameLongCommon) + "',"
                + "'" + POut.String(loinc.UnitsUCUM) + "',"
                + POut.Int(loinc.RankCommonTests) + ","
                + POut.Int(loinc.RankCommonOrders) + ")";
            if (useExistingPK || PrefC.RandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                loinc.LoincNum = Db.NonQ(command, true);
            }
            return(loinc.LoincNum);
        }
Example #14
0
 private void FormEhrMeasureEventEdit_Load(object sender, EventArgs e)
 {
     textDateTime.Text = MeasCur.DateTEvent.ToString();
     if (MeasCur.EventType == EhrMeasureEventType.TobaccoUseAssessed)
     {
         Loinc lCur = Loincs.GetByCode(MeasCur.CodeValueEvent);              //TobaccoUseAssessed events can be one of three types, all LOINC codes
         if (lCur != null)
         {
             textType.Text = lCur.NameLongCommon;                  //Example: History of tobacco use Narrative
         }
         Snomed sCur = Snomeds.GetByCode(MeasCur.CodeValueResult); //TobaccoUseAssessed results can be any SNOMEDCT code, we recommend one of 8 codes, but the CQM measure allows 54 codes and we let the user select any SNOMEDCT they want
         if (sCur != null)
         {
             textResult.Text = sCur.Description;                  //Examples: Non-smoker (finding) or Smoker (finding)
         }
     }
     if (textType.Text == "")          //if not set by LOINC name above, then either not a TobaccoUseAssessed event or the code was not in the LOINC table, fill with EventType
     {
         textType.Text = MeasCur.EventType.ToString();
     }
     textMoreInfo.Text = MeasCur.MoreInfo;
 }
Example #15
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();
        }
Example #16
0
		///<summary>Inserts one Loinc into the database.  Returns the new priKey.</summary>
		public static long Insert(Loinc loinc){
			if(DataConnection.DBtype==DatabaseType.Oracle) {
				loinc.LoincNum=DbHelper.GetNextOracleKey("loinc","LoincNum");
				int loopcount=0;
				while(loopcount<100){
					try {
						return Insert(loinc,true);
					}
					catch(Oracle.DataAccess.Client.OracleException ex){
						if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){
							loinc.LoincNum++;
							loopcount++;
						}
						else{
							throw ex;
						}
					}
				}
				throw new ApplicationException("Insert failed.  Could not generate primary key.");
			}
			else {
				return Insert(loinc,false);
			}
		}
Example #17
0
        public static string Validate(Appointment appt)
        {
            StringBuilder sb           = new StringBuilder();
            Provider      provFacility = Providers.GetProv(PrefC.GetInt(PrefName.PracticeDefaultProv));

            if (!Regex.IsMatch(provFacility.NationalProvID, "^(80840)?[0-9]{10}$"))
            {
                WriteError(sb, "Invalid NPI for provider '" + provFacility.Abbr + "'");
            }
            if (PrefC.HasClinicsEnabled && appt.ClinicNum != 0)           //Using clinics and a clinic is assigned.
            {
                Clinic clinic = Clinics.GetClinic(appt.ClinicNum);
                if (clinic.Description == "")
                {
                    WriteError(sb, "Missing clinic description for clinic attached to appointment.");
                }
            }
            else              //Not using clinics for this patient
            {
                if (PrefC.GetString(PrefName.PracticeTitle) == "")
                {
                    WriteError(sb, "Missing practice title.");
                }
            }
            Patient pat = Patients.GetPat(appt.PatNum);

            if (pat.PatStatus == PatientStatus.Deceased && pat.DateTimeDeceased.Year < 1880)
            {
                WriteError(sb, "Missing date time deceased.");
            }
            List <EhrAptObs> listObservations = EhrAptObses.Refresh(appt.AptNum);

            if (listObservations.Count == 0)
            {
                WriteError(sb, "Missing observation.");
            }
            for (int i = 0; i < listObservations.Count; i++)
            {
                EhrAptObs obs = listObservations[i];
                if (obs.ValType == EhrAptObsType.Coded)
                {
                    if (obs.ValCodeSystem.Trim().ToUpper() == "LOINC")
                    {
                        Loinc loincVal = Loincs.GetByCode(obs.ValReported);
                        if (loincVal == null)
                        {
                            WriteError(sb, "Loinc code not found '" + loincVal.LoincCode + "'.  Please add by going to Setup | Chart | EHR.");
                        }
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "SNOMEDCT")
                    {
                        Snomed snomedVal = Snomeds.GetByCode(obs.ValReported);
                        if (snomedVal == null)
                        {
                            WriteError(sb, "Snomed code not found '" + snomedVal.SnomedCode + "'.  Please add by going to Setup | Chart | EHR.");
                        }
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "ICD9")
                    {
                        ICD9 icd9Val = ICD9s.GetByCode(obs.ValReported);
                        if (icd9Val == null)
                        {
                            WriteError(sb, "ICD9 code not found '" + icd9Val.ICD9Code + "'.  Please add by going to Setup | Chart | EHR.");
                        }
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "ICD10")
                    {
                        Icd10 icd10Val = Icd10s.GetByCode(obs.ValReported);
                        if (icd10Val == null)
                        {
                            WriteError(sb, "ICD10 code not found '" + icd10Val.Icd10Code + "'.  Please add by going to Setup | Chart | EHR.");
                        }
                    }
                }
                else if (obs.ValType == EhrAptObsType.Numeric && obs.UcumCode != "")             //We only validate the ucum code if it will be sent out.  Blank units allowed.
                {
                    Ucum ucum = Ucums.GetByCode(obs.UcumCode);
                    if (ucum == null)
                    {
                        WriteError(sb, "Invalid unit code '" + obs.UcumCode + "' for observation (must be UCUM code).");
                    }
                }
            }
            return(sb.ToString());
        }
Example #18
0
        ///<summary>Updates one Loinc 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(Loinc loinc, Loinc oldLoinc)
        {
            string command = "";

            if (loinc.LoincCode != oldLoinc.LoincCode)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "LoincCode = '" + POut.String(loinc.LoincCode) + "'";
            }
            if (loinc.Component != oldLoinc.Component)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Component = '" + POut.String(loinc.Component) + "'";
            }
            if (loinc.PropertyObserved != oldLoinc.PropertyObserved)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "PropertyObserved = '" + POut.String(loinc.PropertyObserved) + "'";
            }
            if (loinc.TimeAspct != oldLoinc.TimeAspct)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TimeAspct = '" + POut.String(loinc.TimeAspct) + "'";
            }
            if (loinc.SystemMeasured != oldLoinc.SystemMeasured)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "SystemMeasured = '" + POut.String(loinc.SystemMeasured) + "'";
            }
            if (loinc.ScaleType != oldLoinc.ScaleType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ScaleType = '" + POut.String(loinc.ScaleType) + "'";
            }
            if (loinc.MethodType != oldLoinc.MethodType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "MethodType = '" + POut.String(loinc.MethodType) + "'";
            }
            if (loinc.StatusOfCode != oldLoinc.StatusOfCode)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "StatusOfCode = '" + POut.String(loinc.StatusOfCode) + "'";
            }
            if (loinc.NameShort != oldLoinc.NameShort)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "NameShort = '" + POut.String(loinc.NameShort) + "'";
            }
            if (loinc.ClassType != oldLoinc.ClassType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClassType = '" + POut.String(loinc.ClassType) + "'";
            }
            if (loinc.UnitsRequired != oldLoinc.UnitsRequired)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UnitsRequired = " + POut.Bool(loinc.UnitsRequired) + "";
            }
            if (loinc.OrderObs != oldLoinc.OrderObs)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "OrderObs = '" + POut.String(loinc.OrderObs) + "'";
            }
            if (loinc.HL7FieldSubfieldID != oldLoinc.HL7FieldSubfieldID)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "HL7FieldSubfieldID = '" + POut.String(loinc.HL7FieldSubfieldID) + "'";
            }
            if (loinc.ExternalCopyrightNotice != oldLoinc.ExternalCopyrightNotice)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ExternalCopyrightNotice = '" + POut.String(loinc.ExternalCopyrightNotice) + "'";
            }
            if (loinc.NameLongCommon != oldLoinc.NameLongCommon)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "NameLongCommon = '" + POut.String(loinc.NameLongCommon) + "'";
            }
            if (loinc.UnitsUCUM != oldLoinc.UnitsUCUM)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UnitsUCUM = '" + POut.String(loinc.UnitsUCUM) + "'";
            }
            if (loinc.RankCommonTests != oldLoinc.RankCommonTests)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "RankCommonTests = " + POut.Int(loinc.RankCommonTests) + "";
            }
            if (loinc.RankCommonOrders != oldLoinc.RankCommonOrders)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "RankCommonOrders = " + POut.Int(loinc.RankCommonOrders) + "";
            }
            if (command == "")
            {
                return;
            }
            command = "UPDATE loinc SET " + command
                      + " WHERE LoincNum = " + POut.Long(loinc.LoincNum);
            Db.NonQ(command);
        }
Example #19
0
		///<summary>Updates one Loinc in the database.</summary>
		public static void Update(Loinc loinc){
			string command="UPDATE loinc SET "
				+"LoincCode              = '"+POut.String(loinc.LoincCode)+"', "
				+"Component              = '"+POut.String(loinc.Component)+"', "
				+"PropertyObserved       = '"+POut.String(loinc.PropertyObserved)+"', "
				+"TimeAspct              = '"+POut.String(loinc.TimeAspct)+"', "
				+"SystemMeasured         = '"+POut.String(loinc.SystemMeasured)+"', "
				+"ScaleType              = '"+POut.String(loinc.ScaleType)+"', "
				+"MethodType             = '"+POut.String(loinc.MethodType)+"', "
				+"StatusOfCode           = '"+POut.String(loinc.StatusOfCode)+"', "
				+"NameShort              = '"+POut.String(loinc.NameShort)+"', "
				+"ClassType              = '"+POut.String(loinc.ClassType)+"', "
				+"UnitsRequired          =  "+POut.Bool  (loinc.UnitsRequired)+", "
				+"OrderObs               = '"+POut.String(loinc.OrderObs)+"', "
				+"HL7FieldSubfieldID     = '"+POut.String(loinc.HL7FieldSubfieldID)+"', "
				+"ExternalCopyrightNotice= '"+POut.String(loinc.ExternalCopyrightNotice)+"', "
				+"NameLongCommon         = '"+POut.String(loinc.NameLongCommon)+"', "
				+"UnitsUCUM              = '"+POut.String(loinc.UnitsUCUM)+"', "
				+"RankCommonTests        =  "+POut.Int   (loinc.RankCommonTests)+", "
				+"RankCommonOrders       =  "+POut.Int   (loinc.RankCommonOrders)+" "
				+"WHERE LoincNum = "+POut.Long(loinc.LoincNum);
			Db.NonQ(command);
		}
Example #20
0
        ///<summary>Observation/result segment.  Used to transmit observations related to the patient and visit.  Guide page 64.</summary>
        private void OBX()
        {
            List <EhrAptObs> listObservations = EhrAptObses.Refresh(_appt.AptNum);

            for (int i = 0; i < listObservations.Count; i++)
            {
                EhrAptObs obs = listObservations[i];
                _seg = new SegmentHL7(SegmentNameHL7.OBX);
                _seg.SetField(0, "OBX");
                _seg.SetField(1, (i + 1).ToString());             //OBX-1 Set ID - OBX.  Required (length 1..4).  Must start at 1 and increment.
                //OBX-2 Value Type.  Required (length 1..3).  Cardinality [1..1].  Identifies the structure of data in observation value OBX-5.  Values allowed: TS=Time Stamp (Date and/or Time),TX=Text,NM=Numeric,CWE=Coded with exceptions,XAD=Address.
                if (obs.ValType == EhrAptObsType.Coded)
                {
                    _seg.SetField(2, "CWE");
                }
                else if (obs.ValType == EhrAptObsType.DateAndTime)
                {
                    _seg.SetField(2, "TS");
                }
                else if (obs.ValType == EhrAptObsType.Numeric)
                {
                    _seg.SetField(2, "NM");
                }
                else                  //obs.ValType==EhrAptObsType.Text
                {
                    _seg.SetField(2, "TX");
                }
                //OBX-3 Observation Identifier.  Required (length up to 478).  Cardinality [1..1].  Value set is HL7 table named "Observation Identifier".  Type CE.  We use LOINC codes because the testing tool used LOINC codes and so do vaccines.
                string obsIdCode         = "";
                string obsIdCodeDescript = "";
                string obsIdCodeSystem   = "LN";
                if (obs.IdentifyingCode == EhrAptObsIdentifier.BodyTemp)
                {
                    obsIdCode         = "11289-6";
                    obsIdCodeDescript = "Body temperature:Temp:Enctrfrst:Patient:Qn:";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.CheifComplaint)
                {
                    obsIdCode         = "8661-1";
                    obsIdCodeDescript = "Chief complaint:Find:Pt:Patient:Nom:Reported";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.DateIllnessOrInjury)
                {
                    obsIdCode         = "11368-8";
                    obsIdCodeDescript = "Illness or injury onset date and time:TmStp:Pt:Patient:Qn:";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.OxygenSaturation)
                {
                    obsIdCode         = "59408-5";
                    obsIdCodeDescript = "Oxygen saturation:MFr:Pt:BldA:Qn:Pulse oximetry";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.PatientAge)
                {
                    obsIdCode         = "21612-7";
                    obsIdCodeDescript = "Age Time Patient Reported";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.PrelimDiag)
                {
                    obsIdCode         = "44833-2";
                    obsIdCodeDescript = "Diagnosis.preliminary:Imp:Pt:Patient:Nom:";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.TreatFacilityID)
                {
                    obsIdCode         = "SS001";
                    obsIdCodeDescript = "Treating Facility Identifier";
                    obsIdCodeSystem   = "PHINQUESTION";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.TreatFacilityLocation)
                {
                    obsIdCode         = "SS002";
                    obsIdCodeDescript = "Treating Facility Location";
                    obsIdCodeSystem   = "PHINQUESTION";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.TriageNote)
                {
                    obsIdCode         = "54094-8";
                    obsIdCodeDescript = "Triage note:Find:Pt:Emergency department:Doc:";
                }
                else if (obs.IdentifyingCode == EhrAptObsIdentifier.VisitType)
                {
                    obsIdCode         = "SS003";
                    obsIdCodeDescript = "Facility / Visit Type";
                    obsIdCodeSystem   = "PHINQUESTION";
                }
                WriteCE(3, obsIdCode, obsIdCodeDescript, obsIdCodeSystem);
                //OBX-4 Observation Sub-ID.  No longer used.
                //OBX-5 Observation Value.  Required if known (length 1..99999).  Value must match type in OBX-2.
                if (obs.ValType == EhrAptObsType.Address)
                {
                    WriteXAD(5, _sendingFacilityAddress1, _sendingFacilityAddress2, _sendingFacilityCity, _sendingFacilityState, _sendingFacilityZip);
                }
                else if (obs.ValType == EhrAptObsType.Coded)
                {
                    string codeDescript     = "";
                    string codeSystemAbbrev = "";
                    if (obs.ValCodeSystem.Trim().ToUpper() == "LOINC")
                    {
                        Loinc loincVal = Loincs.GetByCode(obs.ValReported);
                        codeDescript     = loincVal.NameShort;
                        codeSystemAbbrev = "LN";
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "SNOMEDCT")
                    {
                        Snomed snomedVal = Snomeds.GetByCode(obs.ValReported);
                        codeDescript     = snomedVal.Description;
                        codeSystemAbbrev = "SCT";
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "ICD9")
                    {
                        ICD9 icd9Val = ICD9s.GetByCode(obs.ValReported);
                        codeDescript     = icd9Val.Description;
                        codeSystemAbbrev = "I9";
                    }
                    else if (obs.ValCodeSystem.Trim().ToUpper() == "ICD10")
                    {
                        Icd10 icd10Val = Icd10s.GetByCode(obs.ValReported);
                        codeDescript     = icd10Val.Description;
                        codeSystemAbbrev = "I10";
                    }
                    WriteCE(5, obs.ValReported.Trim(), codeDescript, codeSystemAbbrev);
                }
                else if (obs.ValType == EhrAptObsType.DateAndTime)
                {
                    DateTime dateVal    = DateTime.Parse(obs.ValReported.Trim());
                    string   strDateOut = dateVal.ToString("yyyyMMdd");
                    //The testing tool threw errors when there were trailing zeros, even though technically valid.
                    if (dateVal.Second > 0)
                    {
                        strDateOut += dateVal.ToString("HHmmss");
                    }
                    else if (dateVal.Minute > 0)
                    {
                        strDateOut += dateVal.ToString("HHmm");
                    }
                    else if (dateVal.Hour > 0)
                    {
                        strDateOut += dateVal.ToString("HH");
                    }
                    _seg.SetField(5, strDateOut);
                }
                else if (obs.ValType == EhrAptObsType.Numeric)
                {
                    _seg.SetField(5, obs.ValReported.Trim());
                }
                else                   //obs.ValType==EhrAptObsType.Text
                {
                    _seg.SetField(5, obs.ValReported);
                }
                //OBX-6 Units.  Required if OBX-2 is NM=Numeric.  Cardinality [0..1].  Type CE.  The guide suggests value sets: Pulse Oximetry Unit, Temperature Unit, or Age Unit.  However, the testing tool used UCUM, so we will use UCUM.
                if (obs.ValType == EhrAptObsType.Numeric)
                {
                    if (String.IsNullOrEmpty(obs.UcumCode))                      //If units are required but known, we must send a null flavor.
                    {
                        WriteCE(6, "UNK", "", "NULLFL");
                    }
                    else
                    {
                        Ucum ucum = Ucums.GetByCode(obs.UcumCode);
                        WriteCE(6, ucum.UcumCode, ucum.Description, "UCUM");
                    }
                }
                //OBX-7 References Range.  No longer used.
                //OBX-8 Abnormal Flags.  No longer used.
                //OBX-9 Probability.  No longer used.
                //OBX-10 Nature of Abnormal Test.  No longer used.
                _seg.SetField(11, "F");               //OBX-11 Observation Result Status.  Required (length 1..1).  Expected value is "F".
                //OBX-12 Effective Date of Reference Range.  No longer used.
                //OBX-13 User Defined Access Checks.  No longer used.
                //OBX-14 Date/Time of the Observation.  Optional.
                //OBX-15 Producer's ID.  No longer used.
                //OBX-16 Responsible Observer.  No longer used.
                //OBX-17 Observation Method.  No longer used.
                //OBX-18 Equipment Instance Identifier.  No longer used.
                //OBX-19 Date/Time of the Analysis.  No longer used.
                _msg.Segments.Add(_seg);
            }
        }
Example #21
0
        private void FillGridObservations()
        {
            gridObservations.BeginUpdate();
            gridObservations.ListGridColumns.Clear();
            gridObservations.ListGridColumns.Add(new UI.GridColumn("Observation", 200));   //0
            gridObservations.ListGridColumns.Add(new UI.GridColumn("Value Type", 200));    //1
            gridObservations.ListGridColumns.Add(new UI.GridColumn("Value", 0));           //2
            gridObservations.ListGridRows.Clear();
            List <EhrAptObs> listEhrAptObses = EhrAptObses.Refresh(_appt.AptNum);

            for (int i = 0; i < listEhrAptObses.Count; i++)
            {
                EhrAptObs  obs = listEhrAptObses[i];
                UI.GridRow row = new UI.GridRow();
                row.Tag = obs;
                row.Cells.Add(obs.IdentifyingCode.ToString());                //0 Observation
                if (obs.ValType == EhrAptObsType.Coded)
                {
                    row.Cells.Add(obs.ValType.ToString() + " - " + obs.ValCodeSystem);                //1 Value Type
                    if (obs.ValCodeSystem == "LOINC")
                    {
                        Loinc loincValue = Loincs.GetByCode(obs.ValReported);
                        row.Cells.Add(loincValue.NameShort);                        //2 Value
                    }
                    else if (obs.ValCodeSystem == "SNOMEDCT")
                    {
                        Snomed snomedValue = Snomeds.GetByCode(obs.ValReported);
                        row.Cells.Add(snomedValue.Description);                        //2 Value
                    }
                    else if (obs.ValCodeSystem == "ICD9")
                    {
                        ICD9 icd9Value = ICD9s.GetByCode(obs.ValReported);
                        row.Cells.Add(icd9Value.Description);                        //2 Value
                    }
                    else if (obs.ValCodeSystem == "ICD10")
                    {
                        Icd10 icd10Value = Icd10s.GetByCode(obs.ValReported);
                        row.Cells.Add(icd10Value.Description);                        //2 Value
                    }
                }
                else if (obs.ValType == EhrAptObsType.Address)
                {
                    string sendingFacilityAddress1 = PrefC.GetString(PrefName.PracticeAddress);
                    string sendingFacilityAddress2 = PrefC.GetString(PrefName.PracticeAddress2);
                    string sendingFacilityCity     = PrefC.GetString(PrefName.PracticeCity);
                    string sendingFacilityState    = PrefC.GetString(PrefName.PracticeST);
                    string sendingFacilityZip      = PrefC.GetString(PrefName.PracticeZip);
                    if (PrefC.HasClinicsEnabled && _appt.ClinicNum != 0)                   //Using clinics and a clinic is assigned.
                    {
                        Clinic clinic = Clinics.GetClinic(_appt.ClinicNum);
                        sendingFacilityAddress1 = clinic.Address;
                        sendingFacilityAddress2 = clinic.Address2;
                        sendingFacilityCity     = clinic.City;
                        sendingFacilityState    = clinic.State;
                        sendingFacilityZip      = clinic.Zip;
                    }
                    row.Cells.Add(obs.ValType.ToString());                                                                                                                      //1 Value Type
                    row.Cells.Add(sendingFacilityAddress1 + " " + sendingFacilityAddress2 + " " + sendingFacilityCity + " " + sendingFacilityState + " " + sendingFacilityZip); //2 Value
                }
                else
                {
                    row.Cells.Add(obs.ValType.ToString());             //1 Value Type
                    row.Cells.Add(obs.ValReported);                    //2 Value
                }
                gridObservations.ListGridRows.Add(row);
            }
            gridObservations.EndUpdate();
        }
Example #22
0
		///<summary>Updates one Loinc 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(Loinc loinc,Loinc oldLoinc){
			string command="";
			if(loinc.LoincCode != oldLoinc.LoincCode) {
				if(command!=""){ command+=",";}
				command+="LoincCode = '"+POut.String(loinc.LoincCode)+"'";
			}
			if(loinc.Component != oldLoinc.Component) {
				if(command!=""){ command+=",";}
				command+="Component = '"+POut.String(loinc.Component)+"'";
			}
			if(loinc.PropertyObserved != oldLoinc.PropertyObserved) {
				if(command!=""){ command+=",";}
				command+="PropertyObserved = '"+POut.String(loinc.PropertyObserved)+"'";
			}
			if(loinc.TimeAspct != oldLoinc.TimeAspct) {
				if(command!=""){ command+=",";}
				command+="TimeAspct = '"+POut.String(loinc.TimeAspct)+"'";
			}
			if(loinc.SystemMeasured != oldLoinc.SystemMeasured) {
				if(command!=""){ command+=",";}
				command+="SystemMeasured = '"+POut.String(loinc.SystemMeasured)+"'";
			}
			if(loinc.ScaleType != oldLoinc.ScaleType) {
				if(command!=""){ command+=",";}
				command+="ScaleType = '"+POut.String(loinc.ScaleType)+"'";
			}
			if(loinc.MethodType != oldLoinc.MethodType) {
				if(command!=""){ command+=",";}
				command+="MethodType = '"+POut.String(loinc.MethodType)+"'";
			}
			if(loinc.StatusOfCode != oldLoinc.StatusOfCode) {
				if(command!=""){ command+=",";}
				command+="StatusOfCode = '"+POut.String(loinc.StatusOfCode)+"'";
			}
			if(loinc.NameShort != oldLoinc.NameShort) {
				if(command!=""){ command+=",";}
				command+="NameShort = '"+POut.String(loinc.NameShort)+"'";
			}
			if(loinc.ClassType != oldLoinc.ClassType) {
				if(command!=""){ command+=",";}
				command+="ClassType = '"+POut.String(loinc.ClassType)+"'";
			}
			if(loinc.UnitsRequired != oldLoinc.UnitsRequired) {
				if(command!=""){ command+=",";}
				command+="UnitsRequired = "+POut.Bool(loinc.UnitsRequired)+"";
			}
			if(loinc.OrderObs != oldLoinc.OrderObs) {
				if(command!=""){ command+=",";}
				command+="OrderObs = '"+POut.String(loinc.OrderObs)+"'";
			}
			if(loinc.HL7FieldSubfieldID != oldLoinc.HL7FieldSubfieldID) {
				if(command!=""){ command+=",";}
				command+="HL7FieldSubfieldID = '"+POut.String(loinc.HL7FieldSubfieldID)+"'";
			}
			if(loinc.ExternalCopyrightNotice != oldLoinc.ExternalCopyrightNotice) {
				if(command!=""){ command+=",";}
				command+="ExternalCopyrightNotice = '"+POut.String(loinc.ExternalCopyrightNotice)+"'";
			}
			if(loinc.NameLongCommon != oldLoinc.NameLongCommon) {
				if(command!=""){ command+=",";}
				command+="NameLongCommon = '"+POut.String(loinc.NameLongCommon)+"'";
			}
			if(loinc.UnitsUCUM != oldLoinc.UnitsUCUM) {
				if(command!=""){ command+=",";}
				command+="UnitsUCUM = '"+POut.String(loinc.UnitsUCUM)+"'";
			}
			if(loinc.RankCommonTests != oldLoinc.RankCommonTests) {
				if(command!=""){ command+=",";}
				command+="RankCommonTests = "+POut.Int(loinc.RankCommonTests)+"";
			}
			if(loinc.RankCommonOrders != oldLoinc.RankCommonOrders) {
				if(command!=""){ command+=",";}
				command+="RankCommonOrders = "+POut.Int(loinc.RankCommonOrders)+"";
			}
			if(command==""){
				return;
			}
			command="UPDATE loinc SET "+command
				+" WHERE LoincNum = "+POut.Long(loinc.LoincNum);
			Db.NonQ(command);
		}
Example #23
0
 ///<summary>Returns true if Update(Loinc,Loinc) 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(Loinc loinc, Loinc oldLoinc)
 {
     if (loinc.LoincCode != oldLoinc.LoincCode)
     {
         return(true);
     }
     if (loinc.Component != oldLoinc.Component)
     {
         return(true);
     }
     if (loinc.PropertyObserved != oldLoinc.PropertyObserved)
     {
         return(true);
     }
     if (loinc.TimeAspct != oldLoinc.TimeAspct)
     {
         return(true);
     }
     if (loinc.SystemMeasured != oldLoinc.SystemMeasured)
     {
         return(true);
     }
     if (loinc.ScaleType != oldLoinc.ScaleType)
     {
         return(true);
     }
     if (loinc.MethodType != oldLoinc.MethodType)
     {
         return(true);
     }
     if (loinc.StatusOfCode != oldLoinc.StatusOfCode)
     {
         return(true);
     }
     if (loinc.NameShort != oldLoinc.NameShort)
     {
         return(true);
     }
     if (loinc.ClassType != oldLoinc.ClassType)
     {
         return(true);
     }
     if (loinc.UnitsRequired != oldLoinc.UnitsRequired)
     {
         return(true);
     }
     if (loinc.OrderObs != oldLoinc.OrderObs)
     {
         return(true);
     }
     if (loinc.HL7FieldSubfieldID != oldLoinc.HL7FieldSubfieldID)
     {
         return(true);
     }
     if (loinc.ExternalCopyrightNotice != oldLoinc.ExternalCopyrightNotice)
     {
         return(true);
     }
     if (loinc.NameLongCommon != oldLoinc.NameLongCommon)
     {
         return(true);
     }
     if (loinc.UnitsUCUM != oldLoinc.UnitsUCUM)
     {
         return(true);
     }
     if (loinc.RankCommonTests != oldLoinc.RankCommonTests)
     {
         return(true);
     }
     if (loinc.RankCommonOrders != oldLoinc.RankCommonOrders)
     {
         return(true);
     }
     return(false);
 }
        private void FillGrid()
        {
            gridMain.BeginUpdate();
            gridMain.ListGridColumns.Clear();
            GridColumn col = new GridColumn("Date", 70);

            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Prov", 50);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Item Not Performed", 130);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Code", 102);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Code Description", 150);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Reason Code", 80);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Reason Description", 150);
            gridMain.ListGridColumns.Add(col);
            col = new GridColumn("Note", 150);
            gridMain.ListGridColumns.Add(col);
            listNotPerf = EhrNotPerformeds.Refresh(PatCur.PatNum);
            gridMain.ListGridRows.Clear();
            GridRow row;

            for (int i = 0; i < listNotPerf.Count; i++)
            {
                row = new GridRow();
                row.Cells.Add(listNotPerf[i].DateEntry.ToShortDateString());
                row.Cells.Add(Providers.GetAbbr(listNotPerf[i].ProvNum));
                //Item not performed------------------------------------------------------------
                switch (listNotPerf[i].CodeValue)
                {
                case "39156-5":                        //BMI exam
                    row.Cells.Add(EhrNotPerformedItem.BMIExam.ToString());
                    break;

                case "428191000124101":                        //CurrentMedsDocumented
                    row.Cells.Add(EhrNotPerformedItem.DocumentCurrentMeds.ToString());
                    break;

                case "11366-2":                        //History of tobacco use Narrative
                case "68535-4":                        //Have you used tobacco in the last 30 days
                case "68536-2":                        //Have you used smokeless tobacco in last 30 days
                    row.Cells.Add(EhrNotPerformedItem.TobaccoScreening.ToString());
                    break;

                default:                        //We will default to Influenza Vaccine, there are 26 codes, for this item
                    row.Cells.Add(EhrNotPerformedItem.InfluenzaVaccination.ToString());
                    break;
                }
                //Code not performed------------------------------------------------------------
                row.Cells.Add(listNotPerf[i].CodeValue + " (" + listNotPerf[i].CodeSystem + ")");
                //Description of code not performed---------------------------------------------
                string descript = "";
                //to get description, first determine which table the code is from.  EhrNotPerformed is allowed to be CPT, CVX, LOINC, SNOMEDCT.
                switch (listNotPerf[i].CodeSystem)
                {
                case "CPT":
                    Cpt cptCur = Cpts.GetByCode(listNotPerf[i].CodeValue);
                    if (cptCur != null)
                    {
                        descript = cptCur.Description;
                    }
                    break;

                case "CVX":
                    Cvx cvxCur = Cvxs.GetOneFromDb(listNotPerf[i].CodeValue);
                    if (cvxCur != null)
                    {
                        descript = cvxCur.Description;
                    }
                    break;

                case "LOINC":
                    Loinc lCur = Loincs.GetByCode(listNotPerf[i].CodeValue);
                    if (lCur != null)
                    {
                        descript = lCur.NameLongCommon;
                    }
                    break;

                case "SNOMEDCT":
                    Snomed sCur = Snomeds.GetByCode(listNotPerf[i].CodeValue);
                    if (sCur != null)
                    {
                        descript = sCur.Description;
                    }
                    break;
                }
                row.Cells.Add(descript);
                //Reason Code-------------------------------------------------------------------
                row.Cells.Add(listNotPerf[i].CodeValueReason + " (" + listNotPerf[i].CodeSystemReason + ")");
                //Reason Description------------------------------------------------------------
                descript = "";
                if (listNotPerf[i].CodeValueReason != "")
                {
                    //reason codes are only allowed to be SNOMEDCT codes
                    Snomed sCur = Snomeds.GetByCode(listNotPerf[i].CodeValueReason);
                    if (sCur != null)
                    {
                        descript = sCur.Description;
                    }
                }
                row.Cells.Add(descript);
                //Note--------------------------------------------------------------------------
                row.Cells.Add(listNotPerf[i].Note);
                gridMain.ListGridRows.Add(row);
            }
            gridMain.EndUpdate();
        }
Example #25
0
        private void FormEhrAptObsEdit_Load(object sender, EventArgs e)
        {
            _appt = Appointments.GetOneApt(_ehrAptObsCur.AptNum);
            comboObservationQuestion.Items.Clear();
            string[] arrayQuestionNames = Enum.GetNames(typeof(EhrAptObsIdentifier));
            for (int i = 0; i < arrayQuestionNames.Length; i++)
            {
                comboObservationQuestion.Items.Add(arrayQuestionNames[i]);
                EhrAptObsIdentifier ehrAptObsIdentifier = (EhrAptObsIdentifier)i;
                if (_ehrAptObsCur.IdentifyingCode == ehrAptObsIdentifier)
                {
                    comboObservationQuestion.SelectedIndex = i;
                }
            }
            listValueType.Items.Clear();
            string[] arrayValueTypeNames = Enum.GetNames(typeof(EhrAptObsType));
            for (int i = 0; i < arrayValueTypeNames.Length; i++)
            {
                listValueType.Items.Add(arrayValueTypeNames[i]);
                EhrAptObsType ehrAptObsType = (EhrAptObsType)i;
                if (_ehrAptObsCur.ValType == ehrAptObsType)
                {
                    listValueType.SelectedIndex = i;
                }
            }
            if (_ehrAptObsCur.ValType == EhrAptObsType.Coded)
            {
                _strValCodeSystem = _ehrAptObsCur.ValCodeSystem;
                if (_ehrAptObsCur.ValCodeSystem == "LOINC")
                {
                    _loincValue    = Loincs.GetByCode(_ehrAptObsCur.ValReported);
                    textValue.Text = _loincValue.NameShort;
                }
                else if (_ehrAptObsCur.ValCodeSystem == "SNOMEDCT")
                {
                    _snomedValue   = Snomeds.GetByCode(_ehrAptObsCur.ValReported);
                    textValue.Text = _snomedValue.Description;
                }
                else if (_ehrAptObsCur.ValCodeSystem == "ICD9")
                {
                    _icd9Value     = ICD9s.GetByCode(_ehrAptObsCur.ValReported);
                    textValue.Text = _icd9Value.Description;
                }
                else if (_ehrAptObsCur.ValCodeSystem == "ICD10")
                {
                    _icd10Value    = Icd10s.GetByCode(_ehrAptObsCur.ValReported);
                    textValue.Text = _icd10Value.Description;
                }
            }
            else
            {
                textValue.Text = _ehrAptObsCur.ValReported;
            }
            comboUnits.Items.Clear();
            comboUnits.Items.Add("none");
            comboUnits.SelectedIndex = 0;
            List <string> listUcumCodes = Ucums.GetAllCodes();

            for (int i = 0; i < listUcumCodes.Count; i++)
            {
                string ucumCode = listUcumCodes[i];
                comboUnits.Items.Add(ucumCode);
                if (ucumCode == _ehrAptObsCur.UcumCode)
                {
                    comboUnits.SelectedIndex = i + 1;
                }
            }
            SetFlags();
        }
Example #26
0
 ///<summary>Inserts one Loinc into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(Loinc loinc)
 {
     return(InsertNoCache(loinc, false));
 }
Example #27
0
        private void FillGrid()
        {
            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col = new ODGridColumn("Category", 80);

            gridMain.Columns.Add(col);
            col = new ODGridColumn("Code", 100);
            gridMain.Columns.Add(col);
            col = new ODGridColumn("CodeSystem", 120);
            gridMain.Columns.Add(col);
            //col=new ODGridColumn("Op+Value",80);//Example: >=150
            //gridMain.Columns.Add(col);
            col = new ODGridColumn("Description", 250);         //Also includes values for labloinc and demographics and vitals. Example: ">150, BP Systolic"
            gridMain.Columns.Add(col);
            gridMain.Rows.Clear();
            ODGridRow row;

            //EhrTriggerCur.ProblemDefNumList-----------------------------------------------------------------------------------------------------------------------
            string[] arrayString = EhrTriggerCur.ProblemDefNumList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Problem");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("Problem Def");
                row.Cells.Add(DiseaseDefs.GetItem(PIn.Long(arrayString[i])).DiseaseName);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.ProblemIcd9List---------------------------------------------------------------------------------------------------------------------------
            arrayString = EhrTriggerCur.ProblemIcd9List.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Problem");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("ICD9 CM");
                row.Cells.Add(ICD9s.GetByCode(arrayString[i]).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.ProblemIcd10List;
            arrayString = EhrTriggerCur.ProblemIcd10List.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Problem");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("ICD10 CM");
                row.Cells.Add(Icd10s.GetByCode(arrayString[i]).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.ProblemSnomedList;
            arrayString = EhrTriggerCur.ProblemSnomedList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Problem");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("SNOMED CT");
                row.Cells.Add(Snomeds.GetByCode(arrayString[i]).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.MedicationNumList
            arrayString = EhrTriggerCur.MedicationNumList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Medication");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("Medication Def");
                row.Cells.Add(Medications.GetDescription(PIn.Long(arrayString[i])));
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.RxCuiList
            arrayString = EhrTriggerCur.RxCuiList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Medication");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("RxCui");
                row.Cells.Add(RxNorms.GetByRxCUI(arrayString[i]).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.CvxList
            arrayString = EhrTriggerCur.CvxList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Medication");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("Cvx");
                row.Cells.Add(Cvxs.GetByCode(arrayString[i]).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.AllergyDefNumList
            arrayString = EhrTriggerCur.AllergyDefNumList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                row.Cells.Add("Allergy");
                row.Cells.Add(arrayString[i]);
                row.Cells.Add("Allergy Def");
                row.Cells.Add(AllergyDefs.GetOne(PIn.Long(arrayString[i])).Description);
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.DemographicsList
            arrayString = EhrTriggerCur.DemographicsList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                string[] arrayStringElements = arrayString[i].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                switch (arrayStringElements[0])
                {
                case "age":
                    row.Cells.Add("Demographic");
                    row.Cells.Add("30525-0");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("Age" + arrayStringElements[1]);                          //Example "Age>55"
                    gridMain.Rows.Add(row);
                    break;

                case "gender":
                    row.Cells.Add("Demographic");
                    row.Cells.Add("46098-0");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("Gender:" + arrayString[i].Replace("gender,", ""));                         //Example "Gender:Male, Female, Unknown/Undifferentiated"
                    gridMain.Rows.Add(row);
                    break;

                default:
                    //should never happen
                    continue;                            //next trigger
                }
            }
            //EhrTriggerCur.LabLoincList
            arrayString = EhrTriggerCur.LabLoincList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                Loinc _loincTemp = Loincs.GetByCode(arrayString[i]);              //.Split(new string[] { ";" },StringSplitOptions.None)[0]);
                if (_loincTemp == null)
                {
                    continue;
                }
                row.Cells.Add("Laboratory");
                row.Cells.Add(_loincTemp.LoincCode);
                row.Cells.Add("LOINC");
                row.Cells.Add(_loincTemp.NameShort);
                //switch(arrayString[i].Split(new string[] { ";" },StringSplitOptions.RemoveEmptyEntries).Length) {
                //	case 1://loinc only comparison
                //		row.Cells.Add(_loincTemp.NameShort);
                //		break;
                //	case 2://microbiology or unitless lab.
                //		Snomed _snomedTemp=Snomeds.GetByCode(arrayString[i].Split(new string[] { ";" },StringSplitOptions.None)[1]);
                //		row.Cells.Add(_loincTemp.NameShort+", "
                //			+(_snomedTemp==null?arrayString[i].Split(new string[] { ";" },StringSplitOptions.None)[1]:_snomedTemp.Description));//Example: Bacteria Identified, Campylobacter jenuni
                //		break;
                //	case 3://"traditional lab results"
                //		row.Cells.Add(_loincTemp.NameShort+" "
                //	+arrayString[i].Split(new string[] { ";" },StringSplitOptions.None)[1]+" "//example: >150 or a snomed code if microbiology
                //	+arrayString[i].Split(new string[] { ";" },StringSplitOptions.None)[2]    //example: mg/dL or blank
                //			);
                //		break;
                //	default://should never happen. Will display blank.
                //		row.Cells.Add("");
                //		break;
                //}
                gridMain.Rows.Add(row);
            }
            //EhrTriggerCur.VitalLoincList
            arrayString = EhrTriggerCur.VitalLoincList.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arrayString.Length; i++)
            {
                row = new ODGridRow();
                string[] arrayStringElements = arrayString[i].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                switch (arrayStringElements[0])
                {
                case "height":
                    row.Cells.Add("Vitals");
                    row.Cells.Add("8302-2");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("Height" + arrayString[i].Replace("height,", "") + " in.");                       //Example "Age>55"
                    gridMain.Rows.Add(row);
                    break;

                case "weight":
                    row.Cells.Add("Vitals");
                    row.Cells.Add("29463-7");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("Weight:" + arrayString[i].Replace("weight,", ""));                         //Example "Gender:Male, Female, Unknown/Undifferentiated"
                    gridMain.Rows.Add(row);
                    break;

                case "bp???":
                    row.Cells.Add("Vitals");
                    row.Cells.Add("???There are two.");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("???");                            //Example "Gender:Male, Female, Unknown/Undifferentiated"
                    gridMain.Rows.Add(row);
                    break;

                case "BMI":
                    row.Cells.Add("Vitals");
                    row.Cells.Add("39156-5");
                    row.Cells.Add("LOINC");
                    row.Cells.Add("BMI" + arrayString[i].Replace("BMI,", "").Replace("%", "") + "%");                      //Example "Gender:Male, Female, Unknown/Undifferentiated"
                    gridMain.Rows.Add(row);
                    break;

                default:
                    //should never happen
                    continue;                            //next trigger
                }
            }
            //End trigger fields.
            gridMain.EndUpdate();
        }
Example #28
0
        ///<summary>Updates one Loinc 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.  Returns true if an update occurred.</summary>
        public static bool Update(Loinc loinc, Loinc oldLoinc)
        {
            string command = "";

            if (loinc.LoincCode != oldLoinc.LoincCode)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "LoincCode = '" + POut.String(loinc.LoincCode) + "'";
            }
            if (loinc.Component != oldLoinc.Component)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Component = '" + POut.String(loinc.Component) + "'";
            }
            if (loinc.PropertyObserved != oldLoinc.PropertyObserved)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "PropertyObserved = '" + POut.String(loinc.PropertyObserved) + "'";
            }
            if (loinc.TimeAspct != oldLoinc.TimeAspct)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TimeAspct = '" + POut.String(loinc.TimeAspct) + "'";
            }
            if (loinc.SystemMeasured != oldLoinc.SystemMeasured)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "SystemMeasured = '" + POut.String(loinc.SystemMeasured) + "'";
            }
            if (loinc.ScaleType != oldLoinc.ScaleType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ScaleType = '" + POut.String(loinc.ScaleType) + "'";
            }
            if (loinc.MethodType != oldLoinc.MethodType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "MethodType = '" + POut.String(loinc.MethodType) + "'";
            }
            if (loinc.StatusOfCode != oldLoinc.StatusOfCode)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "StatusOfCode = '" + POut.String(loinc.StatusOfCode) + "'";
            }
            if (loinc.NameShort != oldLoinc.NameShort)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "NameShort = '" + POut.String(loinc.NameShort) + "'";
            }
            if (loinc.ClassType != oldLoinc.ClassType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClassType = '" + POut.String(loinc.ClassType) + "'";
            }
            if (loinc.UnitsRequired != oldLoinc.UnitsRequired)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UnitsRequired = " + POut.Bool(loinc.UnitsRequired) + "";
            }
            if (loinc.OrderObs != oldLoinc.OrderObs)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "OrderObs = '" + POut.String(loinc.OrderObs) + "'";
            }
            if (loinc.HL7FieldSubfieldID != oldLoinc.HL7FieldSubfieldID)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "HL7FieldSubfieldID = '" + POut.String(loinc.HL7FieldSubfieldID) + "'";
            }
            if (loinc.ExternalCopyrightNotice != oldLoinc.ExternalCopyrightNotice)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ExternalCopyrightNotice = " + DbHelper.ParamChar + "paramExternalCopyrightNotice";
            }
            if (loinc.NameLongCommon != oldLoinc.NameLongCommon)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "NameLongCommon = '" + POut.String(loinc.NameLongCommon) + "'";
            }
            if (loinc.UnitsUCUM != oldLoinc.UnitsUCUM)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UnitsUCUM = '" + POut.String(loinc.UnitsUCUM) + "'";
            }
            if (loinc.RankCommonTests != oldLoinc.RankCommonTests)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "RankCommonTests = " + POut.Int(loinc.RankCommonTests) + "";
            }
            if (loinc.RankCommonOrders != oldLoinc.RankCommonOrders)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "RankCommonOrders = " + POut.Int(loinc.RankCommonOrders) + "";
            }
            if (command == "")
            {
                return(false);
            }
            if (loinc.ExternalCopyrightNotice == null)
            {
                loinc.ExternalCopyrightNotice = "";
            }
            OdSqlParameter paramExternalCopyrightNotice = new OdSqlParameter("paramExternalCopyrightNotice", OdDbType.Text, POut.StringParam(loinc.ExternalCopyrightNotice));

            command = "UPDATE loinc SET " + command
                      + " WHERE LoincNum = " + POut.Long(loinc.LoincNum);
            Db.NonQ(command, paramExternalCopyrightNotice);
            return(true);
        }
        private void FillGrid()
        {
            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col = new ODGridColumn("Date", 70);

            gridMain.Columns.Add(col);
            col = new ODGridColumn("Type", 170);
            gridMain.Columns.Add(col);
            col = new ODGridColumn("Description", 170);
            gridMain.Columns.Add(col);
            col = new ODGridColumn("Documentation", 170);
            gridMain.Columns.Add(col);
            gridMain.Rows.Clear();
            ODGridRow        row;
            List <ODGridRow> listRows = new List <ODGridRow>();

            #region AssessedEvents
            _ListEvents = EhrMeasureEvents.RefreshByType(PatCur.PatNum, EhrMeasureEventType.TobaccoUseAssessed);
            for (int i = 0; i < _ListEvents.Count; i++)
            {
                row = new ODGridRow();
                row.Cells.Add(_ListEvents[i].DateTEvent.ToShortDateString());
                Loinc lCur = Loincs.GetByCode(_ListEvents[i].CodeValueEvent);              //TobaccoUseAssessed events can be one of three types, all LOINC codes
                if (lCur != null)
                {
                    row.Cells.Add(lCur.NameLongCommon);
                }
                else
                {
                    row.Cells.Add(_ListEvents[i].EventType.ToString());
                }
                Snomed sCur = Snomeds.GetByCode(_ListEvents[i].CodeValueResult);
                if (sCur != null)
                {
                    row.Cells.Add(sCur.Description);
                }
                else
                {
                    row.Cells.Add("");
                }
                row.Cells.Add(_ListEvents[i].MoreInfo);
                row.Tag = _ListEvents[i];
                listRows.Add(row);
            }
            #endregion
            #region CessationInterventions
            _ListInterventions = Interventions.Refresh(PatCur.PatNum, InterventionCodeSet.TobaccoCessation);
            for (int i = 0; i < _ListInterventions.Count; i++)
            {
                row = new ODGridRow();
                row.Cells.Add(_ListInterventions[i].DateEntry.ToShortDateString());
                row.Cells.Add(InterventionCodeSet.TobaccoCessation.ToString() + " Counseling");
                string descript = "";
                switch (_ListInterventions[i].CodeSystem)
                {
                case "CPT":
                    Cpt cptCur = Cpts.GetByCode(_ListInterventions[i].CodeValue);
                    if (cptCur != null)
                    {
                        descript = cptCur.Description;
                    }
                    break;

                case "SNOMEDCT":
                    Snomed sCur = Snomeds.GetByCode(_ListInterventions[i].CodeValue);
                    if (sCur != null)
                    {
                        descript = sCur.Description;
                    }
                    break;
                }
                row.Cells.Add(descript);
                row.Cells.Add(_ListInterventions[i].Note);
                row.Tag = _ListInterventions[i];
                listRows.Add(row);
            }
            #endregion
            #region CessationMedications
            _ListMedPats = MedicationPats.Refresh(PatCur.PatNum, true);
            List <EhrCode> listEhrMeds = EhrCodes.GetForValueSetOIDs(new List <string> {
                "2.16.840.1.113883.3.526.3.1190"
            }, true);                                                                                                                     //Tobacco Use Cessation Pharmacotherapy Value Set
            //listEhrMeds will contain 41 medications for tobacco cessation if those exist in the rxnorm table
            for (int i = _ListMedPats.Count - 1; i > -1; i--)
            {
                bool found = false;
                for (int j = 0; j < listEhrMeds.Count; j++)
                {
                    if (_ListMedPats[i].RxCui.ToString() == listEhrMeds[j].CodeValue)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    _ListMedPats.RemoveAt(i);
                }
            }
            for (int i = 0; i < _ListMedPats.Count; i++)
            {
                row = new ODGridRow();
                string dateRange = "";
                if (_ListMedPats[i].DateStart.Year > 1880)
                {
                    dateRange = _ListMedPats[i].DateStart.ToShortDateString();
                }
                if (_ListMedPats[i].DateStop.Year > 1880)
                {
                    if (dateRange != "")
                    {
                        dateRange += " - ";
                    }
                    dateRange += _ListMedPats[i].DateStop.ToShortDateString();
                }
                if (dateRange == "")
                {
                    dateRange = _ListMedPats[i].DateTStamp.ToShortDateString();
                }
                row.Cells.Add(dateRange);
                row.Cells.Add(InterventionCodeSet.TobaccoCessation.ToString() + " Medication");
                string medDescript = RxNorms.GetDescByRxCui(_ListMedPats[i].RxCui.ToString());
                row.Cells.Add(medDescript);
                row.Cells.Add(_ListMedPats[i].PatNote);
                row.Tag = _ListMedPats[i];
                listRows.Add(row);
            }
            #endregion
            listRows.Sort(SortDate);
            for (int i = 0; i < listRows.Count; i++)
            {
                gridMain.Rows.Add(listRows[i]);
            }
            gridMain.EndUpdate();
        }
Example #30
0
		///<summary>Inserts one Loinc into the database.  Provides option to use the existing priKey.</summary>
		public static long Insert(Loinc loinc,bool useExistingPK){
			if(!useExistingPK && PrefC.RandomKeys) {
				loinc.LoincNum=ReplicationServers.GetKey("loinc","LoincNum");
			}
			string command="INSERT INTO loinc (";
			if(useExistingPK || PrefC.RandomKeys) {
				command+="LoincNum,";
			}
			command+="LoincCode,Component,PropertyObserved,TimeAspct,SystemMeasured,ScaleType,MethodType,StatusOfCode,NameShort,ClassType,UnitsRequired,OrderObs,HL7FieldSubfieldID,ExternalCopyrightNotice,NameLongCommon,UnitsUCUM,RankCommonTests,RankCommonOrders) VALUES(";
			if(useExistingPK || PrefC.RandomKeys) {
				command+=POut.Long(loinc.LoincNum)+",";
			}
			command+=
				 "'"+POut.String(loinc.LoincCode)+"',"
				+"'"+POut.String(loinc.Component)+"',"
				+"'"+POut.String(loinc.PropertyObserved)+"',"
				+"'"+POut.String(loinc.TimeAspct)+"',"
				+"'"+POut.String(loinc.SystemMeasured)+"',"
				+"'"+POut.String(loinc.ScaleType)+"',"
				+"'"+POut.String(loinc.MethodType)+"',"
				+"'"+POut.String(loinc.StatusOfCode)+"',"
				+"'"+POut.String(loinc.NameShort)+"',"
				+"'"+POut.String(loinc.ClassType)+"',"
				+    POut.Bool  (loinc.UnitsRequired)+","
				+"'"+POut.String(loinc.OrderObs)+"',"
				+"'"+POut.String(loinc.HL7FieldSubfieldID)+"',"
				+"'"+POut.String(loinc.ExternalCopyrightNotice)+"',"
				+"'"+POut.String(loinc.NameLongCommon)+"',"
				+"'"+POut.String(loinc.UnitsUCUM)+"',"
				+    POut.Int   (loinc.RankCommonTests)+","
				+    POut.Int   (loinc.RankCommonOrders)+")";
			if(useExistingPK || PrefC.RandomKeys) {
				Db.NonQ(command);
			}
			else {
				loinc.LoincNum=Db.NonQ(command,true);
			}
			return loinc.LoincNum;
		}
Example #31
0
 ///<summary>Inserts one Loinc into the database.  Returns the new priKey.</summary>
 public static long Insert(Loinc loinc)
 {
     return(Insert(loinc, false));
 }