Exemplo n.º 1
0
        public async Task <List <ConsultationSummary> > assessmentConsultationSummary(string caseId)
        {
            try
            {
                List <ConsultationSummary> ConsultationSummary = new List <ConsultationSummary>();

                PatientEncounter enc = new PatientEncounter();
                if (!string.IsNullOrEmpty(caseId))
                {
                    enc.CaseId        = caseId;
                    enc.EncounterType = Convert.ToString((int)mzk_encountertype.PrimaryAssessment);

                    List <PatientEncounter> listPatEnc = enc.getEncounterDetails(enc).Result;

                    if (listPatEnc.Count > 0)
                    {
                        patientEncounterId = listPatEnc.First <PatientEncounter>().EncounterId;
                    }
                    else
                    {
                        throw new ValidationException("Assessment summary is not available");
                    }
                }
                return(this.getConsultationSummary(patientEncounterId).Result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
0
        public async Task <List <PatientVitals> > getLastRecordedVitals(string caseId, string appointmentId)
        {
            PatientEncounter     patEnc        = new PatientEncounter();
            List <PatientVitals> patientVitals = new List <PatientVitals>();

            if (!string.IsNullOrEmpty(appointmentId))
            {
                patEnc = patEnc.encounterDetails((int)mzk_encountertype.Consultation, "", "", appointmentId).Result;

                if (patEnc != null && !string.IsNullOrEmpty(patEnc.EncounterId))
                {
                    patientVitals = new PatientVitals().getPatientEncounterVitals(null, patEnc.EncounterId, false, false).Result.ToList();
                    if (patientVitals.Count == 0)
                    {
                        patEnc = new PatientEncounter();
                        patEnc = patEnc.encounterDetails((int)mzk_encountertype.Triage, "", "", appointmentId).Result;
                        if (patEnc != null && !string.IsNullOrEmpty(patEnc.EncounterId))
                        {
                            patientVitals = new PatientVitals().getPatientEncounterVitals(null, patEnc.EncounterId, false, false).Result.ToList();
                        }
                    }
                }
            }
            else if (!string.IsNullOrEmpty(caseId))
            {
                patEnc.CaseId        = caseId;
                patEnc.EncounterType = ((int)mzk_encountertype.PrimaryAssessment).ToString();
                List <PatientEncounter> listEnc = null;

                listEnc = patEnc.getEncounterDetails(patEnc).Result;

                if (listEnc != null && listEnc.FirstOrDefault() != null && !string.IsNullOrEmpty(listEnc.First().EncounterId))
                {
                    patientVitals = new PatientVitals().getPatientEncounterVitals(null, listEnc.First().EncounterId, false, false).Result.ToList();
                    if (patientVitals.Count == 0)
                    {
                        patEnc               = new PatientEncounter();
                        patEnc.CaseId        = caseId;
                        patEnc.EncounterType = ((int)mzk_encountertype.Triage).ToString();
                        listEnc              = patEnc.getEncounterDetails(patEnc).Result;

                        if (listEnc != null && listEnc.First() != null && !string.IsNullOrEmpty(listEnc.First().EncounterId))
                        {
                            patientVitals = new PatientVitals().getPatientEncounterVitals(null, listEnc.First().EncounterId, false, false).Result.ToList();
                        }
                    }
                }
            }

            return(patientVitals);
        }
Exemplo n.º 3
0
        public async Task <List <CheifComplaint> > getCheifComplaintFromClinicalTemplate(string caseId, string searchText, string appointmentId)
        {
            List <CheifComplaint> CheifComplaint = new List <CheifComplaint>();

            ClinicalTemplate clinicalTemplate = new ClinicalTemplate();

            string           encounterId = "";
            PatientEncounter patEnc      = new PatientEncounter();

            if (!string.IsNullOrEmpty(appointmentId))
            {
                patEnc = patEnc.encounterDetails((int)mzk_encountertype.Consultation, "", "", appointmentId).Result;

                if (patEnc != null)
                {
                    encounterId = patEnc.EncounterId;
                }
            }
            else if (!string.IsNullOrEmpty(caseId))
            {
                patEnc.CaseId        = caseId;
                patEnc.EncounterType = ((int)mzk_encountertype.PrimaryAssessment).ToString();
                List <PatientEncounter> listEnc = null;

                listEnc = patEnc.getEncounterDetails(patEnc).Result;

                if (listEnc != null && listEnc.FirstOrDefault() != null)
                {
                    encounterId = listEnc.First().EncounterId;
                }
            }

            List <ClinicalTemplateNarration> listNarration = clinicalTemplate.getPatientsClinicalTempalteNarration("", encounterId, "", false, 0, false, searchText);

            foreach (ClinicalTemplateNarration narration in listNarration)
            {
                CheifComplaint model = new CheifComplaint();

                if (!string.IsNullOrEmpty(narration.comments))
                {
                    model.Complaint = narration.comments;
                }

                CheifComplaint.Add(model);
            }


            return(CheifComplaint);
        }
Exemplo n.º 4
0
        public async Task <List <ConsultationSummary> > triageConsultationSummary(string caseId, string cpsaWorkflowId)
        {
            try
            {
                List <ConsultationSummary> ConsultationSummary = new List <ConsultationSummary>();

                PatientEncounter enc = new PatientEncounter();
                if (!string.IsNullOrEmpty(cpsaWorkflowId))
                {
                    patientEncounterId = enc.getEncounterIdByWorkflowId(cpsaWorkflowId);
                    if (string.IsNullOrEmpty(patientEncounterId))
                    {
                        throw new ValidationException("Nursing triage summary is not available");
                    }
                }
                else if (!string.IsNullOrEmpty(caseId))
                {
                    enc.CaseId        = caseId;
                    enc.EncounterType = Convert.ToString((int)mzk_encountertype.Triage);

                    List <PatientEncounter> listPatEnc = enc.getEncounterDetails(enc).Result;

                    if (listPatEnc.Count > 0)
                    {
                        patientEncounterId = listPatEnc.First <PatientEncounter>().EncounterId;
                    }
                    else
                    {
                        throw new ValidationException("Nursing triage summary is not available");
                    }
                }

                if (!string.IsNullOrEmpty(patientEncounterId))
                {
                    return(this.getConsultationSummary(patientEncounterId).Result);
                }

                return(ConsultationSummary);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 5
0
        public async Task <string> AddPatientDisposition(PatientDisposition patientDisposition)
        {
            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();

            xrm.mzk_disposition patientDispositionEntity = new xrm.mzk_disposition();

            if (patientDisposition.Asneeded == "1")
            {
                patientDispositionEntity.mzk_Asneeded = true;
            }

            if (patientDisposition.FollowUp != 0)
            {
                patientDispositionEntity.mzk_FollowUp = new OptionSetValue(patientDisposition.FollowUp);
            }
            if (!string.IsNullOrEmpty(patientDisposition.Comments))
            {
                patientDispositionEntity.mzk_Comments = patientDisposition.Comments;
            }
            if (!string.IsNullOrEmpty(patientDisposition.DescriptionofSickNotes))
            {
                patientDispositionEntity.mzk_DescriptionofSickNotes = patientDisposition.DescriptionofSickNotes;
            }

            if (!string.IsNullOrEmpty(patientDisposition.EncounterId))
            {
                patientDispositionEntity.mzk_EncounterId = new EntityReference(xrm.mzk_patientencounter.EntityLogicalName, new Guid(patientDisposition.EncounterId));

                PatientEncounter encounter = new PatientEncounter();
                encounter.EncounterId = patientDisposition.EncounterId;
                patientDispositionEntity.mzk_customer = new EntityReference("contact", new Guid(encounter.getEncounterDetails(encounter).Result.ToList().First <PatientEncounter>().PatientId));
            }

            if (patientDisposition.SickStartDate != DateTime.MinValue)
            {
                patientDispositionEntity.mzk_SickStartDate = patientDisposition.SickStartDate;
            }

            if (patientDisposition.SickEndDate != DateTime.MinValue)
            {
                patientDispositionEntity.mzk_SickEndDate = patientDisposition.SickEndDate;
            }

            if (!string.IsNullOrEmpty(patientDisposition.Notes))
            {
                patientDispositionEntity.mzk_Notes = patientDisposition.Notes;
            }

            if (patientDisposition.OutComeValue != 0)
            {
                patientDispositionEntity.mzk_Outcome = new OptionSetValue(patientDisposition.OutComeValue);
            }

            if (patientDisposition.PartnerHospitalId != null && patientDisposition.PartnerHospitalId != string.Empty && patientDisposition.PartnerHospitalId != "0")
            {
                patientDispositionEntity.Attributes["mzk_partnerhospitalid"] = new EntityReference("mzk_hospital", new Guid(patientDisposition.PartnerHospitalId));
            }
            Id = Convert.ToString(entityRepository.CreateEntity(patientDispositionEntity));

            return(Id.ToString());
        }
Exemplo n.º 6
0
        private async Task <ConsultationSummary> getConsultationSummaryModel(List <PatientEncounter> listPatientEncounter, bool isStartEncounter = false)
        {
            var    json = string.Empty;
            string triagePatientEncounterId = string.Empty;
            ConsultationSummary model       = new ConsultationSummary();

            string patientEncounterId  = listPatientEncounter[0].EncounterId;
            string EncounterTemplateId = listPatientEncounter[0].EncounterTemplateId;

            model.listPatientEncounter = listPatientEncounter;
            patientCaseId            = model.listPatientEncounter[0].CaseId;
            patientId                = new PatientCase().getCaseDetails(patientCaseId).Result.PatientId;
            model.patientEncounterId = patientEncounterId;
            model.patientId          = patientId;
            model.patientCaseId      = patientCaseId;

            model.patient = new Patient().getPatientDetails(patientId).Result;

            model.listVisitReason = new PatientVisit().getVisitReason("", "", patientCaseId, model.listPatientEncounter[0].AppointmentId).Result.ToList();

            model.listCheifComplaint = new List <CheifComplaint>();//new CheifComplaint().getCheifComplaint(null, patientEncounterId, 0, "").Result.ToList();

            model.listPatientAllergy = new PatientAllergy().getPatientAllergies(patientId, null, null, DateTime.MinValue, DateTime.MinValue, true).Result.ToList();

            model.listPatientVitals = new PatientVitals().getPatientEncounterVitals(null, patientEncounterId, false, false, "", false).Result.ToList();

            if (model.listPatientVitals.Count == 0 && model.listPatientEncounter[0].EncounterType != "1")
            {
                PatientEncounter triageEncounter = new PatientEncounter();
                triageEncounter.CaseId        = patientCaseId;
                triageEncounter.EncounterType = "1";

                List <PatientEncounter> triageEncounterList = triageEncounter.getEncounterDetails(triageEncounter).Result.ToList();

                if (triageEncounterList.Count > 0)
                {
                    triagePatientEncounterId = triageEncounterList.First <PatientEncounter>().EncounterId;
                    model.listPatientVitals  = new PatientVitals().getPatientEncounterVitals(null, triagePatientEncounterId, false, false, "", false).Result.ToList();
                }
            }

            if (!isStartEncounter && listPatientEncounter[0].EncounterType != ((int)mzk_encountertype.Triage).ToString())
            {
                EntityCollection patientOrderDetailsCollection = new PatientOrder().getPatientOrderDetails(patientEncounterId);

                if (patientOrderDetailsCollection != null)
                {
                    model.listPatientRadiologyOrder = new PatientRadiologyOrder().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.Radiology).ToString()).ToList()).Result.ToList();
                    model.listPatientLabOrder       = new PatientLabOrder().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.Lab).ToString()).ToList()).Result.ToList();
                    model.listPatientSpecialTest    = new PatientSpecialTest().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.SpecialTest).ToString()).ToList()).Result.ToList();
                    model.listPatientTherapy        = new List <PatientTherapy>();
                    model.listPatientReferral       = new PatientReferralOrder().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.Referral).ToString()).ToList()).Result.ToList();
                    model.listPatientProcedure      = new PatientProcedure().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.Procedure).ToString()).ToList()).Result.ToList();
                    model.listPatientMedication     = new PatientMedication().getPatientOrder(patientOrderDetailsCollection.Entities.Where(item => (item["mzk_type"] as OptionSetValue).Value.ToString() == ((int)mzk_patientordermzk_Type.Medication).ToString()).ToList()).Result.ToList();
                }
            }
            else
            {
                model.listPatientRadiologyOrder = new List <PatientRadiologyOrder>();
                model.listPatientLabOrder       = new List <PatientLabOrder>();
                model.listPatientSpecialTest    = new List <PatientSpecialTest>();
                model.listPatientTherapy        = new List <PatientTherapy>();
                model.listPatientReferral       = new List <PatientReferralOrder>();
                model.listPatientProcedure      = new List <PatientProcedure>();
                model.listPatientMedication     = new List <PatientMedication>();
            }

            if (!isStartEncounter && listPatientEncounter[0].EncounterType != ((int)mzk_encountertype.Triage).ToString())
            {
                model.listPatientDiagnosis = new PatientDiagnosis().getPatientDiagnosis(patientEncounterId, null, null, DateTime.MinValue, DateTime.MinValue, 0, "").Result.ToList();
            }
            else
            {
                model.listPatientDiagnosis = new List <PatientDiagnosis>();
            }
            //   model.listPatientProblem = new PatientProblem().getPatientProblems(patientId, true, null, null, DateTime.MinValue, DateTime.MinValue).Result.ToList();
            model.listPatientProblem = new List <PatientProblem>();

            if (!isStartEncounter && listPatientEncounter[0].EncounterType != ((int)mzk_encountertype.Triage).ToString())
            {
                model.listPatientDisposition = new PatientDisposition().getPatientDisposition(patientEncounterId, null, null, DateTime.MinValue, DateTime.MinValue).Result.ToList();
            }
            else
            {
                model.listPatientDisposition = new List <PatientDisposition>();
            }

            if (!isStartEncounter)
            {
                model.listClinicalTemplate = new ClinicalTemplate().getPatientClinicalTemplates(patientId, patientEncounterId).Result;
            }
            else
            {
                model.listClinicalTemplate = new List <ClinicalTemplate>();
            }

            if (listPatientEncounter[0].EncounterType != ((int)mzk_encountertype.Triage).ToString())
            {
                model.listProgressNotes = new Notes().getCaseNotes(patientCaseId).Result;
            }
            else
            {
                model.listProgressNotes = new List <Notes>();
            }

            model.SummaryUpdatedDate = DateTime.Now;
            json = JsonConvert.SerializeObject(model);
            string compressJson = string.Empty;

            compressJson = StringHelper.Compress(json);

            new PatientEncounter().updateSummaryJson(patientEncounterId, compressJson);

            return(model);
        }
