public static PregnancyDetails GetPregnancy(IDashboardRepository repo, string patientDfn, string pregIen) { PregnancyDetails returnVal = null; // *** Get pregnancy *** PregnancyListResult pregResult = repo.Pregnancy.GetPregnancies(patientDfn, pregIen); // *** Check result *** if (pregResult.Success) { if (pregResult.Pregnancies != null) { if (pregResult.Pregnancies.Count == 1) { returnVal = pregResult.Pregnancies[0]; } } } // *** Also, get lmp, fetus count *** if (returnVal != null) { PregnancyDetails tempPreg = GetPregnancyObservationData(repo, patientDfn, pregIen); returnVal.Lmp = tempPreg.Lmp; returnVal.LmpDateType = tempPreg.LmpDateType; returnVal.FetusBabyCount = tempPreg.FetusBabyCount; // *** Will return EDD Basis and Is Final *** returnVal.EddBasis = tempPreg.EddBasis; returnVal.EddIsFinal = tempPreg.EddIsFinal; } return(returnVal); }
//private IDashboardRepository DashboardRepository { get; set; } //public PregnancyUtilities(IDashboardRepository repo) //{ // this.DashboardRepository = repo; //} public static PregnancyDetails GetWorkingPregnancy(IDashboardRepository repo, string dfn, string pregIen) { PregnancyDetails returnVal = null; // *** First try the pregnancy ien passed in *** if (!string.IsNullOrWhiteSpace(pregIen)) { PregnancyListResult pregResult = repo.Pregnancy.GetPregnancies(dfn, pregIen); if (pregResult.Success) { if (pregResult.Pregnancies != null) { if (pregResult.Pregnancies.Count > 0) { returnVal = pregResult.Pregnancies[0]; } } } } // *** Then try to get the current/most-recent *** if (returnVal == null) { PregnancyResult pregResult = repo.Pregnancy.GetCurrentOrMostRecentPregnancy(dfn); if (pregResult.Success) { returnVal = pregResult.Pregnancy; } } return(returnVal); }
public static BrokerOperationResult UpdateNextDates(IDashboardRepository repo, string patientDfn, string pregnancyIen) { BrokerOperationResult result = new BrokerOperationResult(); // *** First get the pregnancy *** PregnancyListResult pregResult = repo.Pregnancy.GetPregnancies(patientDfn, pregnancyIen); result.SetResult(pregResult.Success, pregResult.Message); if (pregResult.Success) { if (pregResult.Pregnancies != null) { if (pregResult.Pregnancies.Count > 0) { // *** Get the checklist items *** PregnancyChecklistItemsResult getResult = GetSortedPregnancyChecklist(repo, patientDfn, pregResult.Pregnancies[0], DsioChecklistCompletionStatus.NotComplete); result.SetResult(getResult.Success, getResult.Message); if (result.Success) { if (getResult.Items != null) { if (getResult.Items.Count > 0) { // *** Find the next due *** DateTime nextChecklistDue = getResult.Items[0].DueDate; // *** Save next checklist observation *** result = repo.Observations.UpdateNextChecklistDue(patientDfn, nextChecklistDue); if (result.Success) { // *** Find next contact due *** DateTime nextContactDue = DateTime.MinValue; foreach (PregnancyChecklistItem item in getResult.Items) { if (item.ItemType == DsioChecklistItemType.MccCall) { nextContactDue = item.DueDate; break; } } result = repo.Observations.UpdateNextContactDue(patientDfn, nextContactDue); } } } } } } } return(result); }
//public static List<BabyDetails> GetBabyDetails(IDashboardRepository repo, string patientDfn, string pregIen, string babyNum) //{ // List<BabyDetails> returnVal = new List<BabyDetails>(); // // *** Get the observation category *** // string cat = new BabyDetails().ObservationCategory; // // *** Get observations *** // ObservationListResult obsResult = repo.Observations.GetObservationListByCategory(patientDfn, pregIen, cat); // // *** Check for success *** // if (obsResult.Success) // { // // *** Create a list of observations for this babyNum *** // List<DsioObservation> babyObservations = new List<DsioObservation>(); // if (obsResult.Observations != null) // foreach (DsioObservation obs in obsResult.Observations) // if (obs.BabyNum == babyNum) // babyObservations.Add(obs); // // *** Construct baby details *** // returnVal = new BabyDetails(babyObservations); // returnVal.BabyNum = babyNum; // } // return returnVal; //} public static List <PregnancyDetails> GetPregnancies(IDashboardRepository repo, string dfn) { List <PregnancyDetails> returnList = new List <PregnancyDetails>(); // *** Get pregnancies *** PregnancyListResult result = repo.Pregnancy.GetPregnancies(dfn, ""); if (result.Success) { if (result.Pregnancies != null) { if (result.Pregnancies.Count > 0) { returnList.AddRange(result.Pregnancies); } } } return(returnList); }
public CdaSourceResult GetSource(CdaOptions options) { // *** Collect the source data in a source object *** CdaSourceResult returnVal = new CdaSourceResult(); // *** Create new document id *** returnVal.Source.DocumentId = Guid.NewGuid().ToString("B"); // *** Get CDA settings *** CdaSettingsResult result = this.dashboardRepository.Settings.GetCdaSettings(); // *** Add results to return *** returnVal.Success = result.Success; returnVal.Message = result.Message; if (result.Success) { // *** Add CDA settings to return *** returnVal.Source.ManufacturerModelName = result.ManufacturerModelName; returnVal.Source.SoftwareName = result.SoftwareName; returnVal.Source.ProviderOrganizationPhone = result.ProviderOrganizationPhone; //// *** Get the VPR data *** //VprOperationResult vprResult = this.dashboardRepository.Vpr.GetVprData(options); //// *** Add results to return *** //returnVal.Success = vprResult.Success; //returnVal.Message = vprResult.Message; //// *** Add vpr data to return *** //if (result.Success) // returnVal.Source.VprData = vprResult.VprData; // *** Add options to return *** returnVal.Source.Options = options; // *** Add pregnancies *** string pregIen = (options.DocumentType == CDA.IheDocumentType.PPVS) ? options.SelectedItemIen : ""; PregnancyListResult pregResult = this.dashboardRepository.Pregnancy.GetPregnancies(options.Patient.Dfn, pregIen); if (pregResult.Success) { returnVal.Source.Pregnancies = pregResult.Pregnancies; } else { returnVal.SetResult(false, pregResult.Message); } // *** Add pregnancy status *** PatientDemographicsResult patResult = this.dashboardRepository.Patients.GetPatientDemographics(options.Patient.Dfn); if (patResult.Success) { returnVal.Source.Patient = patResult.Patient; } else if (returnVal.Success) { returnVal.SetResult(false, patResult.Message); } // *** Get Observations By Date Range *** string tiuIen = ""; string fromDate = ""; string toDate = ""; if (options.DocumentType == CDA.IheDocumentType.PPVS) { // TODO: Add date range when working... // *** Translate a pregnancy into a date range *** // *** The date range should include the postpartum period *** //options.SelectedDateRange = CdaOptions.DateRange.Custom; //options.FromDate = returnVal.Source.Pregnancies[0].EndDate.AddDays(-1); //TimeSpan ts = DateTime.Now - options.FromDate; //if (ts.TotalDays > 60) // options.ToDate = options.FromDate.AddDays(42); //else // options.ToDate = DateTime.Now.AddDays(1); //toDate = options.ToDate.ToString(VistaDates.VistADateOnlyFormat); //fromDate = options.FromDate.ToString(VistaDates.VistADateOnlyFormat); // TODO: Clear pregIen ? //pregIen = ""; } else if (options.SelectedItemIen == "-1") { tiuIen = ""; if (options.FromDate != DateTime.MinValue) { fromDate = options.FromDate.ToString(VistaDates.VistADateOnlyFormat); } if (options.ToDate != DateTime.MinValue) { toDate = options.ToDate.ToString(VistaDates.VistADateOnlyFormat); } } else { tiuIen = options.SelectedItemIen; } ObservationListResult observationsResult = this.dashboardRepository.Observations.GetObservations(options.Patient.Dfn, pregIen, "", tiuIen, fromDate, toDate, "", -1, -1); if (observationsResult.Success) { returnVal.Source.Observations = observationsResult.Observations; // *** For PPVS remove observations which belong to pregnancies other than the one chosen by the user *** if (options.DocumentType == CDA.IheDocumentType.PPVS) { returnVal.Source.Observations = returnVal.Source.Observations .Where(o => o.PregnancyIen == "" || o.PregnancyIen == options.SelectedItemIen) .ToList(); } } // *** Get the VPR data *** VprOperationResult vprResult = this.dashboardRepository.Vpr.GetVprData(options); // *** Add results to return *** returnVal.Success = vprResult.Success; returnVal.Message = vprResult.Message; // *** Add vpr data to return *** if (result.Success) { returnVal.Source.VprData = vprResult.VprData; } ValueSetType[] valueSets = null; if (options.DocumentType == CDA.IheDocumentType.APHP) { // *** Get Value Sets Needed for APHP *** valueSets = new ValueSetType[] { ValueSetType.AntepartumEducation, ValueSetType.HistoryOfInfection, ValueSetType.HistoryOfPastIllness, ValueSetType.AntepartumFamilyHistory, ValueSetType.MenstrualHistory }; } else if (options.DocumentType == CDA.IheDocumentType.APE) { valueSets = new ValueSetType[] { ValueSetType.AntepartumEducation }; returnVal.Source.EducationItems = this.GetEducationItems(options.Patient.Dfn, options.FromDate, options.ToDate); } if (valueSets != null) { foreach (var valueSetType in valueSets) { CdaValueSetResult vsResult = this.dashboardRepository.CdaDocuments.GetValueSet(valueSetType); if (vsResult.Success) { returnVal.Source.ValueSets.Add(valueSetType, vsResult.ValueSet); } } } if (options.DocumentType == CDA.IheDocumentType.XDR_I) { // *** Get Radiology Reports *** RadiologyReportsResult radResult = this.dashboardRepository.Radiology.GetReports(options.Patient.Dfn); if (radResult.Success) { if (radResult.Items.Count > 0) { string tempDate = Util.Piece(options.SelectedItemIen, "|", 1); string tempProc = Util.Piece(options.SelectedItemIen, "|", 2); DateTime selected; if (DateTime.TryParse(tempDate, out selected)) { RadiologyReport rpt = radResult.Items.FirstOrDefault(r => r.ExamDateTime == selected && r.Procedure == tempProc); returnVal.Source.ImageReportText = rpt.Detail; } } } } } return(returnVal); }