예제 #1
0
        /// <summary>
        /// Creates a new visit for the specified patient.
        /// </summary>
        /// <param name="patientRef">Patient for which the visit is created.</param>
        /// <param name="informationAuthority">Information authority to use for the visit number.</param>
        /// <param name="admitOffsetDays">A positive or negative number of days from today.</param>
        /// <param name="AdmissionType">Emergency or other types</param>
        /// <returns></returns>
        public static VisitSummary CreateVisit(PatientProfileSummary patientProfile, EnumValueInfo informationAuthority, int admitOffsetDays, EnumValueInfo AdmissionType)
        {
            InitReferenceDataCacheOnce();

            // Generate an active visit with randomize properties

            var          now = Platform.Time;
            const string activeAdmittedVisitStatus = "AA";
            var          visitDetail = new VisitDetail
            {
                Patient       = patientProfile,
                VisitNumber   = new CompositeIdentifierDetail(GenerateRandomIntegerString(10), informationAuthority),
                PatientClass  = ChooseRandom(_visitEditorFormData.PatientClassChoices),
                PatientType   = ChooseRandom(_visitEditorFormData.PatientTypeChoices),
                AdmissionType = AdmissionType ?? ChooseRandom(_visitEditorFormData.AdmissionTypeChoices),
                Status        = CollectionUtils.SelectFirst(_visitEditorFormData.VisitStatusChoices, enumValue => enumValue.Code == activeAdmittedVisitStatus),
                AdmitTime     = now + TimeSpan.FromDays(admitOffsetDays),
                Facility      = ChooseRandom(_visitEditorFormData.FacilityChoices)
            };

            VisitSummary visit = null;

            Platform.GetService(
                delegate(IVisitAdminService service)
            {
                var addVisitResponse = service.AddVisit(new AddVisitRequest(visitDetail));
                visit = addVisitResponse.Visit;
            });

            return(visit);
        }
예제 #2
0
		public VisitSummary CreateVisitSummary(Visit visit, IPersistenceContext context)
		{
			var patientProfileAssembler = new PatientProfileAssembler();
			var summary = new VisitSummary
				{
					VisitRef = visit.GetRef(),
					Patient = patientProfileAssembler.CreatePatientProfileSummary(visit.PatientProfile, context),
					VisitNumber = CreateVisitNumberDetail(visit.VisitNumber),
					AdmissionType = EnumUtils.GetEnumValueInfo(visit.AdmissionType),
					PatientClass = EnumUtils.GetEnumValueInfo(visit.PatientClass),
					PatientType = EnumUtils.GetEnumValueInfo(visit.PatientType),
					Status = EnumUtils.GetEnumValueInfo(visit.Status, context),
					AdmitTime = visit.AdmitTime,
					DischargeTime = visit.DischargeTime
				};

			var facilityAssembler = new FacilityAssembler();
			summary.Facility = visit.Facility == null ? null : facilityAssembler.CreateFacilitySummary(visit.Facility);

			var locationAssembler = new LocationAssembler();
			summary.CurrentLocation = visit.CurrentLocation == null ? null : locationAssembler.CreateLocationSummary(visit.CurrentLocation);
			summary.CurrentRoom = visit.CurrentRoom;
			summary.CurrentBed = visit.CurrentBed;

			return summary;
		}
예제 #3
0
        public VisitSummary CreateVisitSummary(Visit visit, IPersistenceContext context)
        {
            var patientProfileAssembler = new PatientProfileAssembler();
            var summary = new VisitSummary
            {
                VisitRef      = visit.GetRef(),
                Patient       = patientProfileAssembler.CreatePatientProfileSummary(visit.PatientProfile, context),
                VisitNumber   = CreateVisitNumberDetail(visit.VisitNumber),
                AdmissionType = EnumUtils.GetEnumValueInfo(visit.AdmissionType),
                PatientClass  = EnumUtils.GetEnumValueInfo(visit.PatientClass),
                PatientType   = EnumUtils.GetEnumValueInfo(visit.PatientType),
                Status        = EnumUtils.GetEnumValueInfo(visit.Status, context),
                AdmitTime     = visit.AdmitTime,
                DischargeTime = visit.DischargeTime
            };

            var facilityAssembler = new FacilityAssembler();

            summary.Facility = visit.Facility == null ? null : facilityAssembler.CreateFacilitySummary(visit.Facility);

            var locationAssembler = new LocationAssembler();

            summary.CurrentLocation = visit.CurrentLocation == null ? null : locationAssembler.CreateLocationSummary(visit.CurrentLocation);
            summary.CurrentRoom     = visit.CurrentRoom;
            summary.CurrentBed      = visit.CurrentBed;

            return(summary);
        }
