Exemple #1
0
        public void ORUResult(RIS_OrderResult pAck)
        {
            if (pAck != null)
            {
                bool ret = false;
                PatientOrder order = null;
                StatusManagerParams parms = null;
                PatientRadiologyOrder radiologyOrder = null;

                try
                {
                    if (pAck.ResultStatus == "F" && pAck.ReportStatus == "GDT")
                    {
                        order = new PatientOrder();

                        ret = order.verifiedReportedOrder(pAck.OrderId, "", parms);
                    }

                    radiologyOrder = new PatientRadiologyOrder();

                    radiologyOrder.Id = pAck.OrderId;
                    radiologyOrder.ReportPath = pAck.ReportPath;
                    radiologyOrder.ResultStatus = pAck.ResultStatus;
                    radiologyOrder.RISLink = pAck.ImageUrl;

                    if (!radiologyOrder.updateResult(radiologyOrder).Result)
                    {
                        throw new ValidationException("Unable to update patient result");
                    }

                    ret = true;
                }
                catch (Exception ex)
                {
                    ret = false;

                    Log.createLog(pAck.MessageControlId, mzk_messagetype.ORU01, pAck.OrderId, mzk_messagedirection.Inbound, mzk_acknowledgecode.AE, ex.Message);

                    throw ex;
                }

                if (ret)
                {

                    if (!Log.createLog(pAck.MessageControlId, mzk_messagetype.ORU01, pAck.OrderId, mzk_messagedirection.Inbound, mzk_acknowledgecode.AA))
                    {
                        throw new ValidationException("Unable to create ORU message log");
                    }

                }
            }
        }
        public async Task <HttpResponseMessage> AddRadiologyOrder(PatientRadiologyOrder inputmodel)
        {
            string data = string.Empty;

            try
            {
                ApiResponseModel <string> model = new ApiResponseModel <string>()
                {
                };
                var client = ServiceFactory.GetService(typeof(PatientRadiologyOrder));
                data = await client.addPatientOrder(inputmodel);

                model.data.records = data;

                return(Response.Success <string>(model));
            }
            catch (Exception ex)
            {
                return(Response.Exception(ex));
            }
        }
        public async Task <HttpResponseMessage> updatePatientRadiologyOrder(PatientRadiologyOrder patientRadiologyOrder)
        {
            //string data = string.Empty;
            bool data = false;

            try
            {
                ApiResponseModel <bool> model = new ApiResponseModel <bool>()
                {
                };

                var client = ServiceFactory.GetService(typeof(PatientRadiologyOrder));
                data = await client.updatePatientOrder(patientRadiologyOrder);

                model.data.records = data;

                return(Response.Success <bool>(model));
            }
            catch (Exception ex)
            {
                return(Response.Exception(ex));
            }
        }
        public async Task <HL7_ORM_O01> GetRIS_ORM_O01_Message(string patientId, string orderId, string appointmentRecId, string caseId, string OrderStatus)
        {
            PatientRadiologyOrder pOrd        = new PatientRadiologyOrder();
            HL7_ORM_O01           ORM_O01_Msg = new HL7_ORM_O01();
            var resultorder = await pOrd.getPatientOrder(string.Empty, string.Empty, string.Empty, string.Empty, DateTime.MinValue, DateTime.MinValue, false, orderId, null, true);

            foreach (PatientRadiologyOrder pOrder in resultorder)
            {
                ORM_O01_Msg.MSH = new HL7_MSH();

                ORM_O01_Msg.EventType = new HL7_EventType();
                ORM_O01_Msg.EventType.DateTimeOccurred    = DateTime.Now.ToString("yyyyMMddHHmm");
                ORM_O01_Msg.EventType.RecordedDateTime    = DateTime.Now.ToString("yyyyMMddHHmm");
                ORM_O01_Msg.EventType.DateTimePlanneEvent = DateTime.Now.ToString("yyyyMMddHHmm");


                ORM_O01_Msg.ORC = new HL7_ORC();
                switch (pOrder.OrderStatus)
                {
                case "1":
                    ORM_O01_Msg.ORC.OrderStatus      = "SC";
                    ORM_O01_Msg.ORC.OrderControlCode = "NW";
                    break;

                case "2":
                    ORM_O01_Msg.ORC.OrderStatus      = "CA";
                    ORM_O01_Msg.ORC.OrderControlCode = "CA";
                    break;

                case "3":
                    ORM_O01_Msg.ORC.OrderStatus      = "SC";
                    ORM_O01_Msg.ORC.OrderControlCode = "NW";
                    break;

                case "11":
                    ORM_O01_Msg.ORC.OrderStatus      = "SC";
                    ORM_O01_Msg.ORC.OrderControlCode = "NW";
                    break;

                case "12":
                    ORM_O01_Msg.ORC.OrderStatus      = "CM";
                    ORM_O01_Msg.ORC.OrderControlCode = "NW";
                    break;

                default:
                    break;
                }
                ORM_O01_Msg.ORC.StartDateTime                 = pOrder.ScheduleStartDateTime.ToString("yyyyMMddHHmm");
                ORM_O01_Msg.ORC.EndDateTime                   = pOrder.ScheduleEndDateTime.ToString("yyyyMMddHHmm");
                ORM_O01_Msg.ORC.PlacerOrderNumber             = new HL7_OrderNumber();
                ORM_O01_Msg.ORC.PlacerOrderNumber.ID          = pOrder.OrderNumber;
                ORM_O01_Msg.ORC.PlacerOrderNumber.NamespaceID = "NA";
                ORM_O01_Msg.ORC.FillerOrderNumber             = new HL7_OrderNumber();
                ORM_O01_Msg.ORC.FillerOrderNumber.ID          = pOrder.OrderNumber;
                ORM_O01_Msg.ORC.FillerOrderNumber.NamespaceID = "NA";
                ORM_O01_Msg.ORC.OrderingProvider              = new HL7_Provider();

                if (pOrder.orderingProvider != null)
                {
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.lastName))
                    {
                        pOrder.orderingProvider.lastName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.firstName))
                    {
                        pOrder.orderingProvider.firstName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.middleName))
                    {
                        pOrder.orderingProvider.middleName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.code))
                    {
                        pOrder.orderingProvider.code = "NA";
                    }

                    ORM_O01_Msg.ORC.OrderingProvider.FamilyName = pOrder.orderingProvider.lastName;
                    ORM_O01_Msg.ORC.OrderingProvider.GivenName  = pOrder.orderingProvider.firstName;
                    ORM_O01_Msg.ORC.OrderingProvider.Initial    = pOrder.orderingProvider.middleName;
                    ORM_O01_Msg.ORC.OrderingProvider.ID         = pOrder.orderingProvider.code;
                }
                else
                {
                    ORM_O01_Msg.ORC.OrderingProvider.FamilyName = "NA";
                    ORM_O01_Msg.ORC.OrderingProvider.GivenName  = "NA";
                    ORM_O01_Msg.ORC.OrderingProvider.Initial    = "NA";
                    ORM_O01_Msg.ORC.OrderingProvider.ID         = "NA";
                }


                ORM_O01_Msg.ORC.EnteredBy            = new HL7_Provider();
                ORM_O01_Msg.ORC.EnteredBy.FamilyName = "NA";
                ORM_O01_Msg.ORC.EnteredBy.GivenName  = "NA";
                ORM_O01_Msg.ORC.EnteredBy.ID         = "NA";
                ORM_O01_Msg.ORC.EnteredBy.Initial    = "NA";


                ORM_O01_Msg.ORC.OrderingFacility = new HL7_OrderingFacility();
                ORM_O01_Msg.ORC.OrderingFacility.AssigningAuthority = "NA";
                ORM_O01_Msg.ORC.OrderingFacility.ID = "NA";

                ORM_O01_Msg.OBR = new HL7_OBR();
                ORM_O01_Msg.OBR.FillerOrderNumber          = new HL7_OrderNumber();
                ORM_O01_Msg.OBR.PlacerOrderNumber          = new HL7_OrderNumber();
                ORM_O01_Msg.OBR.UniversalServiceIdentifier = new HL7_UniversalServiceIdentifier();

                if (string.IsNullOrEmpty(pOrder.ProductFamilyCode))
                {
                    pOrder.ProductFamilyCode = "NA";
                }

                ORM_O01_Msg.OBR.DiagnosticServSectId = pOrder.ProductFamilyCode;

                ORM_O01_Msg.OBR.ID = "NA";
                if (string.IsNullOrEmpty(pOrder.ClinicalNotes))
                {
                    pOrder.ClinicalNotes = "NA";
                }
                if (string.IsNullOrEmpty(pOrder.OrderNumber))
                {
                    pOrder.OrderNumber = "NA";
                }
                ORM_O01_Msg.OBR.Accessionnumber = pOrder.Id;
                ORM_O01_Msg.OBR.PlacerField1    = pOrder.Id;
                //  ORM_O01_Msg.OBR.PlacerField1 =  pOrder.OrderNumber;
                ORM_O01_Msg.OBR.PlacerField2                  = pOrder.Id;
                ORM_O01_Msg.OBR.FillderField1                 = pOrder.OrderNumber;
                ORM_O01_Msg.OBR.FillerOrderNumber.ID          = pOrder.OrderNumber;
                ORM_O01_Msg.OBR.FillerOrderNumber.NamespaceID = "NA";
                ORM_O01_Msg.OBR.ResultStatusCode              = "NA";
                ORM_O01_Msg.OBR.StartDateTime                 = pOrder.ScheduleStartDateTime.ToString("yyyyMMddHHmm");
                ORM_O01_Msg.OBR.EndDateTime = pOrder.ScheduleEndDateTime.ToString("yyyyMMddHHmm");
                if (string.IsNullOrEmpty(pOrder.TestId))
                {
                    pOrder.TestId = "NA";
                }
                if (string.IsNullOrEmpty(pOrder.TestName))
                {
                    pOrder.TestName = "NA";
                }


                ORM_O01_Msg.OBR.UniversalServiceIdentifier.ID   = pOrder.TestId;
                ORM_O01_Msg.OBR.UniversalServiceIdentifier.Text = pOrder.TestName;
                ORM_O01_Msg.OBR.UniversalServiceIdentifier.Nameofcodingsystem = "NA";

                ORM_O01_Msg.OBR.ReasonforStudy = "NA";
                if (string.IsNullOrEmpty(pOrder.ClinicalNotes))
                {
                    pOrder.ClinicalNotes = "NA";
                }
                ORM_O01_Msg.OBR.RelevantClinicalInf = Helper.encodeEscapeChar(pOrder.ClinicalNotes);

                ORM_O01_Msg.OBR.ScheduledDateTime = pOrder.ScheduleStartDateTime.ToString("yyyyMMddHHmm");//we update start date
                ORM_O01_Msg.OBR.UniversalServiceIdentifier.AlternateIdentifier = "NA";
                ORM_O01_Msg.OBR.UniversalServiceIdentifier.AlternateText       = "NA";
                if (string.IsNullOrEmpty(pOrder.OrderNumber))
                {
                    ORM_O01_Msg.OBR.PlacerOrderNumber.ID = "NA";
                }
                else
                {
                    ORM_O01_Msg.OBR.PlacerOrderNumber.ID = pOrder.OrderNumber;
                }

                ORM_O01_Msg.OBR.FillerOrderNumber.NamespaceID = "NA";
                ORM_O01_Msg.OBR.PlacerOrderNumber.NamespaceID = "NA";

                if (string.IsNullOrEmpty(pOrder.OrderNumber))
                {
                    ORM_O01_Msg.OBR.FillerOrderNumber.ID = "NA";
                }
                else
                {
                    ORM_O01_Msg.OBR.FillerOrderNumber.ID = pOrder.OrderNumber;
                }

                ORM_O01_Msg.ORC.PlacerOrderNumber.NamespaceID = "NA";
                ORM_O01_Msg.ORC.PlacerGroupNumber             = "NA";
                ORM_O01_Msg.ORC.FillerOrderNumber.NamespaceID = "NA";

                ORM_O01_Msg.ORC.EnteringOrganization    = new HL7_EnteringOrganization();
                ORM_O01_Msg.ORC.EnteringOrganization.ID = "NazirBupa";
                ORM_O01_Msg.ORC.EnteringOrganization.Nameofcodingsystem = "";
                ORM_O01_Msg.ORC.EnteringOrganization.Text = "NazirBupa";

                ORM_O01_Msg.OBR.OrderingProvider = new HL7_Provider();

                if (pOrder.orderingProvider != null)
                {
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.lastName))
                    {
                        pOrder.orderingProvider.lastName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.firstName))
                    {
                        pOrder.orderingProvider.firstName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.middleName))
                    {
                        pOrder.orderingProvider.middleName = "NA";
                    }
                    if (string.IsNullOrEmpty(pOrder.orderingProvider.code))
                    {
                        pOrder.orderingProvider.code = "NA";
                    }

                    ORM_O01_Msg.OBR.OrderingProvider.FamilyName = pOrder.orderingProvider.lastName;
                    ORM_O01_Msg.OBR.OrderingProvider.GivenName  = pOrder.orderingProvider.firstName;
                    ORM_O01_Msg.OBR.OrderingProvider.Initial    = pOrder.orderingProvider.middleName;
                    ORM_O01_Msg.OBR.OrderingProvider.ID         = pOrder.orderingProvider.code;
                }
                else
                {
                    ORM_O01_Msg.OBR.OrderingProvider.FamilyName = "NA";
                    ORM_O01_Msg.OBR.OrderingProvider.GivenName  = "NA";
                    ORM_O01_Msg.OBR.OrderingProvider.Initial    = "NA";
                    ORM_O01_Msg.OBR.OrderingProvider.ID         = "NA";
                }
                ORM_O01_Msg.ORC.TransactionDateTime = DateTime.Now.ToString("yyyyMMddHHmm");
                if (pOrder.UrgencyId == "1")
                {
                    ORM_O01_Msg.OBR.Priority = "R";
                }
                else if (pOrder.UrgencyId == "2")
                {
                    ORM_O01_Msg.OBR.Priority = "A";
                }
                else
                {
                    ORM_O01_Msg.OBR.Priority = "";
                }
                if (string.IsNullOrEmpty(pOrder.LocationCode))
                {
                    ORM_O01_Msg.OBR.OrderLocation = "";
                }
                else
                {
                    ORM_O01_Msg.OBR.OrderLocation = pOrder.LocationCode;
                }

                break;
            }

            ADT_A04_Message _obj_A04_Message = new ADT_A04_Message();
            var             adt = await _obj_A04_Message.GetADT_A04_Message(appointmentRecId, "", patientId);

            ORM_O01_Msg.PID = adt.PID;
            ORM_O01_Msg.PV1 = adt.PV1;
            if (ORM_O01_Msg.OBR.OrderingProvider != null)
            {
                adt.PV1.AttendingDoctor.IDNumber = ORM_O01_Msg.OBR.OrderingProvider.ID;
                if (string.IsNullOrEmpty(adt.PV1.AttendingDoctor.GivenName))
                {
                    adt.PV1.AttendingDoctor.IDNumber = "NA";
                }
                adt.PV1.AttendingDoctor.FamilyName = ORM_O01_Msg.OBR.OrderingProvider.FamilyName;
                if (string.IsNullOrEmpty(adt.PV1.AttendingDoctor.GivenName))
                {
                    adt.PV1.AttendingDoctor.FamilyName = "NA";
                }
                adt.PV1.AttendingDoctor.GivenName = ORM_O01_Msg.OBR.OrderingProvider.GivenName;
                if (string.IsNullOrEmpty(adt.PV1.AttendingDoctor.GivenName))
                {
                    adt.PV1.AttendingDoctor.GivenName = "NA";
                }
            }
            else
            {
                adt.PV1.AttendingDoctor.GivenName  = "NA";
                adt.PV1.AttendingDoctor.FamilyName = "NA";
                adt.PV1.AttendingDoctor.IDNumber   = "NA";
            }

            ORM_O01_Msg.NTE             = new HL7_NTE();
            ORM_O01_Msg.NTE.SetID       = "NA";
            ORM_O01_Msg.NTE.Comment     = "NA";
            ORM_O01_Msg.NTE.CommentType = "PC"; //CI,PC
            ORM_O01_Msg.NTE.Identifier  = "NA";


            return(ORM_O01_Msg);

            #region defualt values
            //HL7_ORM_O01 ORM_O01_Msg = new HL7_ORM_O01();
            //ORM_O01_Msg.MSH = new HL7_MSH();
            //ORM_O01_Msg.EventType = new HL7_EventType();
            //ORM_O01_Msg.ORC = new HL7_ORC();
            //ORM_O01_Msg.ORC.OrderControlCode = "NW";
            //ORM_O01_Msg.ORC.OrderStatus = "SC";
            //ORM_O01_Msg.ORC.StartDateTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
            //ORM_O01_Msg.ORC.EndDateTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
            //ORM_O01_Msg.ORC.TransactionDateTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
            //ORM_O01_Msg.ORC.PlacerOrderNumber = new HL7_OrderNumber();
            //ORM_O01_Msg.ORC.PlacerOrderNumber.NamespaceID = "EPIC";
            //ORM_O01_Msg.ORC.PlacerOrderNumber.ID = "987654";
            //ORM_O01_Msg.ORC.FillerOrderNumber = new HL7_OrderNumber();
            //ORM_O01_Msg.ORC.FillerOrderNumber.NamespaceID = "EPC";
            //ORM_O01_Msg.ORC.FillerOrderNumber.ID = "76543";
            //ORM_O01_Msg.ORC.OrderingProvider = new HL7_Provider();
            //ORM_O01_Msg.ORC.OrderingProvider.ID = "1173";
            //ORM_O01_Msg.ORC.OrderingProvider.FamilyName = "MATTHEWS";
            //ORM_O01_Msg.ORC.OrderingProvider.GivenName = "JAMES";
            //ORM_O01_Msg.ORC.OrderingProvider.Initial = "A";

            //ORM_O01_Msg.ORC.EnteredBy = new HL7_Provider();
            //ORM_O01_Msg.ORC.EnteredBy.FamilyName = "PATTERSON";
            //ORM_O01_Msg.ORC.EnteredBy.GivenName = "JAMES";
            //ORM_O01_Msg.ORC.OrderingProvider = new HL7_Provider();
            //ORM_O01_Msg.ORC.OrderingFacility = new HL7_OrderingFacility();

            //ORM_O01_Msg.OBR = new HL7_OBR();
            //ORM_O01_Msg.OBR.FillerOrderNumber = new HL7_OrderNumber();
            //ORM_O01_Msg.OBR.PlacerOrderNumber = new HL7_OrderNumber();
            //ORM_O01_Msg.OBR.UniversalServiceIdentifier = new HL7_UniversalServiceIdentifier();
            //ORM_O01_Msg.OBR.OrderingProvider = new HL7_Provider();
            //ORM_O01_Msg.OBR.ID = "1";
            //ORM_O01_Msg.OBR.PlacerField2 = "Placer";
            //ORM_O01_Msg.OBR.FillderField1 = "Placer+";
            //ORM_O01_Msg.OBR.ResultStatusCode = "R";
            //ORM_O01_Msg.OBR.StartDateTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
            //ORM_O01_Msg.OBR.EndDateTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
            //ORM_O01_Msg.OBR.UniversalServiceIdentifier.Text = "MRI Abdomen with Contrast";
            //ORM_O01_Msg.OBR.UniversalServiceIdentifier.AlternateIdentifier = "MI-MR-0002";
            //ORM_O01_Msg.OBR.PlacerOrderNumber.ID = "363463";
            //ORM_O01_Msg.OBR.PlacerOrderNumber.NamespaceID = "EPC";
            //ORM_O01_Msg.OBR.FillerOrderNumber.NamespaceID = "MI-MR-0001";
            //ORM_O01_Msg.OBR.FillerOrderNumber.ID = "1858";
            //ORM_O01_Msg.OBR.OrderingProvider.FamilyName = "MATTHEWS";
            //ORM_O01_Msg.OBR.OrderingProvider.GivenName = "JAMES";
            //ORM_O01_Msg.OBR.OrderingProvider.Initial = "A";
            //ORM_O01_Msg.OBR.OrderingProvider.ID = "1173";
            //ORM_O01_Msg.PID.Address = new Address();
            //ORM_O01_Msg.PID.PhoneNumberHome = new HL7_Contact();
            //ORM_O01_Msg.PID.PhoneNumberBusiness = new HL7_Contact();

            #endregion
        }