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); } }
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; } }