protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CTPA_1225 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here
            var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1608()
            {
                DiagnoseID = Parameter.diagnose_id
            }, securityTicket).Result;

            ORM_HEC_ACT_PlannedAction treatment_planned_action = null;
            if (Parameter.treatment_planned_action_id != Guid.Empty)
            {
                treatment_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query()
                {
                    Tenant_RefID            = securityTicket.TenantID,
                    IsDeleted               = false,
                    HEC_ACT_PlannedActionID = Parameter.treatment_planned_action_id
                }).SingleOrDefault();
            }

            if (treatment_planned_action == null)
            {
                treatment_planned_action = new ORM_HEC_ACT_PlannedAction();
                treatment_planned_action.Creation_Timestamp      = DateTime.Now;
                treatment_planned_action.HEC_ACT_PlannedActionID = Guid.NewGuid();
                treatment_planned_action.IsPlannedFollowup       = true;
                treatment_planned_action.IfPlannedFollowup_PreviousAction_RefID = Parameter.initial_performed_action_id;
                treatment_planned_action.IsPerformed            = false;
                treatment_planned_action.MedicalPractice_RefID  = Parameter.practice_id;
                treatment_planned_action.Modification_Timestamp = DateTime.Now;
                treatment_planned_action.Patient_RefID          = Parameter.patient_id;
                treatment_planned_action.PlannedFor_Date        = Parameter.treatment_date;
                treatment_planned_action.Tenant_RefID           = securityTicket.TenantID;
            }

            if (Parameter.treatment_doctor_id != Guid.Empty)
            {
                var doctor_account_id = cls_Get_Doctor_AccountID_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDAIDfDID_1549()
                {
                    DoctorID = Parameter.treatment_doctor_id
                }, securityTicket).Result.accountID;

                var doctor_accountQ = new ORM_USR_Account.Query();
                doctor_accountQ.USR_AccountID = doctor_account_id;
                doctor_accountQ.Tenant_RefID  = securityTicket.TenantID;
                doctor_accountQ.IsDeleted     = false;

                var doctor_account = ORM_USR_Account.Query.Search(Connection, Transaction, doctor_accountQ).SingleOrDefault();
                if (doctor_account != null)
                {
                    treatment_planned_action.ToBePerformedBy_BusinessParticipant_RefID = doctor_account.BusinessParticipant_RefID;
                }
            }

            treatment_planned_action.Save(Connection, Transaction);

            returnValue.Result = treatment_planned_action.HEC_ACT_PlannedActionID;
            var treatment_planned_action_potential_procedure = ORM_HEC_ACT_PlannedAction_PotentialProcedure.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction_PotentialProcedure.Query()
            {
                PlannedAction_RefID      = treatment_planned_action.HEC_ACT_PlannedActionID,
                PotentialProcedure_RefID = Parameter.intraocular_procedure_id,
                Tenant_RefID             = securityTicket.TenantID,
                IsDeleted = false
            }).SingleOrDefault();

            if (treatment_planned_action_potential_procedure == null)
            {
                treatment_planned_action_potential_procedure = new ORM_HEC_ACT_PlannedAction_PotentialProcedure();
                treatment_planned_action_potential_procedure.Tenant_RefID             = securityTicket.TenantID;
                treatment_planned_action_potential_procedure.PlannedAction_RefID      = treatment_planned_action.HEC_ACT_PlannedActionID;
                treatment_planned_action_potential_procedure.PotentialProcedure_RefID = Parameter.intraocular_procedure_id;
            }

            treatment_planned_action_potential_procedure.Modification_Timestamp = DateTime.Now;

            treatment_planned_action_potential_procedure.Save(Connection, Transaction);

            var treatment_planned_action_typeQ = new ORM_HEC_ACT_ActionType.Query();
            treatment_planned_action_typeQ.GlobalPropertyMatchingID = "mm.docconect.doc.app.planned.action.treatment";
            treatment_planned_action_typeQ.Tenant_RefID             = securityTicket.TenantID;
            treatment_planned_action_typeQ.IsDeleted = false;

            var treatment_planned_action_type    = ORM_HEC_ACT_ActionType.Query.Search(Connection, Transaction, treatment_planned_action_typeQ).SingleOrDefault();
            var treatment_planned_action_type_id = Guid.Empty;
            if (treatment_planned_action_type == null)
            {
                treatment_planned_action_type = new ORM_HEC_ACT_ActionType();

                Dict action_type_name_dict = new Dict(ORM_HEC_ACT_ActionType.TableName);

                foreach (var lang in Parameter.all_languagesL)
                {
                    var content = lang.ISO_639_1.Equals("DE") ? "behandlung" : "treatment";
                    action_type_name_dict.AddEntry(lang.CMN_LanguageID, content);
                }

                treatment_planned_action_type.ActionType_Name          = action_type_name_dict;
                treatment_planned_action_type.Creation_Timestamp       = DateTime.Now;
                treatment_planned_action_type.GlobalPropertyMatchingID = "mm.docconect.doc.app.planned.action.treatment";
                treatment_planned_action_type.Modification_Timestamp   = DateTime.Now;
                treatment_planned_action_type.HEC_ACT_ActionTypeID     = Guid.NewGuid();
                treatment_planned_action_type.Tenant_RefID             = securityTicket.TenantID;
                treatment_planned_action_type.Save(Connection, Transaction);

                treatment_planned_action_type_id = treatment_planned_action_type.HEC_ACT_ActionTypeID;
            }
            else
            {
                treatment_planned_action_type_id = treatment_planned_action_type.HEC_ACT_ActionTypeID;
            }

            ORM_HEC_ACT_PlannedAction_2_ActionType treatment_planned_action_2_type = new ORM_HEC_ACT_PlannedAction_2_ActionType();
            treatment_planned_action_2_type.Tenant_RefID                         = securityTicket.TenantID;
            treatment_planned_action_2_type.Creation_Timestamp                   = DateTime.Now;
            treatment_planned_action_2_type.IsDeleted                            = false;
            treatment_planned_action_2_type.HEC_ACT_ActionType_RefID             = treatment_planned_action_type_id;
            treatment_planned_action_2_type.HEC_ACT_PlannedAction_RefID          = treatment_planned_action.HEC_ACT_PlannedActionID;
            treatment_planned_action_2_type.Modification_Timestamp               = DateTime.Now;
            treatment_planned_action_2_type.HEC_ACT_PlannedAction_2_ActionTypeID = Guid.NewGuid();

            treatment_planned_action_2_type.Save(Connection, Transaction);

            var treatment_planned_action_required_product = ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query()
            {
                BoundTo_HealthcareProcurementOrderPosition_RefID = Parameter.procurement_order_id,
                PlannedAction_PotentialProcedure_RefID           = treatment_planned_action_potential_procedure.HEC_ACT_PlannedAction_PotentialProcedureID,
                Tenant_RefID = securityTicket.TenantID,
                IsDeleted    = false
            }).SingleOrDefault();

            if (treatment_planned_action_required_product == null)
            {
                treatment_planned_action_required_product = new ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct();
                treatment_planned_action_required_product.BoundTo_HealthcareProcurementOrderPosition_RefID = Parameter.procurement_order_id;
                treatment_planned_action_required_product.PlannedAction_PotentialProcedure_RefID           = treatment_planned_action_potential_procedure.HEC_ACT_PlannedAction_PotentialProcedureID;
                treatment_planned_action_required_product.Tenant_RefID = securityTicket.TenantID;
            }

            treatment_planned_action_required_product.Modification_Timestamp  = DateTime.Now;
            treatment_planned_action_required_product.HealthcareProduct_RefID = Parameter.drug_id;

            treatment_planned_action_required_product.Save(Connection, Transaction);

            #region DIAGNOSE
            if (Parameter.diagnose_id != Guid.Empty)
            {
                var patient_diagnosis = new ORM_HEC_Patient_Diagnosis();
                patient_diagnosis.Creation_Timestamp         = DateTime.Now;
                patient_diagnosis.HEC_Patient_DiagnosisID    = Guid.NewGuid();
                patient_diagnosis.Modification_Timestamp     = DateTime.Now;
                patient_diagnosis.Patient_RefID              = Parameter.patient_id;
                patient_diagnosis.R_IsConfirmed              = Parameter.is_confirmed;
                patient_diagnosis.R_PotentialDiagnosis_RefID = Parameter.diagnose_id;
                patient_diagnosis.Tenant_RefID = securityTicket.TenantID;

                patient_diagnosis.Save(Connection, Transaction);

                ORM_HEC_DIA_Diagnosis_Localization diagnosis_localization = new ORM_HEC_DIA_Diagnosis_Localization();
                diagnosis_localization.Creation_Timestamp = DateTime.Now;
                diagnosis_localization.Diagnosis_RefID    = Parameter.diagnose_id;
                diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID = Guid.NewGuid();
                diagnosis_localization.Modification_Timestamp           = DateTime.Now;
                diagnosis_localization.Tenant_RefID     = securityTicket.TenantID;
                diagnosis_localization.LocalizationCode = Parameter.diagnose_id == Guid.Empty ? "-" : Parameter.is_left_eye ? "L" : "R";

                diagnosis_localization.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate initial_performed_action_diagnose = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate();
                initial_performed_action_diagnose.Creation_Timestamp = DateTime.Now;
                initial_performed_action_diagnose.HEC_ACT_PerformedAction_DiagnosisUpdateID = Guid.NewGuid();
                initial_performed_action_diagnose.HEC_ACT_PerformedAction_RefID             = Parameter.initial_performed_action_id;
                initial_performed_action_diagnose.IsDiagnosisConfirmed              = Parameter.is_confirmed;
                initial_performed_action_diagnose.Modification_Timestamp            = DateTime.Now;
                initial_performed_action_diagnose.PotentialDiagnosis_RefID          = Parameter.diagnose_id;
                initial_performed_action_diagnose.Tenant_RefID                      = securityTicket.TenantID;
                initial_performed_action_diagnose.HEC_Patient_Diagnosis_RefID       = patient_diagnosis.HEC_Patient_DiagnosisID;
                initial_performed_action_diagnose.IM_PotentialDiagnosis_Code        = diagnose_details.diagnose_icd_10;
                initial_performed_action_diagnose.IM_PotentialDiagnosis_Name        = diagnose_details.diagnose_name;
                initial_performed_action_diagnose.IM_PotentialDiagnosisCatalog_Name = diagnose_details.catalog_display_name;

                initial_performed_action_diagnose.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization initial_performed_action_diagnose_localization = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization();
                initial_performed_action_diagnose_localization.Creation_Timestamp = DateTime.Now;
                initial_performed_action_diagnose_localization.HEC_ACT_PerformedAction_DiagnosisUpdate_LocalizationID = Guid.NewGuid();
                initial_performed_action_diagnose_localization.HEX_EXC_Action_DiagnosisUpdate_RefID = initial_performed_action_diagnose.HEC_ACT_PerformedAction_DiagnosisUpdateID;
                initial_performed_action_diagnose_localization.HEC_DIA_Diagnosis_Localization_RefID = diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID;
                initial_performed_action_diagnose_localization.Modification_Timestamp = DateTime.Now;
                initial_performed_action_diagnose_localization.Tenant_RefID           = securityTicket.TenantID;
                initial_performed_action_diagnose_localization.IM_PotentialDiagnosisLocalization_Code = Parameter.diagnose_id == Guid.Empty ? "-" : Parameter.is_left_eye ? "L" : "R";

                initial_performed_action_diagnose_localization.Save(Connection, Transaction);

                ORM_HEC_Patient_Diagnosis_Localization patient_diagnosis_localization = new ORM_HEC_Patient_Diagnosis_Localization();
                patient_diagnosis_localization.Creation_Timestamp = DateTime.Now;
                patient_diagnosis_localization.DIA_Diagnosis_Localization_RefID     = diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID;
                patient_diagnosis_localization.HEC_Patient_Diagnosis_LocalizationID = Guid.NewGuid();
                patient_diagnosis_localization.Patient_Diagnosis_RefID = patient_diagnosis.HEC_Patient_DiagnosisID;
                patient_diagnosis_localization.Tenant_RefID            = securityTicket.TenantID;

                patient_diagnosis_localization.Save(Connection, Transaction);
            }
            #endregion

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5DG_SDfTIDA_10_32 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var item = new ORM_HEC_DIA_PotentialDiagnosis();

            if (Parameter.HEC_DIA_PotentialDiagnosisID != Guid.Empty)
            {
                var result = item.Load(Connection, Transaction, Parameter.HEC_DIA_PotentialDiagnosisID);
                if (result.Status != FR_Status.Success || item.HEC_DIA_PotentialDiagnosisID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }
            else
            {
                item.HEC_DIA_PotentialDiagnosisID = Guid.NewGuid();
                returnValue.Result = item.HEC_DIA_PotentialDiagnosisID;
            }


            if (Parameter.IsDeleted == true)
            {
                var query_DiagnosisStates_del = new ORM_HEC_DIA_Diagnosis_State.Query();
                query_DiagnosisStates_del.Diagnose_RefID = Parameter.HEC_DIA_PotentialDiagnosisID;

                var found_DiagnosisStates_del = ORM_HEC_DIA_Diagnosis_State.Query.Search(Connection, Transaction, query_DiagnosisStates_del);

                var query_Localizations_del = new ORM_HEC_DIA_Diagnosis_Localization.Query();
                query_Localizations_del.Diagnosis_RefID = Parameter.HEC_DIA_PotentialDiagnosisID;

                var found_Localizations_del = ORM_HEC_DIA_Diagnosis_Localization.Query.Search(Connection, Transaction, query_Localizations_del);

                foreach (var foundState in found_DiagnosisStates_del)
                {
                    foundState.IsDeleted = true;
                    foundState.Save(Connection, Transaction);
                }

                foreach (var foundLocalization in found_Localizations_del)
                {
                    foundLocalization.IsDeleted = true;
                    foundLocalization.Save(Connection, Transaction);
                }

                item.IsDeleted = true;
                return(new FR_Guid(item.Save(Connection, Transaction), item.HEC_DIA_PotentialDiagnosisID));
            }

            //Save Diagnoses

            Dict diagnosis_nameDict = new Dict("hec_dia_potentialdiagnoses");
            diagnosis_nameDict = Parameter.PotentialDiagnosis_Name_DictID;

            item.Tenant_RefID       = securityTicket.TenantID;
            item.Creation_Timestamp = DateTime.Now;
            item.ICD10_Code         = Parameter.ICD10_Code;
            //item.PotentialDiagnosis_Name_DictID = diagnosis_nameDict;
            item.PotentialDiagnosis_Description = Parameter.PotentialDiagnosis_Description;
            item.Save(Connection, Transaction);

            // save States
            foreach (var stateParam in Parameter.DiagnosisStates)
            {
                Dict state_nameDict = new Dict("hec_dia_diagnosis_states");
                state_nameDict = stateParam.DiagnosisState_Name;


                var queryState = new ORM_HEC_DIA_Diagnosis_State.Query();
                queryState.HEC_DIA_Diagnosis_StateID = stateParam.HEC_DIA_Diagnosis_StateID;
                queryState.Diagnose_RefID            = stateParam.Diagnose_RefID;

                var stateResult = ORM_HEC_DIA_Diagnosis_State.Query.Search(Connection, Transaction, queryState);

                //new State
                if (stateResult.Count == 0)
                {
                    var state = new ORM_HEC_DIA_Diagnosis_State();
                    state.HEC_DIA_Diagnosis_StateID = stateParam.HEC_DIA_Diagnosis_StateID;
                    Dict abbrev = new Dict();
                    state.DiagnosisState_Abbreviation = stateParam.DiagnosisState_Abbreviation;
                    state.DiagnosisState_Name         = state_nameDict;
                    state.Diagnose_RefID     = item.HEC_DIA_PotentialDiagnosisID;
                    state.Creation_Timestamp = DateTime.Now;
                    state.Tenant_RefID       = securityTicket.TenantID;
                    state.IsDeleted          = false;
                    state.Save(Connection, Transaction);
                }
                else//edit State
                {
                    if (stateParam.IsDeleted == true)
                    {
                        stateResult[0].IsDeleted = true;
                        stateResult[0].Save(Connection, Transaction);
                    }
                    else
                    {
                        if (stateResult[0].DiagnosisState_Name != null || Parameter.IsDeleted == true)
                        {
                            foreach (var entry in state_nameDict.Contents)
                            {
                                stateResult[0].DiagnosisState_Name.UpdateEntry(entry.LanguageID, entry.Content);
                            }
                        }
                        stateResult[0].DiagnosisState_Abbreviation = stateParam.DiagnosisState_Abbreviation;
                        stateResult[0].Save(Connection, Transaction);
                    }
                }
            }

            //Diagnosis Localization
            foreach (var localizationParam in Parameter.DiagnosisLocalizations)
            {
                Dict localization_nameDict = new Dict("hec_dia_diagnosis_localizations");
                localization_nameDict = localizationParam.DiagnosisLocalization_Name;

                var queryLocalization = new ORM_HEC_DIA_Diagnosis_Localization.Query();
                queryLocalization.HEC_DIA_Diagnosis_LocalizationID = localizationParam.HEC_DIA_Diagnosis_LocalizationID;
                queryLocalization.Diagnosis_RefID = localizationParam.Diagnosis_RefID;

                var localizationResult = ORM_HEC_DIA_Diagnosis_Localization.Query.Search(Connection, Transaction, queryLocalization);

                if (localizationResult.Count == 0)
                {
                    var localization = new ORM_HEC_DIA_Diagnosis_Localization();
                    localization.HEC_DIA_Diagnosis_LocalizationID = localizationParam.HEC_DIA_Diagnosis_LocalizationID;
                    localization.DiagnosisLocalization_Name       = localization_nameDict;
                    localization.Creation_Timestamp = DateTime.Now;
                    localization.Tenant_RefID       = securityTicket.TenantID;
                    localization.Diagnosis_RefID    = item.HEC_DIA_PotentialDiagnosisID;
                    localization.IsDeleted          = false;
                    localization.Save(Connection, Transaction);
                }
                else
                {
                    if (localizationParam.IsDeleted == true || Parameter.IsDeleted == true)
                    {
                        localizationResult[0].IsDeleted = true;
                        localizationResult[0].Save(Connection, Transaction);
                    }
                    else
                    {
                        if (localizationResult[0].DiagnosisLocalization_Name != null)
                        {
                            foreach (var entry in localization_nameDict.Contents)
                            {
                                localizationResult[0].DiagnosisLocalization_Name.UpdateEntry(entry.LanguageID, entry.Content);
                            }
                        }
                        localizationResult[0].Save(Connection, Transaction);
                    }
                }
            }

            return(returnValue);

            #endregion UserCode
        }
