private void HandleAppointmentScheduling(MessageEventArgs messageEvent)
        {
            try
            {
                ProcessPatientAppointmentMessage appointmentMessage = new ProcessPatientAppointmentMessage();
                var    appointmentScheduling       = appointmentMessage.Get(messageEvent.EntityId);
                var    appointmentSchedulingEntity = _jsonEntityMapper.AppointmentScheduling(appointmentScheduling, messageEvent);
                string appointmentSchedulingJson   = new JavaScriptSerializer().Serialize(appointmentSchedulingEntity);

                //save
                var apiOutbox = new ApiOutbox()
                {
                    DateSent = DateTime.Now,
                    Message  = appointmentSchedulingJson
                };
                _apiOutboxManager.AddApiOutbox(apiOutbox);

                //send
                SendData(appointmentSchedulingJson, "").ConfigureAwait(false);
            }
            catch (Exception e)
            {
                string message = new JavaScriptSerializer().Serialize(messageEvent);
                //error
                var apiOutbox = new ApiOutbox()
                {
                    DateSent   = DateTime.Now,
                    Message    = message,
                    LogMessage = e.Message + "\n" + e.StackTrace
                };
                _apiOutboxManager.AddApiOutbox(apiOutbox);
            }
        }
        private void HandleAppointments(ApiInbox incomingMessage)
        {
            //save to inbox
            int Id = _apiInboxmanager.AddApiInbox(incomingMessage);

            incomingMessage.Id = Id;

            try
            {
                PatientAppointmentEntity appointmentEntity = new JavaScriptSerializer().Deserialize <PatientAppointmentEntity>(incomingMessage.Message);

                Mapper.Initialize(cfg =>
                {
                    cfg.CreateMap <PatientAppointSchedulingDTO, PatientAppointmentEntity>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.MESSAGEHEADER, MappingEntities.MESSAGEHEADER>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.APPOINTMENTPATIENTIDENTIFICATION, MappingEntities.APPOINTMENTPATIENTIDENTIFICATION>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.EXTERNALPATIENTID, MappingEntities.EXTERNALPATIENTID>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.INTERNALPATIENTID, MappingEntities.INTERNALPATIENTID>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.PATIENTNAME, MappingEntities.PATIENTNAME>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.APPOINTMENT_INFORMATION, MappingEntities.APPOINTMENT_INFORMATION>().ReverseMap();
                    cfg.CreateMap <DTO.CommonEntities.PLACER_APPOINTMENT_NUMBER, MappingEntities.PLACER_APPOINTMENT_NUMBER>().ReverseMap();
                });
                var appointment       = Mapper.Map <PatientAppointSchedulingDTO>(appointmentEntity);
                var processAppoinment = new ProcessPatientAppointmentMessage();

                foreach (var itemAppointment in appointment.APPOINTMENT_INFORMATION)
                {
                    if (itemAppointment.ACTION_CODE == "A")
                    {
                        processAppoinment.Save(appointment);
                    }
                    else if (itemAppointment.ACTION_CODE == "U" || itemAppointment.ACTION_CODE == "D")
                    {
                        processAppoinment.Update(appointment);
                    }
                }

                //update message that it has been processed
                incomingMessage.DateProcessed = DateTime.Now;
                incomingMessage.Processed     = true;
                incomingMessage.IsSuccess     = true;
                _apiInboxmanager.EditApiInbox(incomingMessage);
            }
            catch (Exception e)
            {
                incomingMessage.LogMessage = e.Message;
                incomingMessage.Processed  = true;
                incomingMessage.IsSuccess  = false;
                _apiInboxmanager.EditApiInbox(incomingMessage);
            }
        }