Ejemplo n.º 1
0
        ///<summary>
        /// Method Invocation of wrapper classes
        ///<summary>
        protected static FR_L5ME_GPEfPID_1314 Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L5ME_GPEfPID_1314 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            bool cleanupConnection  = Connection == null;
            bool cleanupTransaction = Transaction == null;

            FR_L5ME_GPEfPID_1314 functionReturn = new FR_L5ME_GPEfPID_1314();

            try
            {
                if (cleanupConnection == true)
                {
                    Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString);
                    Connection.Open();
                }
                if (cleanupTransaction == true)
                {
                    Transaction = Connection.BeginTransaction();
                }

                functionReturn = Execute(Connection, Transaction, Parameter, securityTicket);

                #region Cleanup Connection/Transaction
                //Commit the transaction
                if (cleanupTransaction == true)
                {
                    Transaction.Commit();
                }
                //Close the connection
                if (cleanupConnection == true)
                {
                    Connection.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    if (cleanupTransaction == true && Transaction != null)
                    {
                        Transaction.Rollback();
                    }
                }
                catch { }

                try
                {
                    if (cleanupConnection == true && Connection != null)
                    {
                        Connection.Close();
                    }
                }
                catch { }

                throw new Exception("Exception occured in method cls_Get_PatientEMRData_For_PatientID", ex);
            }
            return(functionReturn);
        }