示例#3
0
        protected static FR_CAS_SPE_1805 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SPE_1805 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_CAS_SPE_1805();
            returnValue.Result = new CAS_SPE_1805();
            //Put your code here
            var case_id = Parameter.case_id;

            #region DATA
            var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124()
            {
                PatientID = Parameter.patient_id
            }, securityTicket).Result;
            if (patient_details == null)
            {
                throw new Exception("Patient details not found for ID: " + Parameter.patient_id);
            }

            var doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query()
            {
                Tenant_RefID = securityTicket.TenantID, HEC_DoctorID = Parameter.doctor_id, IsDeleted = false
            }).SingleOrDefault();
            if (doctor == null)
            {
                throw new Exception("Doctor not found for ID: " + Parameter.doctor_id);
            }


            var doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.doctor_id
            }, securityTicket).Result.FirstOrDefault();

            if (doctor_details == null)
            {
                throw new Exception("Doctor details not found for ID: " + Parameter.doctor_id);
            }

            var practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432()
            {
                PracticeID = doctor_details.practice_id
            }, securityTicket).Result.FirstOrDefault();
            if (practice_details == null)
            {
                throw new Exception("Practice details not found for ID: " + doctor_details.practice_id);
            }

            var shouldDownloadReportProperty = cls_Get_Practice_PropertyValue_for_PropertyName_and_PracticeID.Invoke(Connection, Transaction, new P_DO_GPPVfPNaPID_0916()
            {
                PracticeID = doctor_details.practice_id, PropertyName = "Download Report Upon Submission"
            }, securityTicket).Result;
            var shouldDownloadReport = shouldDownloadReportProperty == null ? false : shouldDownloadReportProperty.BooleanValue;

            ORM_USR_Account.Query trigger_accQ = new ORM_USR_Account.Query();
            trigger_accQ.Tenant_RefID  = securityTicket.TenantID;
            trigger_accQ.USR_AccountID = securityTicket.AccountID;
            trigger_accQ.IsDeleted     = false;

            ORM_USR_Account trigger_acc = ORM_USR_Account.Query.Search(Connection, Transaction, trigger_accQ).Single();

            ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
            all_languagesQ.Tenant_RefID = securityTicket.TenantID;
            all_languagesQ.IsDeleted    = false;

            var all_languagesL           = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();
            var intraocular_procedure_id = Guid.Empty;
            #endregion

            if (!Parameter.isResubmit)
            {
                #region NEW CASE
                ORM_HEC_CAS_Case new_case = new ORM_HEC_CAS_Case();
                new_case.HEC_CAS_CaseID     = Guid.NewGuid();
                new_case.Creation_Timestamp = DateTime.Now;
                new_case.CreatedBy_BusinessParticipant_RefID = trigger_acc.BusinessParticipant_RefID;
                new_case.Patient_RefID          = Parameter.patient_id;
                new_case.Patient_FirstName      = patient_details.patient_first_name;
                new_case.Patient_LastName       = patient_details.patient_last_name;
                new_case.Patient_Gender         = patient_details.gender;
                new_case.Patient_BirthDate      = patient_details.birthday;
                new_case.CaseNumber             = cls_Get_Next_Case_Number.Invoke(Connection, Transaction, securityTicket).Result.case_number;
                new_case.Modification_Timestamp = DateTime.Now;

                DateTime today = DateTime.Today;
                int      age   = today.Year - patient_details.birthday.Year;
                if (patient_details.birthday > today.AddYears(-age))
                {
                    age--;
                }

                new_case.Patient_Age  = age;
                new_case.Tenant_RefID = securityTicket.TenantID;

                new_case.Save(Connection, Transaction);
                case_id = new_case.HEC_CAS_CaseID;
                #endregion NEW CASE

                #region INITIAL PERFORMED ACTION
                var initial_performed_action_id = cls_Create_Initial_Performed_Action.Invoke(Connection, Transaction, new P_CAS_CIPA_1140()
                {
                    all_languagesL    = all_languagesL,
                    case_id           = new_case.HEC_CAS_CaseID,
                    created_by_bpt    = trigger_acc.BusinessParticipant_RefID,
                    patient_id        = Parameter.patient_id,
                    practice_id       = doctor_details.practice_id,
                    action_type_gpmid = "mm.docconect.doc.app.performed.action.preexamination"
                }, securityTicket).Result;
                #endregion INITIAL PERFORMED ACTION

                #region LOCALIZATION
                ORM_HEC_DIA_Diagnosis_Localization diagnosis_localization = new ORM_HEC_DIA_Diagnosis_Localization();
                diagnosis_localization.Modification_Timestamp = DateTime.Now;
                diagnosis_localization.Tenant_RefID           = securityTicket.TenantID;
                diagnosis_localization.LocalizationCode       = Parameter.localization;

                diagnosis_localization.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate initial_performed_action_diagnose = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate();
                initial_performed_action_diagnose.HEC_ACT_PerformedAction_RefID = initial_performed_action_id;
                initial_performed_action_diagnose.Modification_Timestamp        = DateTime.Now;
                initial_performed_action_diagnose.Tenant_RefID = securityTicket.TenantID;

                initial_performed_action_diagnose.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization initial_performed_action_diagnose_localization = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization();
                initial_performed_action_diagnose_localization.HEX_EXC_Action_DiagnosisUpdate_RefID = initial_performed_action_diagnose.HEC_ACT_PerformedAction_DiagnosisUpdateID;
                initial_performed_action_diagnose_localization.HEC_DIA_Diagnosis_Localization_RefID = diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID;
                initial_performed_action_diagnose_localization.Modification_Timestamp = DateTime.Now;
                initial_performed_action_diagnose_localization.Tenant_RefID           = securityTicket.TenantID;
                initial_performed_action_diagnose_localization.IM_PotentialDiagnosisLocalization_Code = Parameter.localization;

                initial_performed_action_diagnose_localization.Save(Connection, Transaction);
                #endregion

                #region PLANNED ACTION
                var action_gpmid = "mm.docconect.doc.app.planned.action.preexamination";

                var planned_action_type = ORM_HEC_ACT_ActionType.Query.Search(Connection, Transaction, new ORM_HEC_ACT_ActionType.Query()
                {
                    GlobalPropertyMatchingID = action_gpmid,
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).SingleOrDefault();

                if (planned_action_type == null)
                {
                    planned_action_type = new ORM_HEC_ACT_ActionType();
                    planned_action_type.GlobalPropertyMatchingID = action_gpmid;
                    planned_action_type.Modification_Timestamp   = DateTime.Now;
                    planned_action_type.Tenant_RefID             = securityTicket.TenantID;

                    planned_action_type.Save(Connection, Transaction);
                }

                // circular reference to same performed action in order to be compatible with treatment planned actions,
                // so that it can be accessed in the same way
                var preexamination_planned_action = new ORM_HEC_ACT_PlannedAction();
                preexamination_planned_action.IfPlannedFollowup_PreviousAction_RefID = initial_performed_action_id;
                preexamination_planned_action.IsPerformed = true;
                preexamination_planned_action.IfPerformed_PerformedAction_RefID = initial_performed_action_id;
                preexamination_planned_action.MedicalPractice_RefID             = doctor_details.practice_id;
                preexamination_planned_action.Modification_Timestamp            = DateTime.Now;
                preexamination_planned_action.Patient_RefID   = Parameter.patient_id;
                preexamination_planned_action.PlannedFor_Date = Parameter.date;
                preexamination_planned_action.ToBePerformedBy_BusinessParticipant_RefID = doctor.BusinessParticipant_RefID;
                preexamination_planned_action.Tenant_RefID = securityTicket.TenantID;

                preexamination_planned_action.Save(Connection, Transaction);

                var action_to_type = new ORM_HEC_ACT_PlannedAction_2_ActionType();
                action_to_type.HEC_ACT_ActionType_RefID    = planned_action_type.HEC_ACT_ActionTypeID;
                action_to_type.HEC_ACT_PlannedAction_RefID = preexamination_planned_action.HEC_ACT_PlannedActionID;
                action_to_type.Modification_Timestamp      = DateTime.Now;
                action_to_type.Tenant_RefID = securityTicket.TenantID;

                action_to_type.Save(Connection, Transaction);
                #endregion

                #region GPOS
                var patient_consent = ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query.Search(Connection, Transaction, new ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query()
                {
                    Patient_RefID = Parameter.patient_id,
                    IsDeleted     = false,
                    Tenant_RefID  = securityTicket.TenantID
                }).Where(t =>
                {
                    var ctrParameter = cls_Get_Contract_Parameter_Value_for_InsuranceToBrokerContractID.Invoke(Connection, Transaction, new P_MD_GCPVfITBCID_1647()
                    {
                        ParameterName = "Duration of participation consent – Month",
                        InsuranceToBrokerContractID = t.InsuranceToBrokerContract_RefID
                    }, securityTicket).Result;

                    var validThrough = ctrParameter == null || ctrParameter.ConsentValidForMonths == double.MaxValue ? DateTime.MaxValue : t.ValidFrom.AddMonths(Convert.ToInt32(ctrParameter.ConsentValidForMonths));
                    return(t.ValidFrom <= Parameter.date && validThrough >= Parameter.date);
                }).OrderBy(t => t.ValidFrom).FirstOrDefault();

                if (patient_consent == null)
                {
                    throw new Exception("No patients consents found for selected date: " + Parameter.date.ToString("dd.MM.yyyy") + " and  patient id: " + Parameter.patient_id);
                }


                var gpos_gpmid = "mm.docconnect.gpos.catalog.voruntersuchung";
                var preexamination_gpos_catalog = ORM_HEC_BIL_PotentialCode_Catalog.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_Catalog.Query()
                {
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted                = false,
                    GlobalPropertyMatchingID = gpos_gpmid
                }).SingleOrDefault();

                if (preexamination_gpos_catalog == null)
                {
                    throw new Exception("Preexamination catalog not found.");
                }

                var gpos_connections_to_drugs = ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID);

                var gpos_connections_to_diagnoses = ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID);

                var preexamination_gposes = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    PotentialCode_Catalog_RefID = preexamination_gpos_catalog.HEC_BIL_PotentialCode_CatalogID
                });

                var covered_gposes = ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query.Search(Connection, Transaction, new ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    InsuranceToBrokerContract_RefID = patient_consent.InsuranceToBrokerContract_RefID
                });

                preexamination_gposes = preexamination_gposes.Where(t => covered_gposes.Any(c => c.PotentialBillCode_RefID == t.HEC_BIL_PotentialCodeID)).ToList();

                var bill_header = new ORM_BIL_BillHeader();
                bill_header.Modification_Timestamp = DateTime.Now;
                bill_header.Tenant_RefID           = securityTicket.TenantID;

                foreach (var gpos in preexamination_gposes)
                {
                    if (!gpos_connections_to_diagnoses.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID) && !gpos_connections_to_drugs.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID))
                    {
                        var price_value = ORM_CMN_Price_Value.Query.Search(Connection, Transaction, new ORM_CMN_Price_Value.Query()
                        {
                            Price_RefID = gpos.Price_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID
                        }).SingleOrDefault();
                        if (price_value == null)
                        {
                            throw new Exception("Price value not found for GPOS: " + gpos.BillingCode);
                        }

                        ORM_BIL_BillPosition gpos_position = new ORM_BIL_BillPosition();
                        gpos_position.BIL_BilHeader_RefID        = bill_header.BIL_BillHeaderID;
                        gpos_position.Modification_Timestamp     = DateTime.Now;
                        gpos_position.Tenant_RefID               = securityTicket.TenantID;
                        gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(price_value.PriceValue_Amount);
                        gpos_position.PositionNumber             = cls_Get_Next_Bill_Position_Number.Invoke(Connection, Transaction, securityTicket).Result.bill_position_number;

                        gpos_position.Save(Connection, Transaction);

                        ORM_BIL_BillPosition_TransmitionStatus fs_status = new ORM_BIL_BillPosition_TransmitionStatus();
                        fs_status.BillPosition_RefID     = gpos_position.BIL_BillPositionID;
                        fs_status.IsActive               = true;
                        fs_status.Modification_Timestamp = DateTime.Now;
                        fs_status.Tenant_RefID           = securityTicket.TenantID;
                        fs_status.TransmitionCode        = 1;
                        fs_status.TransmitionStatusKey   = "preexamination";
                        fs_status.TransmittedOnDate      = DateTime.Now;

                        fs_status.Save(Connection, Transaction);

                        ORM_HEC_BIL_BillPosition hec_gpos_position = new ORM_HEC_BIL_BillPosition();
                        hec_gpos_position.Ext_BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID;
                        hec_gpos_position.Modification_Timestamp     = DateTime.Now;
                        hec_gpos_position.Tenant_RefID = securityTicket.TenantID;
                        hec_gpos_position.PositionFor_Patient_RefID = Parameter.patient_id;

                        hec_gpos_position.Save(Connection, Transaction);

                        ORM_HEC_BIL_BillPosition_BillCode hec_gpos_position_code = new ORM_HEC_BIL_BillPosition_BillCode();
                        hec_gpos_position_code.BillPosition_RefID     = hec_gpos_position.HEC_BIL_BillPositionID;
                        hec_gpos_position_code.IM_BillingCode         = gpos.BillingCode;
                        hec_gpos_position_code.Modification_Timestamp = DateTime.Now;
                        hec_gpos_position_code.PotentialCode_RefID    = gpos.HEC_BIL_PotentialCodeID;
                        hec_gpos_position_code.Tenant_RefID           = securityTicket.TenantID;

                        hec_gpos_position_code.Save(Connection, Transaction);

                        ORM_HEC_CAS_Case_BillCode hec_gpos_case_code = new ORM_HEC_CAS_Case_BillCode();
                        hec_gpos_case_code.HEC_BIL_BillPosition_BillCode_RefID = hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID;
                        hec_gpos_case_code.HEC_CAS_Case_RefID     = new_case.HEC_CAS_CaseID;
                        hec_gpos_case_code.Modification_Timestamp = DateTime.Now;
                        hec_gpos_case_code.Tenant_RefID           = securityTicket.TenantID;

                        hec_gpos_case_code.Save(Connection, Transaction);

                        ORM_BIL_BillPosition_PropertyValue gpos_management_fee_property_value = new ORM_BIL_BillPosition_PropertyValue();
                        gpos_management_fee_property_value.BIL_BillPosition_RefID           = gpos_position.BIL_BillPositionID;
                        gpos_management_fee_property_value.BIL_BillPosition_PropertyValueID = Guid.NewGuid();
                        gpos_management_fee_property_value.Creation_Timestamp     = DateTime.Now;
                        gpos_management_fee_property_value.Modification_Timestamp = DateTime.Now;
                        gpos_management_fee_property_value.PropertyKey            = "mm.doc.connect.management.fee";
                        gpos_management_fee_property_value.PropertyValue          = "waived";
                        gpos_management_fee_property_value.Tenant_RefID           = securityTicket.TenantID;

                        gpos_management_fee_property_value.Save(Connection, Transaction);

                        bill_header.TotalValue_IncludingTax += Convert.ToDecimal(price_value.PriceValue_Amount);
                    }
                }

                bill_header.Save(Connection, Transaction);
                #endregion
            }

            return(returnValue);

            #endregion UserCode
        }