예제 #4
0
 // This method gets called by the runtime. Use this method to add services to the container.
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddDbContext <AppDbContext>(options =>
                                          options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
     services.AddControllersWithViews();
     services.AddScoped <IDoctorRepository, DoctorRepository>();
     services.AddScoped <IVisitRepository, VisitRepository>();
     services.AddScoped <VisitSummary>(x => VisitSummary.GetSummary(x));
     services.AddHttpContextAccessor();
     services.AddSession();
 }
예제 #5
0
        public int addOrUpdateReccomendations(string id1, int code1, string rec1)
        {
            VisitSummary   dm     = new VisitSummary();
            ListDictionary Params = new ListDictionary();

            Params.Add("@id", BLCtrl.sendString(id1, ""));
            Params.Add("@code", BLCtrl.sendInt(code1, 0));
            Params.Add("@rec", BLCtrl.sendString(rec1, ""));

            int result = dm.addOrUpdateReccomendations(Params);

            return(result);
        }
예제 #6
0
        public Summary getSummary(DateTime date1, string id1)
        {
            VisitSummary   dm     = new VisitSummary();
            ListDictionary Params = new ListDictionary();
            Summary        s      = new Summary();

            Params.Add("@date", BLCtrl.sendDateTime(date1, new DateTime()));
            Params.Add("@id", BLCtrl.sendString(id1, ""));
            DataSet ds = dm.getSummary(Params);

            s.Mentioned = BLCtrl.getBool(ds.Tables[0].Rows[0], "Mentioned", false);
            s.FollowUp  = BLCtrl.getInt(ds.Tables[0].Rows[0], "FollowUp", 0);
            return(s);
        }
예제 #7
0
        public int UpdateSummary(DateTime date1, string id1, bool Mentioned1, int FollowUp1)
        {
            VisitSummary dm = new VisitSummary();

            ListDictionary Params = new ListDictionary();

            Params.Add("@date", BLCtrl.sendDateTime(date1, new DateTime()));
            Params.Add("@id", BLCtrl.sendString(id1, ""));
            Params.Add("@Mentioned", BLCtrl.sendBool(Mentioned1, true));
            Params.Add("@FollowUp", BLCtrl.sendInt(FollowUp1, 1));

            int result = dm.UpdateSummary(Params);

            return(result);
        }
예제 #8
0
        private static VisitSummary GetActiveVisitForPatient(EntityRef patientRef, EnumValueInfo assigningAuthority)
        {
            VisitSummary visit = null;

            // choose from existing visits
            Platform.GetService(
                delegate(IOrderEntryService service)
            {
                var request = new ListVisitsForPatientRequest(patientRef);

                var visitResponse = service.ListVisitsForPatient(request);
                visit             = RandomUtils.ChooseRandom(CollectionUtils.Select(visitResponse.Visits,
                                                                                    summary => Equals(summary.VisitNumber.AssigningAuthority, assigningAuthority)));
            });

            return(visit);
        }
예제 #9
0
        public List <FollowsUp> getFollowUp()
        {
            VisitSummary     dm     = new VisitSummary();
            ListDictionary   Params = new ListDictionary();
            DataSet          ds     = dm.getFollowUp(Params);
            List <FollowsUp> l      = new List <FollowsUp>();
            FollowsUp        f;

            foreach (DataRow item in ds.Tables[0].Rows)
            {
                f          = new FollowsUp();
                f.Code     = BLCtrl.getInt(item, "Code", 0);
                f.FollowUp = BLCtrl.getString(item, "FollowUp", "");
                l.Add(f);
            }

            return(l);
        }
