Exemple #1
0
        private void MainViewModel_OnRequireInterpretation(object sender, InterfaceResultsModel e)
        {
            if (e is null)
            {
                return;
            }
            if (e.Measurements is null)
            {
                return;
            }

            var testCodeIndex = 0;
            var resultIndex   = 1;
            var unitIndex     = 2;

            foreach (var item in e.Measurements)
            {
                logger.Info($"Running interpretation for {item.TestCode} with result: {item.MeasurementValue} {item.Unit}");
                var resultArray = ((string)_script.GetInterpretation(item)).Split('|');
                var testCode    = resultArray[testCodeIndex];
                var result      = resultArray[resultIndex];
                var unit        = resultArray[unitIndex];

                logger.Info($"Interpretation: Test Code: {testCode} Result: {result} {unit}");

                var tempInterpretations = new InterfaceResultsModel()
                {
                    SampleId     = e.SampleId,
                    Measurements = new List <MeasurementValues>()
                    {
                        new MeasurementValues()
                        {
                            TestCode = testCode, MeasurementValue = result, Unit = unit
                        }
                    },
                };

                tempInterpretations.InstrumentId.InstrumentCode = Settings.AnalyserName;

                var tempInterpretationResults = new List <InterfaceResultsModel>()
                {
                    tempInterpretations
                };
                ResultsReadyForExport?.Invoke(this, tempInterpretationResults);
            }
        }
Exemple #2
0
        private void LISParser_OnReceivedRecord(object Sender, ReceiveRecordEventArgs e)
        {
            switch (e.RecordType)
            {
            case LisRecordType.Header:
                //var header = (HeaderRecord)e.ReceivedRecord;

                break;

            case LisRecordType.Patient:
                var patient = (PatientRecord)e.ReceivedRecord;

                break;

            case LisRecordType.Order:
                var order = (OrderRecord)e.ReceivedRecord;

                //check whether there is a temp results data
                if (tempResults != null)
                {
                    interfaceResults.Add(tempResults);
                }

                tempResults = new InterfaceResultsModel()
                {
                    SampleId     = order.SpecimenID,
                    Measurements = new List <MeasurementValues>()
                };

                break;

            case LisRecordType.Result:
                var result = (ResultRecord)e.ReceivedRecord;

                string testCode = "";

                testCode = string.Concat(result.UniversalTestID.TestID,
                                         result.UniversalTestID.TestName,
                                         result.UniversalTestID.TestType,
                                         result.UniversalTestID.ManufacturerCode)
                           .ToString()
                           .Replace("^", "")
                           .Trim();

                tempResults.Measurements.Add(new MeasurementValues()
                {
                    TestCode         = testCode,
                    MeasurementValue = result.Data,
                    Unit             = result.Units,
                });

                //Analyser name
                tempResults.InstrumentId.InstrumentCode = Settings.AnalyserName;
                //completed date and time
                if (result.TestCompletedDateTime.HasValue)
                {
                    tempResults.CompletedDateTime = result.TestCompletedDateTime
                                                    .Value.ToString("yyyyMMddHHmmssfff");
                }

                OnRequireInterpretation?.Invoke(this, tempResults);

                break;

            case LisRecordType.Comment:
                break;

            case LisRecordType.Query:
                var query = (QueryRecord)e.ReceivedRecord;
                break;

            case LisRecordType.Terminator:
                //add any temp results
                if (tempResults != null)
                {
                    interfaceResults.Add(tempResults);
                }
                //export the results
                Debug.WriteLine(JsonConvert.SerializeObject(interfaceResults, Formatting.Indented));

                ResultsReadyForExport?.Invoke(this, interfaceResults);
                interfaceResults.Clear();
                //set temp results data to null
                tempResults = null;
                break;

            case LisRecordType.Scientific:
                break;

            case LisRecordType.Information:
                break;

            default:
                break;
            }
        }