示例#4
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5ME_SL_1047 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();

            //get languages for Tenant
            P_L2LN_GALFTID_1530 langParam = new P_L2LN_GALFTID_1530();
            langParam.Tenant_RefID = securityTicket.TenantID;
            var DBLanguages = cls_Get_All_Languages_ForTenantID.Invoke(Connection, Transaction, langParam, securityTicket).Result;

            foreach (var item in Parameter.Localization)
            {
                //Delete
                if (item.IsDeleted)
                {
                    var localizationQuery = new ORM_HEC_DIA_Diagnosis_Localization.Query();
                    localizationQuery.IsDeleted = false;
                    localizationQuery.HEC_DIA_Diagnosis_LocalizationID = item.LocalizationID;
                    localizationQuery.Diagnosis_RefID = Parameter.DiagnoseID;

                    var localization = ORM_HEC_DIA_Diagnosis_Localization.Query.Search(Connection, Transaction, localizationQuery).SingleOrDefault();

                    if (localization != null)
                    {
                        localization.IsDeleted = true;
                        localization.Save(Connection, Transaction);
                    }
                }
                else
                {
                    var localizationQuery = new ORM_HEC_DIA_Diagnosis_Localization.Query();
                    localizationQuery.IsDeleted = false;
                    localizationQuery.HEC_DIA_Diagnosis_LocalizationID = item.LocalizationID;
                    localizationQuery.Diagnosis_RefID = Parameter.DiagnoseID;

                    var localization = ORM_HEC_DIA_Diagnosis_Localization.Query.Search(Connection, Transaction, localizationQuery).SingleOrDefault();

                    //Edit
                    if (localization != null)
                    {
                        Dict name = new Dict("hec_dia_diagnosis_localizations");
                        for (int i = 0; i < DBLanguages.Length; i++)
                        {
                            name.AddEntry(DBLanguages[i].CMN_LanguageID, item.LocalizationName);
                        }

                        localization.DiagnosisLocalization_Name = name;
                        localization.Save(Connection, Transaction);
                    }
                    else // New
                    {
                        ORM_HEC_DIA_Diagnosis_Localization localizationNew = new ORM_HEC_DIA_Diagnosis_Localization();
                        localizationNew.HEC_DIA_Diagnosis_LocalizationID = item.LocalizationID;
                        Dict name = new Dict("hec_dia_diagnosis_localizations");
                        for (int i = 0; i < DBLanguages.Length; i++)
                        {
                            name.AddEntry(DBLanguages[i].CMN_LanguageID, item.LocalizationName);
                        }

                        localizationNew.DiagnosisLocalization_Name = name;
                        localizationNew.Tenant_RefID       = securityTicket.TenantID;
                        localizationNew.Creation_Timestamp = DateTime.Now;
                        localizationNew.Diagnosis_RefID    = Parameter.DiagnoseID;
                        localizationNew.Save(Connection, Transaction);
                    }
                }
            }

            return(returnValue);

            #endregion UserCode
        }