Exemplo n.º 7
0
        public async Task <List <ConsultationSummary> > getConsultationSummary(string patientEncounterId, bool summaryUpdated = false, bool isStartEncounter = false)
        {
            try
            {
                var json = string.Empty;

                List <ConsultationSummary> ConsultationSummary = new List <ConsultationSummary>();
                ConsultationSummary        model = null;

                PatientEncounter encounter = new PatientEncounter();
                encounter.EncounterId = patientEncounterId;
                List <PatientEncounter> listPatientEncounter = encounter.getEncounterDetails(encounter).Result;

                if (listPatientEncounter != null)
                {
                    if (summaryUpdated == true)
                    {
                        model = await this.getConsultationSummaryModel(listPatientEncounter, isStartEncounter);

                        if (model != null)
                        {
                            ConsultationSummary.Add(model);
                        }
                    }
                    else
                    {
                        if (listPatientEncounter.Count > 0)
                        {
                            json = listPatientEncounter[0].SummaryJson;
                            if (json != null)
                            {
                                string decompressjson = string.Empty;
                                decompressjson = StringHelper.Decompress(json);
                                model          = JsonConvert.DeserializeObject <ConsultationSummary>(decompressjson);
                                ConsultationSummary.Add(model);
                            }
                            else
                            {
                                model = await this.getConsultationSummaryModel(listPatientEncounter, isStartEncounter);

                                if (model != null)
                                {
                                    ConsultationSummary.Add(model);
                                }
                            }
                        }
                        else
                        {
                            model = await this.getConsultationSummaryModel(listPatientEncounter, isStartEncounter);

                            if (model != null)
                            {
                                ConsultationSummary.Add(model);
                            }
                        }
                    }
                }
                else
                {
                    throw new ValidationException("Unable to find Patient Encounter");
                }

                return(ConsultationSummary);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 8
0
        public async Task <string> addPatientOrder(PatientTherapy patientTherapy)
        {
            SoapEntityRepository entityRepository   = SoapEntityRepository.GetService();
            mzk_patientorder     patientOrderEntity = new mzk_patientorder();

            try
            {
                patientOrderEntity.mzk_appointable = true;

                if (!string.IsNullOrEmpty(patientTherapy.appointmentId))
                {
                    patientOrderEntity.mzk_orderingappointment    = new EntityReference("mzk_patientorder", new Guid(patientTherapy.appointmentId));
                    patientOrderEntity.mzk_fulfillmentappointment = new EntityReference("mzk_patientorder", new Guid(patientTherapy.appointmentId));
                }

                if (!string.IsNullOrEmpty(patientTherapy.Therapy))
                {
                    patientOrderEntity.Attributes["mzk_productid"] = new EntityReference("product", new Guid(patientTherapy.Therapy));
                }
                if (!string.IsNullOrEmpty(patientTherapy.Frequency))
                {
                    patientOrderEntity.Attributes["mzk_frequencyid"] = new EntityReference("mzk_ordersetup", new Guid(patientTherapy.Frequency));
                }
                if (!string.IsNullOrEmpty(patientTherapy.Description))
                {
                    patientOrderEntity.Attributes["mzk_comments"] = patientTherapy.Description;
                }
                if (!string.IsNullOrEmpty(patientTherapy.EncounterId))
                {
                    patientOrderEntity.Attributes["mzk_patientencounterid"] = new EntityReference("mzk_patientencounter", new Guid(patientTherapy.EncounterId));
                    PatientEncounter encounter = new PatientEncounter();
                    encounter.EncounterId = patientTherapy.EncounterId;
                    PatientId             = encounter.getEncounterDetails(encounter).Result.ToList().First <PatientEncounter>().PatientId;
                    patientOrderEntity.Attributes["mzk_customer"] = new EntityReference("contact", new Guid(PatientId));
                }

                patientOrderEntity.Attributes["mzk_orderdate"]       = DateTime.Now.Date;
                patientOrderEntity.Attributes["mzk_fulfillmentdate"] = patientOrderEntity.Attributes["mzk_orderdate"];

                if (patientTherapy.clinicRecId > 0)
                {
                    patientOrderEntity.Attributes["mzk_axclinicrefrecid"] = Convert.ToDecimal(patientTherapy.clinicRecId);
                }

                if (!string.IsNullOrEmpty(patientTherapy.orderingLocationId))
                {
                    patientOrderEntity.Attributes["mzk_orderinglocation"] = new EntityReference("mzk_organizationalunit", new Guid(patientTherapy.orderingLocationId));
                }

                patientOrderEntity.Attributes["mzk_type"]        = new OptionSetValue(Convert.ToInt32(mzk_patientordermzk_Type.Thrapy));
                patientOrderEntity.Attributes["mzk_orderstatus"] = new OptionSetValue((int)mzk_orderstatus.Ordered);
                Id = Convert.ToString(entityRepository.CreateEntity(patientOrderEntity));

                if (AppSettings.GetByKey("OperationsIntegration").ToLower() == true.ToString().ToLower())
                {
                    if (!string.IsNullOrEmpty(patientTherapy.EncounterId))
                    {
                        await this.createCaseTrans(patientTherapy.EncounterId, Id, patientTherapy.Therapy, (mzk_orderstatus)patientOrderEntity.mzk_OrderStatus.Value);
                    }
                }
                return(Id.ToString());
            }
            catch (Exception ex)
            {
                if (!string.IsNullOrEmpty(OrderNumber))
                {
                    entityRepository.DeleteEntity(mzk_patientorder.EntityLogicalName, new Guid(OrderNumber));
                }

                throw ex;
            }
        }
Exemplo n.º 9
0
        public async Task <bool> updateVisitReason(string encounterId, string visitReason)
        {
            try
            {
                PatientEncounter patEnc = new PatientEncounter();
                patEnc.EncounterId = encounterId;

                patEnc = patEnc.getEncounterDetails(patEnc).Result.First();

                string caseId        = string.Empty;
                string appointmentId = string.Empty;

                if (patEnc != null)
                {
                    if (!string.IsNullOrEmpty(patEnc.AppointmentId))
                    {
                        appointmentId = patEnc.AppointmentId;
                    }
                    else if (!string.IsNullOrEmpty(patEnc.CaseId))
                    {
                        caseId = patEnc.CaseId;
                    }
                }

                SoapEntityRepository repo = SoapEntityRepository.GetService();

                QueryExpression query = new QueryExpression(mzk_patientencounter.EntityLogicalName);
                query.ColumnSet = new ColumnSet(false);

                if (!string.IsNullOrEmpty(encounterId))
                {
                    query.Criteria.AddCondition("mzk_patientencounterid", ConditionOperator.Equal, new Guid(encounterId));
                }

                LinkEntity workOrder = new LinkEntity(mzk_patientencounter.EntityLogicalName, msdyn_workorder.EntityLogicalName, "mzk_workorder", "msdyn_workorderid", JoinOperator.Inner);

                if (!string.IsNullOrEmpty(caseId))
                {
                    workOrder.LinkCriteria.AddCondition("msdyn_servicerequest", ConditionOperator.Equal, new Guid(caseId));
                }
                if (!string.IsNullOrEmpty(appointmentId))
                {
                    workOrder.LinkCriteria.AddCondition("msdyn_workorderid", ConditionOperator.Equal, new Guid(appointmentId));
                }

                workOrder.Columns = new ColumnSet("msdyn_workordersummary");

                EntityCollection entityCollection = repo.GetEntityCollection(query);

                foreach (Entity entity in entityCollection.Entities)
                {
                    if (!string.IsNullOrEmpty(visitReason))
                    {
                        entity.Attributes["msdyn_workordersummary"] = visitReason;
                    }

                    repo.UpdateEntity(entity);
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 10
0
        //public async Task<List<PatientVisit>> getVisitReason(long patientRecId, string encounterId)
        //{
        //    PatientVisitRepository repo = new PatientVisitRepository();

        //    List<PatientVisit> patientVisit = new List<PatientVisit>();

        //    PatientEncounter patEnc = new PatientEncounter();
        //    patEnc.EncounterId = encounterId;

        //    patEnc = patEnc.encounterDetails(patEnc).Result.First();

        //    Guid caseGuid = Guid.Empty;
        //    long appointmentrecId = 0;

        //    if(patEnc != null)
        //    {
        //        if(patEnc.AppointmentRefRecId > 0)
        //        {
        //            appointmentrecId = patEnc.AppointmentRefRecId;
        //        }
        //        else if (!string.IsNullOrEmpty(patEnc.CaseId))
        //        {
        //            caseGuid = new Guid(patEnc.CaseId);
        //        }
        //    }
        //    HMPatientVisitContract[] contractList = null;
        //    //TODO: CRM implementation: Visit Reason


        //    if(contractList != null)
        //    {
        //        foreach (HMPatientVisitContract contract in contractList)
        //        {
        //            PatientVisit model = new PatientVisit();

        //            if (!string.IsNullOrEmpty(contract.parmVisitReason))
        //            {
        //                model.VisitReason = contract.parmVisitReason;
        //            }

        //            patientVisit.Add(model);
        //        }
        //    }

        //    return patientVisit;
        //}

        //public async Task<bool> updateVisitReason(string encounterId, string visitReason)
        //{
        //    try
        //    {
        //        PatientVisitRepository repo = new PatientVisitRepository();

        //        PatientEncounter patEnc = new PatientEncounter();
        //        patEnc.EncounterId = encounterId;

        //        patEnc = patEnc.encounterDetails(patEnc).Result.First();

        //        Guid caseGuid = Guid.Empty;
        //        long appointmentrecId = 0;

        //        if (patEnc != null)
        //        {
        //            if (patEnc.AppointmentRefRecId > 0)
        //            {
        //                appointmentrecId = patEnc.AppointmentRefRecId;
        //            }
        //            else if (!string.IsNullOrEmpty(patEnc.CaseId))
        //            {
        //                caseGuid = new Guid(patEnc.CaseId);
        //            }
        //        }

        //        return repo.updateVisitReason(caseGuid, appointmentrecId, visitReason);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //}

        public async Task <List <PatientVisit> > getVisitReason(string customerId, string encounterId, string caseId = "", string appointmentId = "")
        {
            try
            {
                PatientVisit        patientVisit;
                Guid                caseGuid        = Guid.Empty;
                List <PatientVisit> visitReasonList = new List <PatientVisit>();

                if (!string.IsNullOrEmpty(encounterId))
                {
                    PatientEncounter patEnc = new PatientEncounter();
                    patEnc.EncounterId = encounterId;

                    patEnc = patEnc.getEncounterDetails(patEnc).Result.First();

                    if (patEnc != null)
                    {
                        if (!string.IsNullOrEmpty(patEnc.AppointmentId))
                        {
                            appointmentId = patEnc.AppointmentId;
                        }
                        else if (!string.IsNullOrEmpty(patEnc.CaseId))
                        {
                            caseId = patEnc.CaseId;
                        }
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(appointmentId) && !string.IsNullOrEmpty(caseId))
                    {
                        caseGuid = new Guid(caseId);
                    }
                }

                SoapEntityRepository repo = SoapEntityRepository.GetService();

                QueryExpression query = new QueryExpression(msdyn_workorder.EntityLogicalName);
                query.ColumnSet = new ColumnSet("msdyn_workordersummary");

                if (!string.IsNullOrEmpty(customerId))
                {
                    query.Criteria.AddCondition("mzk_customer", ConditionOperator.Equal, new Guid(customerId));
                }

                if (caseGuid != Guid.Empty)
                {
                    query.Criteria.AddCondition("msdyn_servicerequest", ConditionOperator.Equal, caseGuid);
                }

                if (!string.IsNullOrEmpty(appointmentId))
                {
                    LinkEntity apptEntity = new LinkEntity(msdyn_workorder.EntityLogicalName, mzk_patientappointment.EntityLogicalName, "msdyn_workorderid", "mzk_workorderid", JoinOperator.Inner);

                    apptEntity.LinkCriteria.AddCondition("mzk_patientappointmentid", ConditionOperator.Equal, new Guid(appointmentId));

                    query.LinkEntities.Add(apptEntity);
                }

                EntityCollection entityCollection = repo.GetEntityCollection(query);

                foreach (Entity entity in entityCollection.Entities)
                {
                    patientVisit = new PatientVisit();

                    if (entity.Attributes.Contains("msdyn_workordersummary"))
                    {
                        patientVisit.VisitReason = entity.Attributes["msdyn_workordersummary"].ToString();
                    }
                    visitReasonList.Add(patientVisit);
                }

                return(visitReasonList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 11
0
        public async Task <string> AddPatientDiagnosis(PatientDiagnosis patientDiagnosis)
        {
            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
            Entity patientDiagnosisEntity         = new Entity("mzk_patientencounterdiagnosis");

            if (patientDiagnosis.isOtherDiagnosis == true)
            {
                Concept concept = new Concept();
                concept.ConceptType = ((int)mzk_conceptmzk_Category.Diagnosis).ToString();
                string OtherDiagnosisid = string.Empty;
                if (!string.IsNullOrEmpty(patientDiagnosis.OtherDiagnosis))
                {
                    concept.name          = patientDiagnosis.OtherDiagnosis;
                    concept.ConceptNumber = patientDiagnosis.OtherDiagnosis;
                }
                else
                {
                    throw new ValidationException("Other Diagnosis  must be filled");
                }
                concept.addConcept(concept);
                patientDiagnosisEntity.Attributes["mzk_isother"] = patientDiagnosis.isOtherDiagnosis;
                if (!string.IsNullOrEmpty(patientDiagnosis.OtherDiagnosis))
                {
                    patientDiagnosisEntity.Attributes["mzk_Other"] = patientDiagnosis.OtherDiagnosis;
                }
            }

            if (patientDiagnosis.DiagnosisId != null && patientDiagnosis.DiagnosisId != string.Empty)
            {
                patientDiagnosisEntity.Attributes["mzk_diagnosisconceptid"] = new EntityReference("mzk_concept", new Guid(patientDiagnosis.DiagnosisId));
            }
            if (patientDiagnosis.EncounterId != null && patientDiagnosis.EncounterId != string.Empty)
            {
                patientDiagnosisEntity.Attributes["mzk_patientencounterid"] = new EntityReference("mzk_patientencounter", new Guid(patientDiagnosis.EncounterId));
                PatientEncounter encounter = new PatientEncounter();
                encounter.EncounterId = patientDiagnosis.EncounterId;
                PatientId             = encounter.getEncounterDetails(encounter).Result.ToList().First <PatientEncounter>().PatientId;
                if (!string.IsNullOrEmpty(PatientId))
                {
                    patientDiagnosisEntity.Attributes["mzk_customerid"] = new EntityReference("contact", new Guid(PatientId));
                }
            }
            if (patientDiagnosis.OnsetNotes != null && patientDiagnosis.OnsetNotes != string.Empty)
            {
                patientDiagnosisEntity.Attributes["mzk_comments"] = patientDiagnosis.OnsetNotes;
            }
            if (patientDiagnosis.OnsetDate != null && patientDiagnosis.OnsetDate != DateTime.MinValue)
            {
                patientDiagnosisEntity.Attributes["mzk_onsetdate"] = Convert.ToDateTime(patientDiagnosis.OnsetDate);
            }
            if (patientDiagnosis.ProblemType != 0 && patientDiagnosis.ProblemType.ToString() != string.Empty)
            {
                patientDiagnosisEntity.Attributes["mzk_problemtype"] = new OptionSetValue(patientDiagnosis.ProblemType);
            }
            if (patientDiagnosis.Chronicity != 0 && patientDiagnosis.Chronicity.ToString() != string.Empty)
            {
                patientDiagnosisEntity.Attributes["mzk_chronicity"] = new OptionSetValue(patientDiagnosis.Chronicity);
            }

            if (!string.IsNullOrEmpty(patientDiagnosis.IsProblem) && patientDiagnosis.IsProblem == "1")
            {
                patientDiagnosisEntity.Attributes["mzk_isproblem"] = true;
            }
            else
            {
                patientDiagnosisEntity.Attributes["mzk_isproblem"] = false;
            }

            patientDiagnosisEntity.Attributes["mzk_status"] = new OptionSetValue(1);



            Id = Convert.ToString(entityRepository.CreateEntity(patientDiagnosisEntity));

            return(Id);
        }
Exemplo n.º 12
0
        public async Task <List <Notes> > getNotes(Notes notes)
        {
            List <Notes> PatientNotes = new List <Notes>();

            xrm.Annotation patientOrderEntity = new xrm.Annotation();

            QueryExpression  query       = new QueryExpression(Annotation.EntityLogicalName);
            FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.And);
            //check if it is case
            PatientCase pcase = new PatientCase();

            if (!string.IsNullOrEmpty(notes.ObjectId))
            {
                if (pcase.getCaseDetails(notes.ObjectId).Result.CaseNumber != null)
                {
                    #region Case
                    PatientEncounter encounter = new PatientEncounter();
                    encounter.CaseId = notes.ObjectId;
                    List <PatientEncounter> listEncounterId = encounter.getEncounterDetails(encounter).Result;
                    if (listEncounterId.Count > 0)
                    {
                        for (int entityCount = 0; entityCount < listEncounterId.Count; entityCount++)
                        {
                            #region Notes
                            QueryExpression  querycase       = new QueryExpression(Annotation.EntityLogicalName);
                            FilterExpression childFiltercase = querycase.Criteria.AddFilter(LogicalOperator.And);
                            childFiltercase.AddCondition("objectid", ConditionOperator.Equal, new Guid(listEncounterId[entityCount].EncounterId));
                            //Entity :: Notes
                            querycase.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("objectid",
                                                                                        "subject",
                                                                                        "notetext",
                                                                                        "createdby", "createdon", "modifiedon", "modifiedby");
                            OrderExpression orderby = new OrderExpression();
                            orderby.AttributeName = "createdon";
                            orderby.OrderType     = OrderType.Descending;
                            querycase.Orders.Add(orderby);

                            #endregion
                            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
                            EntityCollection     entitycollection = entityRepository.GetEntityCollection(querycase);

                            foreach (Entity entity in entitycollection.Entities)
                            {
                                Notes model = new Notes();

                                if (entity.Attributes.Contains("objectid"))
                                {
                                    model.ObjectId = ((EntityReference)entity.Attributes["objectid"]).Id.ToString();
                                }

                                if (entity.Attributes.Contains("subject"))
                                {
                                    model.Subject = entity.Attributes["subject"].ToString();
                                }

                                if (entity.Attributes.Contains("notetext"))
                                {
                                    model.NoteText = entity.Attributes["notetext"].ToString();
                                }

                                if (entity.Attributes.Contains("createdon"))
                                {
                                    model.CreatedOn = Convert.ToDateTime(entity.Attributes["createdon"]);
                                }

                                if (entity.Attributes.Contains("createdby"))
                                {
                                    model.CreatedBy = ((EntityReference)entity.Attributes["createdby"]).Name;
                                }

                                model.Id = entity.Id.ToString();

                                PatientNotes.Add(model);
                            }
                        }
                    }
                    #endregion
                }
                else
                {
                    #region Encounter
                    if (!string.IsNullOrEmpty(notes.Id))
                    {
                        childFilter.AddCondition("annotationid", ConditionOperator.Equal, new Guid(notes.Id));
                    }

                    if (!string.IsNullOrEmpty(notes.ObjectId))
                    {
                        childFilter.AddCondition("objectid", ConditionOperator.Equal, new Guid(notes.ObjectId));
                    }

                    //Entity :: Notes
                    query.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("objectid",
                                                                            "subject",
                                                                            "notetext",
                                                                            "createdby", "createdon", "modifiedon", "modifiedby");

                    OrderExpression orderby = new OrderExpression();
                    orderby.AttributeName = "createdon";
                    orderby.OrderType     = OrderType.Descending;

                    query.Orders.Add(orderby);

                    if (string.IsNullOrEmpty(notes.ObjectId) && string.IsNullOrEmpty(notes.Id))
                    {
                        throw new ValidationException("Parameter missing");
                    }


                    SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
                    EntityCollection     entitycollection = entityRepository.GetEntityCollection(query);

                    foreach (Entity entity in entitycollection.Entities)
                    {
                        Notes model = new Notes();

                        if (entity.Attributes.Contains("objectid"))
                        {
                            model.ObjectId = ((EntityReference)entity.Attributes["objectid"]).Id.ToString();
                        }

                        if (entity.Attributes.Contains("subject"))
                        {
                            model.Subject = entity.Attributes["subject"].ToString();
                        }

                        if (entity.Attributes.Contains("notetext"))
                        {
                            model.NoteText = entity.Attributes["notetext"].ToString();
                        }

                        if (entity.Attributes.Contains("createdon"))
                        {
                            model.CreatedOn = Convert.ToDateTime(entity.Attributes["createdon"]);
                        }

                        if (entity.Attributes.Contains("createdby"))
                        {
                            model.CreatedBy = ((EntityReference)entity.Attributes["createdby"]).Name;
                        }

                        model.Id = entity.Id.ToString();

                        PatientNotes.Add(model);
                    }
                    #endregion
                }
            }



            return(PatientNotes);
        }
Exemplo n.º 13
0
        public async Task <string> addPatientOrder(PatientReferralOrder _patientReferral)
        {
            SoapEntityRepository entityRepository = SoapEntityRepository.GetService();
            mzk_patientorder     referralEntity   = new mzk_patientorder();

            try
            {
                referralEntity.mzk_appointable = true;

                if (!string.IsNullOrEmpty(_patientReferral.appointmentId))
                {
                    referralEntity.mzk_orderingappointment    = new EntityReference("mzk_patientorder", new Guid(_patientReferral.appointmentId));
                    referralEntity.mzk_fulfillmentappointment = new EntityReference("mzk_patientorder", new Guid(_patientReferral.appointmentId));
                }

                if (!string.IsNullOrEmpty(_patientReferral.PatientId))
                {
                    referralEntity.Attributes["mzk_customer"] = new EntityReference("contact", new Guid(_patientReferral.PatientId));
                }

                if (!string.IsNullOrEmpty(_patientReferral.EncounterId))
                {
                    referralEntity.Attributes["mzk_patientencounterid"] = new EntityReference("mzk_patientencounter", new Guid(_patientReferral.EncounterId));
                    PatientEncounter encounter = new PatientEncounter();
                    encounter.EncounterId = _patientReferral.EncounterId;
                    //PatientId = new PatientCase().getCaseDetails(encounter.encounterDetails(encounter).Result.ToList().First<PatientEncounter>().CaseId).Result.PatientId;
                    PatientId = encounter.getEncounterDetails(encounter).Result.ToList().First <PatientEncounter>().PatientId;
                    referralEntity.Attributes["mzk_customer"] = new EntityReference("contact", new Guid(PatientId));
                }

                if (!string.IsNullOrEmpty(_patientReferral.Diagnosis))
                {
                    referralEntity.Attributes["mzk_associateddiagnosisid"] = new EntityReference("mzk_concept", new Guid(_patientReferral.Diagnosis));
                }

                if (_patientReferral.clinicRecId > 0)
                {
                    referralEntity.Attributes["mzk_axclinicrefrecid"] = Convert.ToDecimal(_patientReferral.clinicRecId);
                }

                if (!string.IsNullOrEmpty(_patientReferral.orderingLocationId))
                {
                    referralEntity.Attributes["mzk_orderinglocation"] = new EntityReference("mzk_organizationalunit", new Guid(_patientReferral.orderingLocationId));
                }

                if (!string.IsNullOrEmpty(_patientReferral.ReferralComment))
                {
                    referralEntity.Attributes["mzk_comments"] = _patientReferral.ReferralComment;
                }

                if (_patientReferral.PatientAware.ToString() != "1")
                {
                    referralEntity.Attributes["mzk_patientaware"] = true;
                }
                else
                {
                    referralEntity.Attributes["mzk_patientaware"] = false;
                }

                if (_patientReferral.Apptrecommendation != 0)
                {
                    referralEntity.Attributes["mzk_appointmentrecommendation"] = new OptionSetValue(_patientReferral.Apptrecommendation);
                }

                //for ReferralType Consultation, Consultation & Treatment and Transfer of Care
                if (_patientReferral.ReferralType != 0)
                {
                    referralEntity.Attributes["mzk_referraltype"] = new OptionSetValue(_patientReferral.ReferralType);
                }


                //for Category Internal /External
                if (_patientReferral.Category != 0 && _patientReferral.Category == Convert.ToInt32(mzk_patientordermzk_ReferralCategory.Internal))
                {
                    referralEntity.Attributes["mzk_referralcategory"] = new OptionSetValue(Convert.ToInt32(_patientReferral.Category));

                    if (!string.IsNullOrEmpty(_patientReferral.ReferralId))
                    {
                        referralEntity.Attributes["mzk_referraltoid"] = new EntityReference("systemuser", new Guid(_patientReferral.ReferralId));
                    }
                }
                else
                {
                    if (_patientReferral.Category != 0 && _patientReferral.Category == Convert.ToInt32(mzk_patientordermzk_ReferralCategory.External))
                    {
                        referralEntity.Attributes["mzk_referralcategory"] = new OptionSetValue(Convert.ToInt32(_patientReferral.Category));

                        if (!string.IsNullOrEmpty(_patientReferral.ReferralId))
                        {
                            referralEntity.Attributes["mzk_referraltoexternalid"] = new EntityReference("mzk_referringphysician", new Guid(_patientReferral.ReferralId));
                        }
                    }
                }

                if (!string.IsNullOrEmpty(_patientReferral.SpecialtyId))
                {
                    referralEntity.Attributes["mzk_specialityid"] = new EntityReference("characteristic", new Guid(_patientReferral.SpecialtyId));

                    var specialityNameList = new List <string> {
                        _patientReferral.SpecialtyId
                    };

                    Speciality speciality = new Speciality();

                    referralEntity.Attributes["mzk_specialtyname"] = speciality.getSpecialityList(specialityNameList).First <Speciality>().Description;
                }

                if (!string.IsNullOrEmpty(_patientReferral.HospitalId) && _patientReferral.HospitalId != "0")
                {
                    referralEntity.Attributes["mzk_hospitalid"] = new EntityReference("mzk_hospital", new Guid(_patientReferral.HospitalId));
                }

                referralEntity.Attributes["mzk_type"]        = new OptionSetValue(Convert.ToInt32(mzk_patientordermzk_Type.Referral));
                referralEntity.Attributes["mzk_orderstatus"] = new OptionSetValue((int)mzk_orderstatus.Ordered);

                referralEntity.Attributes["mzk_orderdate"]       = DateTime.Now.Date;
                referralEntity.Attributes["mzk_fulfillmentdate"] = referralEntity.Attributes["mzk_orderdate"];


                Id = Convert.ToString(entityRepository.CreateEntity(referralEntity));

                if (!string.IsNullOrEmpty(_patientReferral.EncounterId) && !string.IsNullOrEmpty(_patientReferral.SpecialtyId))
                {
                    mzk_casetype caseType = PatientCase.getCaseType(_patientReferral.EncounterId);

                    if (caseType == mzk_casetype.Emergency && _patientReferral.Category == Convert.ToInt32(mzk_patientordermzk_ReferralCategory.Internal))
                    {
                        List <string> specialtyIdList = new List <string>();
                        specialtyIdList.Add(_patientReferral.SpecialtyId);

                        Speciality sp = new Speciality().getSpecialityList(specialtyIdList).FirstOrDefault();

                        if (AppSettings.GetByKey("OperationsIntegration").ToLower() == true.ToString().ToLower())
                        {
                            if (sp != null && sp.SpecialityRefRecId > 0)
                            {
                                await this.createCaseTrans(_patientReferral.EncounterId, Id, "", mzk_orderstatus.Ordered, 1, "", HMUrgency.None, "", "", "", sp.SpecialityRefRecId);
                            }
                        }
                    }
                }

                return(Id.ToString());
            }
            catch (Exception ex)
            {
                if (!string.IsNullOrEmpty(Id))
                {
                    entityRepository.DeleteEntity(mzk_patientorder.EntityLogicalName, new Guid(Id));
                }

                throw ex;
            }
        }