public override IDeepCopyable CopyTo(IDeepCopyable other)
        {
            var dest = other as EpisodeOfCare;

            if (dest == null)
            {
                throw new ArgumentException("Can only copy to an object of the same type", "other");
            }

            base.CopyTo(dest);
            if (Identifier != null)
            {
                dest.Identifier = new List <Hl7.Fhir.Model.Identifier>(Identifier.DeepCopy());
            }
            if (StatusElement != null)
            {
                dest.StatusElement = (Code <Hl7.Fhir.Model.EpisodeOfCare.EpisodeOfCareStatus>)StatusElement.DeepCopy();
            }
            if (StatusHistory != null)
            {
                dest.StatusHistory = new List <Hl7.Fhir.Model.EpisodeOfCare.StatusHistoryComponent>(StatusHistory.DeepCopy());
            }
            if (Type != null)
            {
                dest.Type = new List <Hl7.Fhir.Model.CodeableConcept>(Type.DeepCopy());
            }
            if (Diagnosis != null)
            {
                dest.Diagnosis = new List <Hl7.Fhir.Model.EpisodeOfCare.DiagnosisComponent>(Diagnosis.DeepCopy());
            }
            if (Patient != null)
            {
                dest.Patient = (Hl7.Fhir.Model.ResourceReference)Patient.DeepCopy();
            }
            if (ManagingOrganization != null)
            {
                dest.ManagingOrganization = (Hl7.Fhir.Model.ResourceReference)ManagingOrganization.DeepCopy();
            }
            if (Period != null)
            {
                dest.Period = (Hl7.Fhir.Model.Period)Period.DeepCopy();
            }
            if (ReferralRequest != null)
            {
                dest.ReferralRequest = new List <Hl7.Fhir.Model.ResourceReference>(ReferralRequest.DeepCopy());
            }
            if (CareManager != null)
            {
                dest.CareManager = (Hl7.Fhir.Model.ResourceReference)CareManager.DeepCopy();
            }
            if (Team != null)
            {
                dest.Team = new List <Hl7.Fhir.Model.ResourceReference>(Team.DeepCopy());
            }
            if (Account != null)
            {
                dest.Account = new List <Hl7.Fhir.Model.ResourceReference>(Account.DeepCopy());
            }
            return(dest);
        }