예제 #10
0
        public List <DateTime> get_updating(string id1)
        {
            VisitSummary   dm     = new VisitSummary();
            ListDictionary Params = new ListDictionary();

            Params.Add("@id", id1);
            DataSet         ds = dm.get_Updating(Params);
            List <DateTime> l  = new List <DateTime>();
            DateTime        f;

            foreach (DataRow item in ds.Tables[0].Rows)
            {
                f = new DateTime();
                f = item.Field <DateTime>("UpdateDate");
                l.Add(f);
            }
            return(l);
        }
예제 #11
0
        public override void Accept()
        {
            if (this.HasValidationErrors)
            {
                this.ShowValidation(true);
                return;
            }

            try
            {
                // give extension pages a chance to save data prior to commit
                _extensionPages.ForEach(delegate(IVisitEditorPage page) { page.Save(); });

                Platform.GetService <IVisitAdminService>(
                    delegate(IVisitAdminService service)
                {
                    if (_isNew)
                    {
                        AddVisitResponse response = service.AddVisit(new AddVisitRequest(_visit));
                        _addedVisit = response.Visit;
                        _patient    = response.Visit.Patient;
                        _visitRef   = response.Visit.VisitRef;
                    }
                    else
                    {
                        UpdateVisitResponse response = service.UpdateVisit(new UpdateVisitRequest(_visitRef, _visit));
                        _addedVisit = response.Visit;
                        _patient    = response.Visit.Patient;
                        _visitRef   = response.Visit.VisitRef;
                    }
                });
                this.Exit(ApplicationComponentExitCode.Accepted);
            }
            catch (Exception e)
            {
                ExceptionHandler.Report(e, SR.ExceptionCannotAddUpdateVisit, this.Host.DesktopWindow,
                                        delegate
                {
                    this.ExitCode = ApplicationComponentExitCode.Error;
                    this.Host.Exit();
                });
            }
        }
예제 #12
0
        public List <Reccomendations> getReccomendations(DateTime date1, string id1)
        {
            VisitSummary    dm     = new VisitSummary();
            ListDictionary  Params = new ListDictionary();
            Reccomendations s;

            Params.Add("@date", BLCtrl.sendDateTime(date1, new DateTime()));
            Params.Add("@id", BLCtrl.sendString(id1, ""));
            DataSet ds = dm.getReccomendations(Params);
            List <Reccomendations> l = new List <Reccomendations>();

            foreach (DataRow item in ds.Tables[0].Rows)
            {
                s                = new Reccomendations();
                s.UpdateCode     = BLCtrl.getInt(item, "UpdateCode", 0);
                s.Code           = BLCtrl.getInt(item, "Code", 0);
                s.Reccomendation = BLCtrl.getString(item, "Reccomendation", "");
                l.Add(s);
            }
            return(l);
        }
