Exemplo n.º 1
0
        public Stream InterpretORU(Stream ORUMessageStream)
        {
            try
            {
                string ORUMessageString = StreamToString(ORUMessageStream);

                // get list of lab results
                List <LookupData> dataList = ParseORU(ORUMessageString);
                foreach (var data in dataList)
                {
                    h.WriteToLog("Parsed Lab: " + data.LabName + " Result: " + data.ResultName);
                }
                // interpret the list
                ReturnDataList returnDataList = InterpretData(dataList);
                h.WriteToLog("Past Interpret Data");
                // send the data back
                foreach (var data in returnDataList.DataList)
                {
                    h.WriteToLog("ReturnDataList Order Name:" + data.CommonOrderName + " Result: " + data.CommonResultName + " Positive:" + data.IsPositive.ToString());
                }
                string json = JsonConvert.SerializeObject(returnDataList, Newtonsoft.Json.Formatting.Indented);
                h.WriteToLog("past Json Convert");
                return(StringToStream(json));
            }
            catch (Exception e)
            {
                h.WriteToLog("InterpretORU error - " + e.Message);
                return(StringToStream("InterpretORU error - " + e.Message));
            }
        }
Exemplo n.º 2
0
        private ReturnDataList InterpretData(List <LookupData> dataList)
        {
            ReturnDataList returnList = new ReturnDataList();

            foreach (var data in dataList)
            {
                ReturnData returnData = new ReturnData();
                returnData.OrderID    = data.OrderID;
                returnData.OrderName  = data.LabName;
                returnData.ResultName = data.ResultName;
                // call the database table
                using (var db = new InterpretationDBContext())
                {
                    var query = from l in db.LabLookups
                                where l.FacilityName == data.FacilityName &&
                                l.LabCode == data.LabCode &&
                                l.ResultCode == data.ResultCode &&
                                l.ResultValue == data.ResultValue
                                select l;
                    if (query.Count() == 1)
                    {
                        if (query.First().CanSkip == null || query.First().CanSkip == true)
                        {
                            continue;
                        }
                        if (query.First().IsPositive != null)
                        {
                            returnData.IsPositive = query.First().IsPositive.Value;
                        }
                        else // null result, neither positive or negative
                        {
                            SendToPhysicianConsole(data);
                        }
                        returnData.CommonOrderName  = query.First().CommonLabName;
                        returnData.CommonResultName = query.First().CommonResultName;
                        returnList.DataList.Add(returnData);
                    }
                    else // either 0 or many rows found
                    {
                        SendToPhysicianConsole(data);
                    }
                }
            }
            return(returnList);
        }