Esempio n. 2
0
        /*public ActionResult PopulateDummyData()
         * {
         *  var start = DateTime.UtcNow;
         *
         *  var areas = db.Areas.ToList();
         *  var rand = new Random();
         *
         *  for (var n = 0; n < 1000; n++)
         *  {
         *      var home = new CareHome();
         *      home.Address = string.Format("{0}番地", n);
         *      home.Area = areas[rand.Next(areas.Count)];
         *      home.CareHomeCode = (10000 + n).ToString();
         *      home.ChiefJobTitle = string.Format("施設長{0}", n);
         *      home.ChiefName = string.Format("責任一郎{0}", n);
         *      home.CompanyName = string.Format("○○ケア{0}", n);
         *      home.CompanyType = new[]{ CompanyType.NPO, CompanyType.その他法人, CompanyType.医療法人, CompanyType.営利法人, CompanyType.社会福祉法人, CompanyType.地方自治体 }[rand.Next(6)];
         *      home.DataUpdated = DateTime.UtcNow.AddDays(-rand.Next(365));
         *      home.Email = string.Format("ichiro{0}@example.com", n);
         *      home.Established = DateTime.UtcNow.AddYears(-rand.Next(20));
         *      home.Fax = string.Format("{0:D3}-{1:D4}-{2:D4}", rand.Next(1000), rand.Next(10000), rand.Next(10000));
         *      home.Latitude = 33.0 + 4.0 * rand.NextDouble();
         *      home.Longitude = 133.0 + 4.0 * rand.NextDouble();
         *      home.Messages = string.Format("事業所が入力したメッセージです。{0}", n);
         *      home.Rating = 5.0 * rand.NextDouble();
         *      home.Region = string.Format("事業所が入力した対応可能地域です。{0}", n);
         *      home.ReviewCount = rand.Next(1000);
         *      home.Tel = string.Format("{0:D3}-{1:D4}-{2:D4}", rand.Next(1000), rand.Next(10000), rand.Next(10000));
         *      home.Traits = string.Format("事業所が入力した特徴・セールスポイントです。{0}", n);
         *      home.WebsiteUrl = string.Format("http://example.com/{0}/", n);
         *      home.Zip = string.Format("{0:D3}-{1:D4}", rand.Next(1000), rand.Next(10000));
         *      home.サービスの質の確保 = 5.0 * rand.NextDouble();
         *      home.その他在席人数 = rand.Next(100);
         *      home.その他常勤換算 = 100.0 * rand.NextDouble();
         *      home.安全衛生管理等 = 5.0 * rand.NextDouble();
         *      home.介護支援専門員在席人数 = rand.Next(100);
         *      home.介護支援専門員常勤換算 = 100.0 * rand.NextDouble();
         *      home.外部機関等との連携 = 5.0 * rand.NextDouble();
         *      home.経験5年以上割合 = rand.NextDouble();
         *      home.事業運営管理 = 5.0 * rand.NextDouble();
         *      home.事務員在席人数 = rand.Next(100);
         *      home.事務員常勤換算 = 100.0 * rand.NextDouble();
         *      home.自立 = rand.Next(100);
         *      home.従業者の研修等 = 5.0 * rand.NextDouble();
         *      home.全職員在席人数 = home.介護支援専門員在席人数 + home.事務員在席人数 + home.その他在席人数;
         *      home.全職員常勤換算 = home.介護支援専門員常勤換算 + home.事務員常勤換算 + home.その他常勤換算;
         *      home.相談苦情等への対応 = 5.0 * rand.NextDouble();
         *      home.要介護1 = rand.Next(100);
         *      home.要介護2 = rand.Next(100);
         *      home.要介護3 = rand.Next(100);
         *      home.要介護4 = rand.Next(100);
         *      home.要介護5 = rand.Next(100);
         *      home.要支援1 = rand.Next(100);
         *      home.要支援2 = rand.Next(100);
         *      home.利用者の権利擁護 = 5.0 * rand.NextDouble();
         *
         *      db.CareHomes.Add(home);
         *  }
         *  db.SaveChanges();
         *  Response.Write(string.Format("Populated. {0}ms", (DateTime.UtcNow - start).TotalMilliseconds));
         *  return null;
         * }*/

        public ActionResult PopulateDummyCareManagers()
        {
            var start      = DateTime.UtcNow;
            var homeIds    = db.CareHomes.Select(h => h.CareHomeId).ToList();
            var licenseIds = db.Licenses.Select(l => l.LicenseId).ToList();
            var rand       = new Random();

            for (var n = 0; n < 1000; n++)
            {
                var m = new CareManager();

                m.AllowNewPatient = rand.Next(2) == 0;
                m.Birthday        = DateTime.UtcNow.AddYears(-rand.Next(90));
                m.BlogUrls        = string.Format("http://example.com/foo/{0}/", n);
                m.Career          = string.Format("ケアマネ会員が入力したキャリアです。{0}", n);
                m.CareHomeId      = homeIds[rand.Next(homeIds.Count)];
                m.CurrentPatients = rand.Next(100);
                m.Email           = string.Format("care{0}@example.com", n);
                m.Gender          = new[] { Gender.男性, Gender.女性 }[rand.Next(2)];
                m.Licensed        = DateTime.UtcNow.AddYears(-rand.Next(50));
                m.Messages        = string.Format("ケアマネ会員が入力したメッセージです。{0}", n);
                if (m.Gender == Gender.男性)
                {
                    m.Name = string.Format("田中一郎{0}", n);
                }
                else
                {
                    m.Name = string.Format("佐藤花子{0}", n);
                }
                m.Rating       = 5.0 * rand.NextDouble();
                m.ReviewsCount = rand.Next(1000);
                m.指導管理力        = 5.0 * rand.NextDouble();
                m.公平中立力        = 5.0 * rand.NextDouble();
                m.医療知識         = 5.0 * rand.NextDouble();
                m.介護知識         = 5.0 * rand.NextDouble();
                m.関係構築力        = 5.0 * rand.NextDouble();
                m.企画立案力        = 5.0 * rand.NextDouble();
                m.行動実践力        = 5.0 * rand.NextDouble();

                var rows = new List <CareManagerLicenses>();
                foreach (var id in licenseIds)
                {
                    if (rand.NextDouble() > 0.8)
                    {
                        rows.Add(new CareManagerLicenses()
                        {
                            CareManager = m, LicenseId = id
                        });
                    }
                }
                m.CareManagerLicenses = rows;

                db.CareManagers.Add(m);
            }
            db.SaveChanges();
            Response.Write(string.Format("Populated. {0}ms", (DateTime.UtcNow - start).TotalMilliseconds));
            return(null);
        }
