Анализ сообщения HL7 OUL_R22 с использованием NHAPIC#

Место общения программистов C#
Ответить
Anonymous
 Анализ сообщения HL7 OUL_R22 с использованием NHAPI

Сообщение Anonymous »

Я пишу приложение на C#, которое должно иметь возможность отправлять и получать сообщения HL7 на лабораторное оборудование для ветеринарного бизнеса и обратно.
Поскольку я новичок в протоколе HL7, я Я искал и нашел веб-страницу https://www.saravanansubramanian.com/, где показано, как создавать, отправлять, анализировать и т. д. сообщения HL7, и я следил за учебниками для .NET и NHAPI, однако, глядя В руководстве по интерфейсу связи оборудования я увидел сообщение с именем OUL_R22 «Незапрошенное сообщение о наблюдении, ориентированном на образец», которое, как я полагаю, используется для отправки лабораторному оборудованию запроса на обработку образца (тестов), который был помещен в оборудование.
Насколько я понимаю, лабораторное оборудование отправит результаты испытаний в одном и том же сообщении.
Кстати, оборудование а Fujifilm NX600
На веб-странице показано только, как создать некоторые типы сообщений, значит, мне нужно следовать той же философии кодирования для других типов сообщений?
using NHapi.Model;
using NHapi.Model.V25.Message;
using System.Globalization;

namespace NHapiCreateMessage
{
internal class MessageBuilder
{
private ADT_A01 _adtMessage;

/* se puede pasar en un domitio o transferencia de datos como parámetro
* cuando se está integrando con los datos de la aplicación.*/
public ADT_A01 Build()
{
var currentDateTimeString = GetCurrentTimeStamp();
_adtMessage = new ADT_A01();

CreateMshSegment(currentDateTimeString);
CreateEvnSegment(currentDateTimeString);
CreatePidSegment();
CreatePv1Segment();
return _adtMessage;
}

private void CreateMshSegment(string currentDateTimeString)
{
var mshSegment = _adtMessage.MSH;
mshSegment.FieldSeparator.Value = "|";
mshSegment.EncodingCharacters.Value = "^~\\&";
mshSegment.SendingApplication.NamespaceID.Value = "System";
mshSegment.SendingFacility.NamespaceID.Value = "Facility";
mshSegment.ReceivingApplication.NamespaceID.Value = "Remote System";
mshSegment.ReceivingFacility.NamespaceID.Value = "Remote Facility";
mshSegment.DateTimeOfMessage.Time.Value = currentDateTimeString;
//mshSegment.DateTimeOfMessage.TimeOfAnEvent.Value = currentDateTimeString;
mshSegment.MessageControlID.Value = GetSequenceNumber();
mshSegment.MessageType.MessageCode.Value = "ADT";
//mshSegment.MessageType.MessageType.Value = "ADT";
mshSegment.MessageType.TriggerEvent.Value = "A01";
mshSegment.VersionID.VersionID.Value = "2.5";
mshSegment.ProcessingID.ProcessingID.Value = "P";
}

private void CreateEvnSegment(string currentDateTimeString)
{
var evn = _adtMessage.EVN;
evn.EventTypeCode.Value = "A01";
evn.RecordedDateTime.Time.Value = currentDateTimeString;
}

private void CreatePidSegment()
{
var pid = _adtMessage.PID;
var patientName = pid.GetPatientName(0);
patientName.FamilyName.Surname.Value= "Lopez";
patientName.GivenName.Value = "Jaime";
pid.SetIDPID.Value = "378785433211";
var patientAddress = pid.GetPatientAddress(0);
patientAddress.StreetAddress.StreetName.Value = "Alguna Calle";
patientAddress.StreetAddress.DwellingNumber.Value = "123";
patientAddress.City.Value = "Alguna Ciudad";
patientAddress.StateOrProvince.Value = "GT";
patientAddress.Country.Value = "MX";
}

private void CreatePv1Segment()
{
var pv1 = _adtMessage.PV1;
pv1.PatientClass.Value = "O"; //represent an Out Patient
var assignedPatientLocation = pv1.AssignedPatientLocation;
assignedPatientLocation.Facility.NamespaceID.Value = "Some Treatment Facility";
assignedPatientLocation.PointOfCare.Value = "Some Point of Care";
pv1.AdmissionType.Value = "ALERT";
var refferingDoctor = pv1.GetReferringDoctor(0);
refferingDoctor.IDNumber.Value = "456789";
refferingDoctor.FamilyName.Surname.Value = "Perez";
refferingDoctor.GivenName.Value = "Jose";
refferingDoctor.IdentifierTypeCode.Value = "456789";
pv1.AdmitDateTime.Time.Value = GetCurrentTimeStamp();
}

private static string GetCurrentTimeStamp()
{
return DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture);
}

private static string GetSequenceNumber()
{
const string facilityNumberPrefix = "1234"; //El número de la unidad
return facilityNumberPrefix + GetCurrentTimeStamp();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... sing-nhapi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»