예제 #13
0
 public UpdateVisitResponse(VisitSummary addedVisit)
 {
     this.Visit = addedVisit;
 }
        // GET: VisitSummary
        public ActionResult Index(int?id)
        {
            VisitSummary myModel    = new VisitSummary();
            int          intVisitId = 0;
            int          intPetId   = 0;

            Session["isSummary"] = null;
            if (!id.HasValue)
            {
                intVisitId = (int)Session["intVisitId"];
                intPetId   = (int)Session["intPetID"];
            }
            else
            {
                Session["isSummary"] = true;
                intVisitId           = (int)id;
                intPetId             = db.TVisits.Where(x => x.intVisitID == intVisitId).Select(z => z.intPetID).FirstOrDefault();
            }


            //General Information
            var informationPacket = (from o in db.TOwners
                                     join p in db.TPets
                                     on o.intOwnerID equals p.intOwnerID
                                     join s in db.TStates
                                     on o.intStateID equals s.intStateID
                                     join v in db.TVisits
                                     on p.intPetID equals v.intPetID
                                     where p.intPetID == intPetId
                                     where v.intVisitID == intVisitId
                                     select new
            {
                ownerName = o.strFirstName + " " + o.strLastName,
                address = o.strAddress + ", " + o.strCity + ", " + s.strStateName + " " + o.strZip,
                phoneNumber = o.strPhoneNumber,
                petName = p.strPetName,
                petNumber = p.strPetNumber,
                clientNumber = o.intOwnerID,
                dateOfVisit = v.dtmDateOfVist
            }).FirstOrDefault();

            var doctor = (from e in db.TEmployees
                          join ve in db.TVisitEmployees
                          on e.intEmployeeID equals ve.intEmployeeID
                          join j in db.TJobTitles
                          on e.intJobTitleID equals j.intJobTitleID
                          where ve.intVisitID == intVisitId
                          where j.strJobTitleDesc == "Doctor"
                          select new {
                doctorName = "Dr. " + e.strFirstName + " " + e.strLastName
            }).FirstOrDefault();

            //Save to model
            myModel.strOwnerName        = informationPacket.ownerName;
            myModel.strAddress          = informationPacket.address;
            myModel.strPhoneNumber      = informationPacket.phoneNumber;
            myModel.intOwnerNumber      = informationPacket.clientNumber;
            myModel.strPetName          = informationPacket.petName;
            myModel.strPetNumber        = informationPacket.petNumber;
            myModel.dtmOfVisit          = informationPacket.dateOfVisit;
            myModel.strDoctor           = doctor.doctorName;
            myModel.intPetID            = intPetId;
            myModel.PetVisitServices    = db.TVisitServices.Where(x => x.intVisitID == intVisitId).ToList();
            myModel.PetVisitMedications = db.TVisitMedications.Where(x => x.intVisitID == intVisitId).ToList();

            ViewBag.Name = informationPacket.petName;
            decimal visitServicesSum = db.TVisitServices
                                       .Where(x => x.intVisitID == intVisitId)
                                       .Select(z => z.TService.dblPrice)
                                       .DefaultIfEmpty()
                                       .Sum();
            decimal visitMedicationsSum = db.TVisitMedications
                                          .Where(x => x.intVisitID == intVisitId)
                                          .Select(z => z.TMedication.dblPrice * z.intQuantity)
                                          .DefaultIfEmpty()
                                          .Sum();

            ViewBag.ServicesTotal    = "$ " + Math.Round(visitServicesSum, 2);
            ViewBag.MedicationsTotal = "$ " + Math.Round(visitMedicationsSum, 2);

            return(View(myModel));
        }
예제 #15
0
 public VisitController(IVisitRepository visitRepository, VisitSummary visitSummary)
 {
     _visitRepository = visitRepository;
     _visitSummary    = visitSummary;
 }
예제 #16
0
 public VisitEditorComponent(VisitSummary editVisit)
 {
     _isNew    = false;
     _patient  = editVisit.Patient;
     _visitRef = editVisit.VisitRef;
 }