Esempio n. 3
0
        public ActionResult DeleteConfirmed(int careManagerId)
        {
            CareManager caremanager = db.CareManagers.Find(careManagerId);

            db.CareManagers.Remove(caremanager);
            db.SaveChanges();
            Log(LogType.CareHome, "所属するケアマネの情報を削除しました。");
            return(RedirectToAction("Index"));
        }
Esempio n. 4
0
        // GET: /CareManager/Delete/5
        public ActionResult Delete(int?careManagerId)
        {
            if (careManagerId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CareManager caremanager = db.CareManagers.Find(careManagerId);

            if (caremanager == null)
            {
                return(HttpNotFound());
            }
            return(View(caremanager));
        }
Esempio n. 5
0
        public ActionResult EditAdditionalData(CareManager model, HttpPostedFileBase file, List <int> Licenses)
        {
            var allow = "CurrentPatients,AllowNewPatient,Career,Messages,BlogUrls,ShowReviews,企画立案力,行動実践力,関係構築力,指導管理力,公平中立力,医療知識,介護知識";

            // Removes fields from ModelState which are not incoming.
            var allowedFields  = allow.Split(',');
            var fieldsToRemove = ModelState.Keys
                                 .Where(key => !allowedFields.Contains(key))
                                 .ToList();

            fieldsToRemove.ForEach(f => ModelState.Remove(f));

            // Licenses
            if (Licenses == null)
            {
                Licenses = new List <int>();
            }
            model.CareManagerLicenses.Clear();
            foreach (var l in Licenses)
            {
                model.CareManagerLicenses.Add(new CareManagerLicenses()
                {
                    LicenseId = l
                });
            }

            if (ModelState.IsValid)
            {
                var careManager = CurrentUser.CareManager.FirstOrDefault();
                if (careManager == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                // Licenses
                db.CareManagerLicenses.RemoveRange(careManager.CareManagerLicenses);
                careManager.CareManagerLicenses = model.CareManagerLicenses;

                // Updates SQL
                model.CopyTo(ref careManager, allow);   // Copies fields only which are incoding.
                db.SaveChanges();

                Log(LogType.CareManager, "追加情報を更新しました。");
                Flash("保存されました。");
            }
            ViewBag.Licenses = new MultiSelectList(db.Licenses, "LicenseId", "Name", model.CareManagerLicenses.Select(l => l.LicenseId));
            return(View(model));
        }
Esempio n. 6
0
        public ActionResult Edit(string code, int?careManagerId)
        {
            if (code == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (careManagerId != null && !CurrentUser.CareHomes.Any(h => h.CareManagers.Any(c => c.CareManagerId == careManagerId)))
            {
                // Not owned
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var careManager = new CareManager();

            if (careManagerId == null)
            {
                // Add
                var home = db.CareHomes.FirstOrDefault(h => h.CareHomeCode == code);
                if (home == null)
                {
                    return(HttpNotFound());
                }
                careManager.CareHomeId = home.CareHomeId;
            }
            else
            {
                // Edit
                careManager = db.CareManagers.FirstOrDefault(m => m.CareHome.CareHomeCode == code && m.CareManagerId == careManagerId);
                if (careManager == null)
                {
                    return(HttpNotFound());
                }
            }

            ViewBag.Gender = EnumHelper <Gender> .GetSelectList(careManager.Gender);

            ViewBag.Year     = Helper.Helper.GetBirthdayYears(careManager.Birthday);
            ViewBag.Month    = Helper.Helper.GetBirthdayMonths(careManager.Birthday);
            ViewBag.Day      = Helper.Helper.GetBirthdayDays(careManager.Birthday);
            ViewBag.Licensed = Helper.Helper.GetLicensedYears(careManager.Licensed);
            return(View(careManager));
        }
Esempio n. 7
0
        /// <summary>
        /// Serialize to a JSON object
        /// </summary>
        public new void SerializeJson(Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true)
        {
            if (includeStartObject)
            {
                writer.WriteStartObject();
            }

            if (!string.IsNullOrEmpty(ResourceType))
            {
                writer.WriteString("resourceType", (string)ResourceType !);
            }


            ((Fhir.R4.Models.DomainResource) this).SerializeJson(writer, options, false);

            if ((Identifier != null) && (Identifier.Count != 0))
            {
                writer.WritePropertyName("identifier");
                writer.WriteStartArray();

                foreach (Identifier valIdentifier in Identifier)
                {
                    valIdentifier.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (!string.IsNullOrEmpty(Status))
            {
                writer.WriteString("status", (string)Status !);
            }

            if (_Status != null)
            {
                writer.WritePropertyName("_status");
                _Status.SerializeJson(writer, options);
            }

            if ((StatusHistory != null) && (StatusHistory.Count != 0))
            {
                writer.WritePropertyName("statusHistory");
                writer.WriteStartArray();

                foreach (EpisodeOfCareStatusHistory valStatusHistory in StatusHistory)
                {
                    valStatusHistory.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if ((Type != null) && (Type.Count != 0))
            {
                writer.WritePropertyName("type");
                writer.WriteStartArray();

                foreach (CodeableConcept valType in Type)
                {
                    valType.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if ((Diagnosis != null) && (Diagnosis.Count != 0))
            {
                writer.WritePropertyName("diagnosis");
                writer.WriteStartArray();

                foreach (EpisodeOfCareDiagnosis valDiagnosis in Diagnosis)
                {
                    valDiagnosis.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (Patient != null)
            {
                writer.WritePropertyName("patient");
                Patient.SerializeJson(writer, options);
            }

            if (ManagingOrganization != null)
            {
                writer.WritePropertyName("managingOrganization");
                ManagingOrganization.SerializeJson(writer, options);
            }

            if (Period != null)
            {
                writer.WritePropertyName("period");
                Period.SerializeJson(writer, options);
            }

            if ((ReferralRequest != null) && (ReferralRequest.Count != 0))
            {
                writer.WritePropertyName("referralRequest");
                writer.WriteStartArray();

                foreach (Reference valReferralRequest in ReferralRequest)
                {
                    valReferralRequest.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (CareManager != null)
            {
                writer.WritePropertyName("careManager");
                CareManager.SerializeJson(writer, options);
            }

            if ((Team != null) && (Team.Count != 0))
            {
                writer.WritePropertyName("team");
                writer.WriteStartArray();

                foreach (Reference valTeam in Team)
                {
                    valTeam.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if ((Account != null) && (Account.Count != 0))
            {
                writer.WritePropertyName("account");
                writer.WriteStartArray();

                foreach (Reference valAccount in Account)
                {
                    valAccount.SerializeJson(writer, options, true);
                }

                writer.WriteEndArray();
            }

            if (includeStartObject)
            {
                writer.WriteEndObject();
            }
        }
Esempio n. 8
0
        public ActionResult Edit(string code, [Bind(Include = "CareManagerId,CareHomeId,Email,MediaFileDataId,Name,Gender,Age,Licensed,Licenses,CurrentPatients,AllowNewPatient,Career,Messages,BlogUrls,TotalRating,ReviewsCount,Rating,Birthday")] CareManager caremanager, HttpPostedFileBase file, int year, int month, int day)
        {
            // Checks file size.
            if (file != null && file.ContentLength > 200000)
            {
                ModelState.AddModelError("", "アップロードできる画像のサイズは200kBまでです。");
            }

            // Sets Dec. 31th.
            caremanager.Birthday = new DateTime(year, month, day);
            caremanager.Licensed = new DateTime(caremanager.Licensed.Year, 12, 31);

            if (ModelState.IsValid)
            {
                // Uploads Image
                if (file != null)
                {
                    BlobHelper.DeleteIfExists("mediafile", caremanager.MediaFileDataId);
                    caremanager.MediaFileDataId = BlobHelper.Upload("mediafile", file, file.FileName);
                }

                // Adds / Edits record
                if (caremanager.CareManagerId == 0)
                {
                    // Add
                    db.CareManagers.Add(caremanager);
                    var verification = new EmailVerification()
                    {
                        CareManager = caremanager, Email = caremanager.Email
                    };
                    db.EmailVerifications.Add(verification);
                    db.SaveChanges();

                    // Notifies CareManager to verify.
                    //SendEmail(caremanager.Email, "[ケアマネ情報局] ケアマネ会員認証", "URL: " + Url.Action("Verify", "EmailVerification", new { verificationCode = verification.VerificationCode}, Request.Url.Scheme));
                    var     added = db.CareManagers.Include(m => m.CareHome).FirstOrDefault(m => m.CareManagerId == caremanager.CareManagerId);
                    dynamic email = new Postal.Email("CareManagerAdded");
                    email.To = added.Email;
                    email.CareManagerName  = added.Name;
                    email.CareHomeName     = added.CareHome.Name;
                    email.CareHomeUserName = "";
                    if (added.CareHome.User != null)
                    {
                        email.CareHomeUserName = added.CareHome.User.Name;
                    }
                    email.VerificationUrl = Url.Action("Verify", "EmailVerification", new { verificationCode = verification.VerificationCode }, Request.Url.Scheme);
                    email.SiteUrl         = string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority);
                    email.Send();
                }
                else
                {
                    // Edit
                    var entry = db.Entry(caremanager);
                    entry.State = EntityState.Unchanged;
                    entry.Property(p => p.Email).IsModified    = true;
                    entry.Property(p => p.Name).IsModified     = true;
                    entry.Property(p => p.Gender).IsModified   = true;
                    entry.Property(p => p.Licensed).IsModified = true;
                    entry.Property(p => p.Birthday).IsModified = true;
                    if (file != null)
                    {
                        entry.Property(p => p.MediaFileDataId).IsModified = true;
                    }
                    db.SaveChanges();
                }
                Log(LogType.CareHome, "所属するケアマネの情報を更新しました。");
                return(RedirectToAction("Index"));
            }
            ViewBag.Gender = EnumHelper <Gender> .GetSelectList(caremanager.Gender);

            ViewBag.Year     = Helper.Helper.GetBirthdayYears(caremanager.Birthday);
            ViewBag.Month    = Helper.Helper.GetBirthdayMonths(caremanager.Birthday);
            ViewBag.Day      = Helper.Helper.GetBirthdayDays(caremanager.Birthday);
            ViewBag.Licensed = Helper.Helper.GetLicensedYears(caremanager.Licensed);
            return(View(caremanager));
        }