Beispiel #1
0
        /// <summary>
        /// Open the observation form and let the user enter data.
        /// Sets the observe form to the patient of the activity not the global patient.
        /// </summary>
        /// <param name="context"></param>
        protected override void DoWork(CodeActivityContext context)
        {
            //Get parameter values
            bool markReviewed = MarkReviewed.Expression != null?MarkReviewed.Get(context) : false;

            Guid obdGuid = ObdGuid.Get(context);

            var parms = new UddWidgetParams
            {
                MarkReviewed       = markReviewed,
                UddDataParams      = { PatId1 = PatientId.Get(context) },
                TabViewObdGuid     = obdGuid,
                Mode               = UddWidgetMode.Insert,
                IsFlowsheetDisplay = true
            };

            var view = ObsDef.GetEntityByObdGuid(obdGuid, PM);

            var securityEnum = SecurityUtility.ByteArrayToEnum(view.Security_Mask);

            bool returnResult = ReturnResult.Get(context);

            if (!returnResult)
            {
                // open an instance of the UDD with a distinct instanceid from the standard UDD indstance id
                var host = new UddWidgetModalHost(parms, securityEnum, null, Strings.FlowsheetFormActivity_UddInstanceId);

                // Defect 6398 - Clicking OK in error window cause Mosaiq crashed when trigger IQ script (create assessment by QCL task)
                // if user doesn't have modify rights in Assessment/Labs/Vital signs
                // Defect 7055: Replace IsHandleCreated with !IsDisposed because the window's handle is never created at this point
                if (!host.IsDisposed)
                {
                    var modalDialog = ModalDialog.Get(context);
                    if (modalDialog)
                    {
                        host.ShowDialog();
                    }
                    else
                    {
                        host.Show();
                        host.ForceToFront();
                    }
                }
                return;
            }

            DialogResult res = UddWidgetModalHost.ShowModal(parms, securityEnum, Strings.FlowsheetFormActivity_UddInstanceId);

            if (res == System.Windows.Forms.DialogResult.OK)
            {
                ObrId.Set(context, parms.UddDataParams.ObrId);
            }
            //Record output parameters
            DialogResult.Set(context, res);
        }
 internal static string GetObdLabel(Guid obdGuid)
 {
     try
     {
         var pm  = ImpacPersistenceManagerFactory.CreatePersistenceManager();
         var obd = ObsDef.GetEntityByObdGuid(obdGuid, pm);
         return(obd.IsNullEntity ? String.Empty : obd.LabelInactiveIndicator);
     }
     catch (Exception)
     {
         return(String.Empty);
     }
 }
        /// <summary> </summary>
        protected override void DoWork(CodeActivityContext context)
        {
            Success.Set(context, true);

            var obrId = ObrId.Get(context);
            var dataItemThresholds = DataItemThresholds.Get(context);

            if (dataItemThresholds == null)
            {
                return;
            }

            ObsDef obsDefEntity = ObsDef.GetEntityByObdGuid(dataItemThresholds.ObdGuid, PM);

            if (obsDefEntity.IsNullEntity)
            {
                return;
            }

            var query = new EntityQuery(typeof(ObsReq));

            query.AddClause(ObsReqDataRow.OBR_IDEntityColumn, EntityQueryOp.EQ, obrId);
            var obsReqEntity = PM.GetEntity <ObsReq>(query);

            if (obsReqEntity.IsNullEntity)
            {
                return;
            }

            query = new EntityQuery(typeof(Observe));
            query.AddClause(ObserveDataRow.OBD_IDEntityColumn, EntityQueryOp.EQ, obsDefEntity.OBD_ID);
            query.AddClause(ObserveDataRow.Pat_ID1EntityColumn, EntityQueryOp.EQ, obsReqEntity.Pat_ID1);
            query.AddClause(ObserveDataRow.OBR_SET_IDEntityColumn, EntityQueryOp.EQ, obsReqEntity.OBR_Set_ID);
            var observeEntity = PM.GetEntity <Observe>(query);

            if (observeEntity.IsNullEntity)
            {
                return;
            }

            var success = CommonCharting.CheckDataItemThresholds(observeEntity, dataItemThresholds);

            Success.Set(context, success);
        }
        private string GetDisplayString()
        {
            if (Element.Value.ObdGuid == Guid.Empty)
            {
                return(String.Empty);
            }

            try
            {
                var obd = ObsDef.GetEntityByObdGuid(Element.Value.ObdGuid);
                if (obd.IsNullEntity)
                {
                    return(String.Empty);
                }

                string str = String.Empty;

                var value = Element.Value;

                if (obd.Type == (short)MedDefs.ObdType.ItemTable)
                {
                    if (value.TableItems != null)
                    {
                        var sb = new StringBuilder();
                        foreach (var item in value.TableItems)
                        {
                            var obdItem = ObsDef.GetEntityByObdGuid(item);
                            sb.AppendFormat("{0}; ", obdItem.LabelDescriptionInactiveIndicator.Trim());
                        }

                        str = sb.ToString().Trim().TrimEnd(';');
                    }
                }
                else
                {
                    switch (obd.ObsDefDataFormat)
                    {
                    case ObsDefDataFormat.Numeric:
                        str = FormatNumericThresholds(value);
                        break;

                    case ObsDefDataFormat.Date:
                        if (value.DateRange.Type == InputDateRangeControlType.SpecificDates)
                        {
                            bool startDateValid = value.StartDate.HasValue && value.StartDate.Value > DateTime.MinValue;
                            bool endDateValid   = value.EndDate.HasValue && value.EndDate.Value < DateTime.MaxValue;
                            if (startDateValid && endDateValid)
                            {
                                str = String.Format("{0} - {1}",
                                                    value.StartDate.Value.ToShortDateString(),
                                                    value.EndDate.Value.ToShortDateString());
                            }
                            else if (startDateValid)
                            {
                                str = String.Format(">= {0}", value.StartDate.Value.ToShortDateString());
                            }
                            else if (endDateValid)
                            {
                                str = String.Format("<= {0}", value.EndDate.Value.ToShortDateString());
                            }
                        }
                        else
                        {
                            str = Element.Value.DateRange.ToReadableString();
                        }
                        break;

                    case ObsDefDataFormat.String:
                    case ObsDefDataFormat.Memo:
                        if (DataItemThresholdsSelector.UseStringNumericLimits(Element.Value.StringAlgorithm))
                        {
                            str = FormatNumericThresholds(value);
                        }
                        else
                        {
                            str = String.Format("{0} \"{1}\"",
                                                DataItemThresholdsSelector.StringAlgorithmIdToString(Element.Value.StringAlgorithm),
                                                Element.Value.StringInput);
                        }
                        break;
                    }
                }

                if (String.IsNullOrEmpty(str))
                {
                    return(obd.LabelInactiveIndicator.Trim());
                }

                return(String.Format("{0} ({1})", obd.LabelInactiveIndicator.Trim(), str));
            }
            catch (Exception)
            {
                return(String.Empty);
            }
        }
        /// <summary>
        /// Execute the activity and look up the flowsheet value.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        protected override void DoWork(CodeActivityContext context)
        {
            //Get Variables
            Guid obdGuid = ObdGuid.Get(context);
            int? patId1  = PatId1.Expression != null?PatId1.Get(context) : (int?)null;

            int?obrId = ObrId.Expression != null?ObrId.Get(context) : (int?)null;

            FlowsheetLookupMethod lookupMethod = LookupMethod.Expression != null
                                               ? LookupMethod.Get(context)
                                               : FlowsheetLookupMethod.Earliest;

            //Lookup entities
            ObsDef obsDefEntity = ObsDef.GetEntityByObdGuid(obdGuid, PM);

            ObsDataValueFormat.Set(context, obsDefEntity.ObsDefDataFormat);

            string queryString;

            switch (lookupMethod)
            {
            case FlowsheetLookupMethod.Earliest:
                queryString = String.Format(EARLIEST_QUERY, patId1.GetValueOrDefault(0),
                                            obsDefEntity.OBD_ID);
                break;

            case FlowsheetLookupMethod.Latest:
                queryString = String.Format(LATEST_QUERY, patId1.GetValueOrDefault(0),
                                            obsDefEntity.OBD_ID);
                break;


            case FlowsheetLookupMethod.ByObrId:
                queryString = String.Format(OBR_ID_QUERY, patId1.GetValueOrDefault(0),
                                            obsDefEntity.OBD_ID, obrId.GetValueOrDefault(0));
                break;

            default:
                throw new InvalidOperationException("Invalid Lookup Operation");
            }

            var pQuery = new PassthruRdbQuery(typeof(Observe), queryString);
            var result = PM.GetEntity <Observe>(pQuery, QueryStrategy.DataSourceOnly);

            //If we didn't find any observations
            if (result == result.NullEntity)
            {
                ObsResultFound.Set(context, false);
                return;
            }

            //Assign output information.
            ObsResultFound.Set(context, true);
            ObsDtTm.Set(context, result.ObsReqTip.Obs_DtTm);
            ObrIdValue.Set(context, result.OBR_SET_ID);

            if (result.ObsReqTip.Obs_DtTm != null)
            {
                // Recalculating for hours since don't want to mess with day calculation
                TimeSpan span = DateTime.Now - result.ObsReqTip.Obs_DtTm.Value;
                AgeInDays.Set(context, span.TotalDays);
                AgeInHours.Set(context, span.TotalHours);
            }

            //Always populate ObsString.  Lab interface may populate this even if the ObsDef type is something
            //different.
            ObsStringValue.Set(context, result.Obs_String);
            if (result.ObsDefEntityOnObsChoice != null && !result.ObsDefEntityOnObsChoice.IsNullEntity)
            {
                ObsChoiceValue.Set(context, result.ObsDefEntityOnObsChoice.OBD_GUID);
            }
            else
            {
                ObsChoiceValue.Set(context, null);
            }

            //Set the appropriate output value.
            switch (result.ObsDefEntity.ObsDefDataFormat)
            {
            case ObsDefDataFormat.CheckBox:
                ObsCheckboxValue.Set(context, (result.Obs_Float == 0) ? false : true);
                break;

            case ObsDefDataFormat.Date:
                ObsDateTimeValue.Set(context, ClarionConversions.DateToDateTime(result.Obs_Float));
                break;

            case ObsDefDataFormat.Time:
                ObsDateTimeValue.Set(context, ClarionConversions.TimeToDateTime(result.Obs_Float));
                break;

            case ObsDefDataFormat.Numeric:
                ObsNumericValue.Set(context, result.Obs_Float);
                break;

            case ObsDefDataFormat.Choice:
            case ObsDefDataFormat.String:
            case ObsDefDataFormat.Memo:
                //Do nothing.  Already string and choice already set set above the switch statement
                break;

            default:
                throw new InvalidOperationException(
                          String.Format(Strings.Error_InvalidObsDefDataFormat,
                                        result.ObsDefEntity.ObsDefDataFormat));
            }
        }
        private void DataItemThresholdsSelector_Load(object sender, EventArgs e)
        {
            try
            {
                HideChildControls();
                Height = 180;

                if (Value == null)
                {
                    return;
                }

                ObsDef obd = ObsDef.GetEntityByObdGuid(Value.ObdGuid);
                PopulateChildControls(obd);

                if (obd.Type == (short)MedDefs.ObdType.ItemTable)
                {
                    if (Value.TableItems != null)
                    {
                        foreach (CheckedListBoxItem item in comboTableItems.Properties.Items)
                        {
                            var obdGuid = (Guid)item.Value;
                            if (Value.TableItems.Contains(obdGuid))
                            {
                                item.CheckState = CheckState.Checked;
                            }
                        }
                    }
                    comboTableItems.RefreshEditValue();
                }
                else if (obd.Type == (short)MedDefs.ObdType.ItemData)
                {
                    switch (obd.ObsDefDataFormat)
                    {
                    case ObsDefDataFormat.Numeric:
                        textLowerLimit.EditValue = Value.LowerLimit;
                        textUpperLimit.EditValue = Value.UpperLimit;
                        break;

                    case ObsDefDataFormat.Date:
                        inputDateRange.DateRange = new InputDateRangeValue(Value.DateRange.Type,
                                                                           Value.StartDate, Value.EndDate,
                                                                           Value.DateRange.SpinControlValue);
                        break;

                    case ObsDefDataFormat.String:
                    case ObsDefDataFormat.Memo:
                        int idx = 0;
                        for (int i = 0; i < _stringAlgoriths.Length; i++)
                        {
                            if (_stringAlgoriths[i] == Value.StringAlgorithm)
                            {
                                idx = i;
                                break;
                            }
                        }
                        comboStringAlgorithm.SelectedIndex = idx;
                        if (UseStringNumericLimits(Value.StringAlgorithm))
                        {
                            textLowerLimit.EditValue = Value.LowerLimit;
                            textUpperLimit.EditValue = Value.UpperLimit;
                        }
                        else
                        {
                            textStringInput.Text = Value.StringInput;
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("DataItemThresholdsSelector: " + ex);
            }
        }