Ejemplo n.º 2
0
        protected static FR_L5ME_GPEfPID_1314 Execute(DbConnection Connection, DbTransaction Transaction, P_L5ME_GPEfPID_1314 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode

            string _dateTimeStringFormat = "yyyy-MM-ddTHH:mm:sszzz";

            var returnValue = new FR_L5ME_GPEfPID_1314()
            {
                Result = new L5ME_GPEfPID_1314()
            };

            var doctors = cls_Get_DoctorsBaseData_for_TenantID.Invoke(Connection, Transaction, securityTicket).Result;

            var baseData = cls_PatientInfos_for_PatientID.Invoke(Connection, Transaction, new P_L5ME_GPIfPID_1338()
            {
                patientID = Parameter.PatientID
            }, securityTicket).Result;

            var root = new StructuredEMRData()
            {
                BaseData = new PatientBaseData()
                {
                    DateOfBirth    = baseData.BirthDate.ToString(_dateTimeStringFormat),
                    Email          = baseData.PrimaryEmail,
                    FirstName      = baseData.FirstName,
                    LastName       = baseData.LastName,
                    PatientPicture = Guid.Empty.ToString(), //popraviti
                    PhoneNumber    = baseData.Contacts.First().Content,
                    YearOfBirth    = baseData.BirthDate.Year.ToString(),
                    PatientITL     = baseData.HEC_PatientID.ToString(),
                    Gender         = baseData.Gender.ToString()
                }
            };

            var performedActions = ORM_HEC_ACT_PerformedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PerformedAction.Query()
            {
                Tenant_RefID  = securityTicket.TenantID,
                IsDeleted     = false,
                Patient_RefID = Parameter.PatientID
            }).ToArray();



            foreach (var performedAction in performedActions)
            {
                Examination examination = new Examination();
                examination.ITL  = performedAction.HEC_ACT_PerformedActionID.ToString();
                examination.Date = performedAction.IfPerfomed_DateOfAction.ToString(_dateTimeStringFormat);

                #region vitals
                var vitals = cls_Get_Vitals_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GPPfPAID_1524()
                {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                foreach (var vital in vitals)
                {
                    examination.PatientParameters.Add(new PatientParameter()
                    {
                        ConfirmedByDoctorITL = vital.ConfirmedBy_Doctor_RefID.ToString(),
                        ConfirmedOn          = vital.DateOfValue.ToString(_dateTimeStringFormat),
                        DateOfEntry          = vital.DateOfEntry.ToString(_dateTimeStringFormat),
                        IsVital          = vital.IsVitalParameter,
                        ITL              = vital.HEC_Patient_ParameterValueID.ToString(),
                        ParameterTypeITL = vital.HEC_Patient_ParameterID.ToString(),
                        Value            = vital.StringValue
                    });
                }
                #endregion

                #region doctors
                var action2docs = ORM_HEC_ACT_PerformedAction_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PerformedAction_Doctor.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    HEC_ACT_PerformedAction_RefID = performedAction.HEC_ACT_PerformedActionID
                }).ToArray();

                foreach (var a2d in action2docs)
                {
                    var doctor = doctors.FirstOrDefault(s => s.HEC_DoctorID == a2d.HEC_Doctor_RefID);
                    if (doctor != null)
                    {
                        var treatienDoctor = new Doctor()
                        {
                            ITL           = doctor.HEC_DoctorID.ToString(),
                            FirstName     = doctor.FirstName,
                            LastName      = doctor.LastName,
                            Title         = doctor.Title,
                            PracticeBPITL = doctor.CMN_BPT_BusinessParticipantID.ToString(),
                            PracticeName  = string.Empty
                        };

                        //if (doctor.Address != null)
                        //    treatienDoctor.Address = new Address()
                        //    {
                        //        CityName = doctor.Address.City_Name,
                        //        StreetName = doctor.Address.Street_Name,
                        //        StreetNumber = doctor.Address.Street_Number
                        //    };

                        if (doctor.Practice != null)
                        {
                            treatienDoctor.PracticeName = doctor.Practice.PracticeName;
                        }

                        examination.TreatingDoctors.Add(treatienDoctor);
                    }
                }
                #endregion

                #region procedure
                var procedures = cls_Get_Procedure_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GPfPAID_1953()
                {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                foreach (var proc in procedures)
                {
                    examination.Procedures.Add(new Procedure()
                    {
                        PotentialProcedure_RefITL = proc.HEC_TRE_PotentialProcedureID.ToString(),
                        ProcedureITL = proc.HEC_ACT_PerformedAction_ProcedureID.ToString(),
                        Name         = proc.PotentialProcedure_Name.Contents.Count == 0 ? "" : proc.PotentialProcedure_Name.Contents.First().Content
                    });
                }
                #endregion

                #region diagnosis

                var diagnoses = cls_Get_Diagnosis_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GDfPAID_1919 {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                foreach (var diag in diagnoses)
                {
                    Diagnosis diagnosis = new Diagnosis();
                    diagnosis.DiagnosedOn           = diag.R_DiagnosedOnDate.ToString(_dateTimeStringFormat);
                    diagnosis.ScheduledExpiryDate   = diag.R_ScheduledExpiryDate.ToString(_dateTimeStringFormat);
                    diagnosis.DiagnosisName         = diag.PotentialDiagnosis_Name.Contents.Count == 0 ? "" : diag.PotentialDiagnosis_Name.Contents.First().Content;
                    diagnosis.ICD10Code             = diag.ICD10_Code;
                    diagnosis.PatientDiagnosisITL   = diag.HEC_Patient_DiagnosisID.ToString();
                    diagnosis.PotentialDiagnosisITL = diag.HEC_DIA_PotentialDiagnosisID.ToString();

                    #region observation
                    var observations = cls_Get_Observation_for_PerformedActionID.Invoke(
                        Connection,
                        Transaction,
                        new P_L5ME_GOfPAID_1940()
                    {
                        PatientDiagnosisID = diag.HEC_Patient_DiagnosisID,
                        PerformedActionID  = performedAction.HEC_ACT_PerformedActionID
                    },
                        securityTicket).Result;
                    foreach (var observation in observations)
                    {
                        diagnosis.Observations.Add(new Observation()
                        {
                            MadeObservationITL = observation.HEC_ACT_PerformedAction_ObservationID.ToString(),
                            //PotentialObservationITL = observation.HEC_PotentialObservationID.ToString(),
                            Text = observation.Comment
                        });
                    }

                    examination.Diagnoses.Add(diagnosis);
                    #endregion
                }
                #endregion


                #region mediaction

                var products = cls_Get_MedicationProduct_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GMPfPAID_1133 {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                var substances = cls_Get_MedicationSubstance_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GMSfPAID_1329 {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                foreach (var prod in products)
                {
                    examination.Medications.Add(new Medication()
                    {
                        Dosage = prod.DosageText,
                        IsHealthCareProduct  = true,
                        IsSubstance          = false,
                        PatientMedicationITL = prod.HEC_Patient_MedicationID.ToString(),
                        Product_RefITL       = prod.HEC_ProductID.ToString(),
                        Substance_RefITL     = Guid.Empty.ToString(),
                        Diagnosis_RefITL     = prod.Relevant_PatientDiagnosis_RefID.ToString(),
                        Name                = prod.Product_Name.Contents.Count == 0 ? "" : prod.Product_Name.Contents.First().Content,
                        DurationInDays      = prod.IntendedApplicationDuration_in_days.ToString(),
                        SpecialInstructions = prod.MedicationUpdateComment,
                        DosageForm          = prod.DosageForm_Name.Contents.Count == 0 ? "" : prod.DosageForm_Name.Contents.First().Content,
                    });
                }

                foreach (var subs in substances)
                {
                    examination.Medications.Add(new Medication()
                    {
                        Dosage = subs.DosageText,
                        IsHealthCareProduct  = false,
                        IsSubstance          = true,
                        PatientMedicationITL = subs.HEC_Patient_MedicationID.ToString(),
                        Product_RefITL       = Guid.Empty.ToString(),
                        Substance_RefITL     = subs.HEC_SUB_SubstanceID.ToString(),
                        StrengthUnit         = subs.ISOCode,
                        Strength             = subs.IfSubstance_Strength,
                        IsActive             = subs.IsActiveComponent,
                        Diagnosis_RefITL     = subs.Relevant_PatientDiagnosis_RefID.ToString(),
                        Name                = subs.GlobalPropertyMatchingID,
                        DurationInDays      = subs.IntendedApplicationDuration_in_days.ToString(),
                        SpecialInstructions = subs.MedicationUpdateComment,
                        DosageForm          = string.Empty
                    });
                }

                #endregion

                #region referrals

                var refferals = cls_Get_Referrals_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GRfPAID_1557()
                {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;

                foreach (var r in refferals)
                {
                    Referral referral = new Referral()
                    {
                        Comment             = r.ReferralComment,
                        PatientReferralITL  = r.HEC_ACT_PerformedAction_ReferralID.ToString(),
                        PracticeType_RefITL = r.PracticeType != null?r.PracticeType.HEC_MedicalPractice_TypeID.ToString() : Guid.Empty.ToString(),
                                                  PracticeTypeName                = r.PracticeType != null ? (r.PracticeType.MedicalPracticeType_Name.Contents.Count > 0 ? r.PracticeType.MedicalPracticeType_Name.Contents.First().Content : "") : "",
                                                  SuggestedMedicalPracticeName    = r.Practice != null ? (r.Practice.OrganizationalUnit_Name.Contents.Count > 0 ? r.Practice.OrganizationalUnit_Name.Contents.First().Content : "") : "",
                                                  SuggestedMedicalPractice_RefITL = r.Practice != null?r.Practice.HEC_MedicalPractiseID.ToString() : Guid.Empty.ToString()
                    };

                    foreach (var proc in r.Procedure)
                    {
                        referral.RequestedTreatmants.Add(new RequestedTreatmant()
                        {
                            ITL  = proc.HEC_ACT_PerformedAction_Referral_RequestedPotentialProcedureID.ToString(),
                            Name = proc.PotentialProcedure_Name.Contents.Count > 0 ?  proc.PotentialProcedure_Name.Contents.First().Content : "",
                            PotentialTreatmantITL = proc.HEC_TRE_PotentialProcedureID.ToString(),
                            ProposedDate          = proc.ProposedDate.ToString(_dateTimeStringFormat),
                            ReferralITL           = r.HEC_ACT_PerformedAction_ReferralID.ToString()
                        });
                    }

                    //var diagnosisUpdates = cls_Get_Referral_ReleventDiagnosis_Update.Invoke(Connection, Transaction, new P_L5_EMR_GRRDU_1254 { Referral_RefID = r.HEC_ACT_PerformedAction_ReferralID }, securityTicket).Result.SingleOrDefault();
                    //if (diagnosisUpdates != null)
                    //{
                    //    referral.RelevantPatientDiagnosis_RefITL = diagnosisUpdates.HEC_Patient_Diagnosis_RefID.ToString();
                    //    referral.RelevantPatientDiagnosisName = diagnosisUpdates.PotentialDiagnosis_Name.Contents.SingleOrDefault().Content;
                    //}
                    //examination.Referrals.Add(referral);
                }


                #endregion

                #region prescriptions

                var presctiptions = cls_Get_Prescriptions_for_PerformedActionID.Invoke(Connection, Transaction, new P_L5ME_GPfPAID_1216()
                {
                    PerformedActionID = performedAction.HEC_ACT_PerformedActionID
                }, securityTicket).Result;
                foreach (var presctiption in presctiptions)
                {
                    PrescriptionHeader header = new PrescriptionHeader()
                    {
                        ExaminationITL  = performedAction.HEC_ACT_PerformedActionID.ToString(),
                        PrescribedOn    = presctiption.Prescription_Date.ToString(_dateTimeStringFormat),
                        PrescriptionITL = presctiption.HEC_Patient_Prescription_HeaderID.ToString(),
                    };

                    var doctor = doctors.First(s => s.HEC_DoctorID == presctiption.PrescribedBy_Doctor_RefID);
                    header.Doctor = new Doctor()
                    {
                        ITL           = doctor.HEC_DoctorID.ToString(),
                        FirstName     = doctor.FirstName,
                        LastName      = doctor.LastName,
                        Title         = doctor.Title,
                        PracticeBPITL = doctor.CMN_BPT_BusinessParticipantID.ToString(),
                        PracticeName  = string.Empty
                    };

                    //if (doctor.Address != null)
                    //    header.Doctor.Address = new Address()
                    //    {
                    //        CityName = doctor.Address.City_Name,
                    //        StreetName = doctor.Address.Street_Name,
                    //        StreetNumber = doctor.Address.Street_Number
                    //    };

                    if (doctor.Practice != null)
                    {
                        header.Doctor.PracticeName = doctor.Practice.PracticeName;
                    }

                    foreach (var position in presctiption.Positions)
                    {
                        header.PrescriptionPositions.Add(new PrescriptionPosition()
                        {
                            PatientMedicationITL    = position.InitializedFrom_PatientMedication_RefID.ToString(),
                            PrescriptionPositionITL = position.HEC_Patient_Prescription_PositionID.ToString()
                        });
                    }

                    examination.PrescriptionHeaders.Add(header);
                }


                #endregion

                root.Examinations.Add(examination);
            }

            returnValue.Result.BaseData = root;

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }