public static void Main()
var message = new NHapi.Model.V23.Message.SRM_S04();
message.MSH.SendingApplication.NamespaceID.Value = "MedChat";
message.MSH.SendingFacility.NamespaceID.Value = "";
message.MSH.ReceivingApplication.NamespaceID.Value = "Epic";
message.MSH.ReceivingFacility.NamespaceID.Value = "department-123";
message.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDate(DateTime.Now);
message.MSH.MessageControlID.Value = Guid.NewGuid().ToString();
message.MSH.ProcessingID.ProcessingID.Value = "T";
message.ARQ.PlacerAppointmentID.EntityIdentifier.Value = "appointment-123";
message.ARQ.FillerAppointmentID.EntityIdentifier.Value = "appointment-123";
message.ARQ.RequestEventReason.Text.Value = "It's a miracle!";
message.ARQ.AppointmentDuration.Value = 15.ToString();
message.ARQ.AppointmentDurationUnits.Identifier.Value = "MIN";
var startDateTime = message.ARQ.GetRequestedStartDateTimeRange(0);
startDateTime.RangeStartDateTime.TimeOfAnEvent.SetLongDate(DateTime.Parse("2024-10-31T13:30:00"));
var patient = message.GetPATIENT(0);
var patientIdField = patient.PID.GetPatientIDInternalID(0);
patientIdField.ID.Value = "patient-123";
var patientNameField = patient.PID.GetPatientName(0);
patientNameField.FamilyName.Value = "Muir";
patientNameField.GivenName.Value = "Erik";
patient.PID.DateOfBirth.TimeOfAnEvent.SetShortDate(DateTime.Parse("1979-09-29T13:30:00"));
patient.PID.Sex.Value = "M";
var patientAddressField = patient.PID.GetPatientAddress(0);
patientAddressField.StreetAddress.Value = "310 Elm Street";
patientAddressField.OtherDesignation.Value = "Suite 420";
patientAddressField.City.Value = "Springfield";
patientAddressField.StateOrProvince.Value = "MO";
patientAddressField.ZipOrPostalCode.Value = "63000";
var patientPhoneField = patient.PID.GetPhoneNumberHome(0);
patientPhoneField.Get9999999X99999CAnyText.Value = "6367444532";
var resources = message.GetRESOURCES(0);
resources.RGS.SetIDRGS.Value = 0.ToString();
resources.RGS.ResourceGroupID.Identifier.Value = "department-123";
resources.RGS.ResourceGroupID.Text.Value = "My Department";
var service = resources.GetSERVICE(0);
service.AIS.SetIDAIS.Value = 0.ToString();
service.AIS.UniversalServiceIdentifier.Identifier.Value = "servicetype-123";
service.AIS.UniversalServiceIdentifier.Text.Value = "My Appointment Type";
var provider = resources.GetPERSONNEL_RESOURCE(0);
provider.AIP.SetIDAIP.Value = 0.ToString();
provider.AIP.PersonnelResourceID.IDNumber.Value = "provider-123";
provider.AIP.PersonnelResourceID.FamilyName.Value = "Smith";
provider.AIP.PersonnelResourceID.GivenName.Value = "John";
provider.AIP.StartDateTime.TimeOfAnEvent.SetLongDate(DateTime.Parse("2024-10-31T13:30:00"));
provider.AIP.StartDateTimeOffset.Value = (-5).ToString();
provider.AIP.StartDateTimeOffsetUnits.Identifier.Value = "MIN";
provider.AIP.Duration.Value = 15.ToString();
provider.AIP.DurationUnits.Identifier.Value = "MIN";
var parser = new NHapi.Base.Parser.PipeParser();
var payload = parser.Encode(message);
Console.WriteLine(payload);
Console.WriteLine($"Has trailing carriage return: {payload.EndsWith('\r')}");
foreach (var line in payload.Split('\r'))