예제 #17
0
        /// <summary>
        /// Create a random order on the specified visit.
        /// </summary>
        /// <param name="visit">Visit/patient for which the order is created.</param>
        /// <param name="informationAuthority">Performing facility will be selected to match this information authority.</param>
        /// <param name="diagnosticServiceName">Name of the diagnostic service to order.</param>
        /// <param name="schedulingOffsetDays">A positive or negative number of days from today.</param>
        /// <param name="modalityName">The name of the modality.</param>
        /// <param name="facilityCode">The code of the ordering and performing facility.</param>
        /// <param name="laterality">The procedure laterality.</param>
        /// <returns></returns>
        public static OrderSummary RandomOrder(VisitSummary visit, EnumValueInfo informationAuthority, string diagnosticServiceName, int schedulingOffsetDays, string modalityName, string facilityCode, EnumValueInfo laterality)
        {
            InitReferenceDataCacheOnce();

            var scheduledTime = Platform.Time + TimeSpan.FromDays(schedulingOffsetDays);
            LoadDiagnosticServicePlanResponse dsResponse = null;
            OrderSummary orderSummary = null;

            Platform.GetService(
                delegate(IOrderEntryService service)
            {
                DiagnosticServiceSummary diagnosticService;
                if (String.IsNullOrEmpty(diagnosticServiceName) && String.IsNullOrEmpty(modalityName))
                {
                    diagnosticService = ChooseRandom(_diagnosticServices);
                    dsResponse        = service.LoadDiagnosticServicePlan(new LoadDiagnosticServicePlanRequest(diagnosticService.DiagnosticServiceRef));
                }
                else
                {
                    diagnosticService = CollectionUtils.SelectFirst(_diagnosticServices,
                                                                    delegate(DiagnosticServiceSummary ds)
                    {
                        dsResponse = service.LoadDiagnosticServicePlan(new LoadDiagnosticServicePlanRequest(ds.DiagnosticServiceRef));
                        return((ds.Name == diagnosticServiceName) ||
                               (!String.IsNullOrEmpty(modalityName) && (CollectionUtils.SelectFirst(dsResponse.DiagnosticServicePlan.ProcedureTypes,
                                                                                                    ptd => ptd.Name.IndexOf(modalityName) == 0) != null)));
                    });

                    if (diagnosticService == null)
                    {
                        throw new Exception(String.Format("Cannot find diagnostic service with name {0}", diagnosticServiceName));
                    }
                }

                var performingFacility = CollectionUtils.SelectFirst(_orderEntryFormData.FacilityChoices,
                                                                     delegate(FacilitySummary facility)
                {
                    if (facilityCode == null)
                    {
                        return(facility.InformationAuthority.Code == informationAuthority.Code);
                    }

                    return(facility.Code == facilityCode);
                });

                var randomPhysician = ChooseRandom(_practitioners);
                var randomPriority  = ChooseRandom(_orderEntryFormData.OrderPriorityChoices);

                var requisition = new OrderRequisition
                {
                    Patient               = visit.Patient,
                    Visit                 = visit,
                    DiagnosticService     = diagnosticService,
                    OrderingPractitioner  = randomPhysician,
                    OrderingFacility      = performingFacility,
                    Priority              = randomPriority,
                    ReasonForStudy        = "Randomly generated test order",
                    SchedulingRequestTime = scheduledTime,
                    Procedures            = new List <ProcedureRequisition>(),
                    ResultRecipients      = new List <ResultRecipientDetail>(),
                    Attachments           = new List <AttachmentSummary>(),
                    Notes                 = new List <OrderNoteDetail>()
                };

                requisition.Procedures.AddRange(
                    CollectionUtils.Map(dsResponse.DiagnosticServicePlan.ProcedureTypes,
                                        (ProcedureTypeSummary rpt) => new ProcedureRequisition(rpt, performingFacility)
                {
                    ScheduledTime     = scheduledTime,
                    Laterality        = laterality,
                    ScheduledDuration = 30                                                                                                             // default to a non-zero scheduled duration
                }));

                var response = service.PlaceOrder(new PlaceOrderRequest(requisition));

                orderSummary = response.Order;
            });

            return(orderSummary);
        }
예제 #18
0
 /// <summary>
 /// Create a random order on the specified visit.
 /// </summary>
 /// <param name="visit">Visit/patient for which the order is created.</param>
 /// <param name="informationAuthority">Performing facility will be selected to match this information authority.</param>
 /// <param name="diagnosticServiceName">Name of the diagnostic service to order.</param>
 /// <param name="schedulingOffsetDays">A positive or negative number of days from today.</param>
 /// <returns></returns>
 public static OrderSummary RandomOrder(VisitSummary visit, EnumValueInfo informationAuthority, string diagnosticServiceName, int schedulingOffsetDays)
 {
     return(RandomOrder(visit, informationAuthority, diagnosticServiceName, schedulingOffsetDays, "", null, null));
 }
예제 #19
0
 public VisitRepository(AppDbContext appDbContext, VisitSummary visitSummary)
 {
     _appDbContext = appDbContext;
     _visitSummary = visitSummary;
 }
예제 #20
0
 public AddVisitResponse(VisitSummary addedVisit)
 {
     this.Visit = addedVisit;
 }
예제 #21
0
 public AddVisitResponse(VisitSummary addedVisit)
 {
     this.Visit = addedVisit;
 }
예제 #22
0
 public UpdateVisitResponse(VisitSummary addedVisit)
 {
     this.Visit = addedVisit;
 }
예제 #23
0
 public HomeController(IDoctorRepository doctorRepository, VisitSummary visitSummary)
 {
     _doctorRepository = doctorRepository;
     _visitSummary     = visitSummary;
 }