ä»å¹ŽãåŠæè«æãšããŠããŠãããã®æ²»çã®ããã®å°èŠæš¡ãªç§ç«ã¯ãªããã¯çšã®ç°¡åãªå»çæ
å ±ã·ã¹ãã ïŒMISïŒãäœæããå¿
èŠããããŸããã
蚺çæã®æ£è
ã®ããŒã¿ããŒã¹ã¯ãã§ã«ååšãã1998幎ã«åœæã®Microsoft Accessã«æžãæ»ãããŸããïŒãããŠãçŸãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ãïŒãããã¯1ãæã§ããæ©èœããŸããã§ãã-ãããŒãžã£ãŒã®ã³ã³ãã¥ãŒã¿ãŒäžã§ãå®å
šã«ãµããŒãã«ãªããŸããäžå¯èœã ãã®ãããäœãæ°ãããã®ãå°å
¥ããå¿
èŠæ§ã¯é·ãéçããŠããŸãïŒ
ããã«èšã£ãŠãã£ãã ããã«ïŒçµå±ãã³ãŒã¹æéãéããããã«ïŒä»äºãããå¿
èŠããããŸããããåæã«ç§ã¯èªåã®ä»äºãã§ããã ãé¢çœããããã£ãã®ã§ãã é·ãéãASP.NET MVCãçè§£ãããã£ããããCïŒãšMVCã®äžè¬ååã«å°ã粟éããŠãããããææ°ã®Visual Studio 2015 RCãããŠã³ããŒãããŠäœæ¥ãéå§ããŸããã
ã«ããã®äžã§-æè¡ãæ¢æ±ãããã¹ãŠã®èœãšã穎ã«ééãããããªã·ã¹ãã ãéçºããããã»ã¹å
šäœã ãã®èšäºã¯ãããã°ã©ãã³ã°ã«ç²ŸéããŠããããã€ãŠMVCãã¬ãŒã ã¯ãŒã¯ã®ãã¥ãŒããªã¢ã«ããã°ãäœæããããè峿·±ãããšãè¡ãæ¹æ³ãåŠã³ãããã¹ãŠã®äººã«åœ¹ç«ã¡ãŸãã
ããã§ã¯å§ããŸãããïŒ
åé¡ã®å£°æ
ãŠãããã®æ²»çã®ããã®å°ããªèšºçæã®æ£è
ã®åäžã®ããŒã¿ããŒã¹ãäœæããå¿
èŠããããŸãã ã»ã³ã¿ãŒã®çµå¶é£ãšè©±ãåã£ãåŸã次ã®èŠä»¶ã圢æãããŸããã
- 以åã®ããŒã¿ããŒã¹ããèç©ããããã¹ãŠã®ããŒã¿ã®ã·ã¹ãã ãžã®çµ±åã
- ç°ãªã建ç©ã®ãã¹ãŠã®è·å Žããã·ã¹ãã ã«ã¢ã¯ã»ã¹ããæ©èœã
- æš©å©ã®åé¢;
- ã¬ã»ãã·ã§ã³ãã¹ã±ãžã¥ãŒã«ããããã®è³éã®å¯çšæ§ã
- ããããã¿ã€ãã®åçããããªãã¡ã€ã«ãããã¥ã¡ã³ããæ£è
ã®ãããã¡ã€ã«ã«è¿œå ããæ©èœã
- çµã¿èŸŒã¿ã®èŸæžïŒèšºæãäºå®ãç ç©¶ãªã©ïŒãç·šéããæ©èœã
- ãµããŒããšã¹ã±ãŒãªã³ã°ã®å®¹æãã
- ãã¹ãŠã®æ£è
ã®ç
æŽã®ä»»æã®ãã£ãŒã«ããæ€çŽ¢ããæ©èœã
å®è£
ASP.NET MVCã®ä»çµã¿ãçè§£ããããã®åºçºç¹ã¯ã
httpïŒ //www.asp.net/mvcã®å
¬åŒãã¥ãŒããªã¢ã«ã§ãã åããŠã®ä»äºã§ã¯ãããã§ååã§ãã
Habréã®
æç§æžãèŠãŠã¿ãŸããããå人çã«ã¯ããŸãã«ãå°éçã§ããã
Microsoftã®Webãµã€ãã®ããã¥ã¢ã«ããïŒæ°åãè¯ãããããã«æã§ããã»ããããïŒãããã»ã¹ã®äžè¬çãªä»çµã¿ãã³ã³ãããŒã©ãŒã®äœæ¥ã1ã€ã®ã¢ãã«ã®è¡šçŸã¯åªããŠããŸãããããè€éãªã¢ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³ã¯æç¢ºã§ã¯ãããŸããã ãããç§ãããããšããŠããããšã§ãã
åºæ¬ãæ±ã£ãã®ã§ãä»äºã«åãæãããŸãã
æ°ããASP.NETã¢ããªã±ãŒã·ã§ã³ãäœæããCtrl-F5ã䜿çšããŠèµ·åããŸãã
ã¢ãã«ãæžã
äœæ¥ã®æåã®æ®µéã¯ã䜿çšãããã¢ãã«ã®èª¬æã§ãã ç§ã®å Žåããã¹ãŠãã·ã³ãã«ã§ããã å€ãAccessããŒã¿ãè¿
éã«çµ±åããå¿
èŠããããããæãç°¡åãªãœãªã¥ãŒã·ã§ã³-å€ãããŒã¿ã¹ããŒã ãæ£ç¢ºã«ã³ããŒããå¿
èŠãªå Žåã«ã®ã¿å€æŽããå¿
èŠããããŸããã

ã€ãŸããã¬ã»ãã·ã§ã³ïŒæ¥ä»ãšå»åž«ïŒã«é¢é£ä»ããããæ£è
ïŒå人ããŒã¿ïŒã§ãã å»åž«ã¯äºçŽããšã«ãç
æŽã蚺æãäºçŽãªã©ãããŸããŸãªçš®é¡ã®ææžã远å ã§ããŸãã ãããŠããã®ãããªæ¢åŸæŽã蚺æãããã³ä»ã®ããã¥ã¡ã³ãã«ã¯ãããããèŸæžããã®ã¿ã€ãããããŸã-åæãæã€å¥åã®ããŒãã«ã
ããŠãModelsãã©ã«ããŒã«æ°ããPacient.csãã¡ã€ã«ãäœæããåã¢ãã«ã1ã€ãã€èª¬æããŸãã äŸïŒ
è€æ°ã®ã¢ãã«ã远å ããpublic class DiagnosisType { public int ID { get; set; } [DisplayName("")] public String name { get; set; } [DisplayName("")] [DataType(DataType.MultilineText)] public String description { get; set; } } public class Diagnosis { public int ID { get; set; } [DisplayName("")] public DiagnosisType type { get; set; } [DisplayName("")] [DataType(DataType.MultilineText)] public String comments { get; set; } } public class VisitDate { public int ID { get; set; } public int doctorID { get; set; } [DisplayName(" ")] public DateTime date { get; set; } public List<Anamnesis> anamnesis { get; set; } public List<Debut> debutes { get; set; } public List<Diagnosis> diagnoses { get; set; } public List<Research> researches { get; set; } public List<Assigment> assigments { get; set; } public List<Neurostatus> neurostatuses { get; set; } public List<Review> reviews { get; set; } public List<Syndrome> syndromes { get; set; } } public enum Sex { [Display(Name = "")] A, [Display(Name = "")] F, [Display(Name = "")] M, [Display(Name = " ")] N, [Display(Name = "")] O, [Display(Name = "")] U } public class Pacient { public int ID { get; set; } [DisplayName(" ")] public Doctor doctor { get; set; } [DisplayName("")] public String name { get; set; } [DisplayName(" ")] public String cart { get; set; } [DisplayName("")] [DataType(DataType.PhoneNumber)] [Phone] public String phone { get; set; } [DisplayName(" ")] [DataType(DataType.Date)] public DateTime dateOfregistration { get; set; } [DisplayName("")] public Sex sex { get; set; } [DisplayName(" ")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime birthday { get; set; } [DisplayName("")] public String mother { get; set; } [DisplayName("")] public String father { get; set; } [DisplayName(" ")] public String adress { get; set; } [DisplayName("")] [DataType(DataType.Html)] [AllowHtml] public String comments { get; set; } public List<VisitDate> visits { get; set; } }
ã¢ãã«ã®æ®ãã®ã¯ã©ã¹ã¯ã顿šã«ãã£ãŠæ±ºå®ãããŸãã
åèïŒ
- [DisplayNameïŒ "Diagnosis"ïŒ] -ãã¥ãŒã§äœ¿çšããããã£ãŒã«ãã®äººéãèªããååãèšå®ããŸãã
- [DataTypeïŒDataType.MultilineTextïŒ] -ãã¥ãŒã§ã¯ãtextareaããã®ãã£ãŒã«ãã«èªåçã«çœ®ãæããããŸãã
- [AllowHtml] -ãã®ãã£ãŒã«ãã«htmlãä¿åã§ããŸããããã©ã«ãã§ã¯çŠæ¢ãããŠããŸãã
Entity Frameworkã®ã¢ãã«ããããŒã¿ããŒã¹ããŒãã«ãçæããããã®äžè¬çãªã¢ã€ãã¢ïŒ
- 1ã€ã®ã¢ãã«ïŒ1ã€ã®ã¯ã©ã¹ïŒ-1ã€ã®ããŒãã«ã
- æšæºã¿ã€ãã®ã¯ã©ã¹å€æ°-ããŒã¿ããŒã¹ã®ããŒãã«ãã£ãŒã«ãã
- NULLãå«ãããšãã§ããæšæºã¿ã€ããã£ãŒã«ããäœæããã«ã¯ãã¿ã€ãåã«çå笊ã远å ããå¿
èŠããããŸãã
- ã¢ãã«ã§ãããå¥ã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã¯ããã®ã¢ãã«ã«å¯Ÿå¿ããããŒãã«å
ã®ãšã³ããªãæãå€éšããŒãã£ãŒã«ããäœæããŸãã
- ã¢ãã«ã«èŠçŽ ã®ãªã¹ããå«ãããšã1察å€ã®é¢ä¿ãäœæãããŸãã å€éšããŒããªã¹ãã¢ã€ãã ã¢ãã«ã«è¿œå ãããŸãã
- å¥ã®ãªããžã§ã¯ããå«ããªã¹ãã®2ã€ã®ã¯ã©ã¹ã«å«ãããšãå€å¯Ÿå€ã®é¢ä¿ã圢æããããã®é¢ä¿ã«è¿œå ã®ããŒãã«ãäœæãããŸãã
çŽ æŽãããããã¹ãŠã®ã¢ãã«ãèšèšããŸããã æ¬¡ã«ãããããããŒã¿ããŒã¹ã®ã¢ãã«ã§ããããšãEntity Frameworkã«äŒããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãæ°ããæ¥ç¶ã³ã³ããã¹ããäœæããŸãã
1ã€ã®ã³ã³ããã¹ã-1ã€ã®ããŒã¿ããŒã¹ ã
ã³ã³ããã¹ãäœæã³ãŒã public class PacientDBContext : DbContext { public DbSet<Pacient> pacients { get; set; } public DbSet<AnamnesisEventType> anamnesisTypes { get; set; } public DbSet<Anamnesis> anamneses { get; set; } public DbSet<Debut> debutes { get; set; } public DbSet<DebutType> debuteTypes { get; set; } public DbSet<Diagnosis> diagnoses { get; set; } public DbSet<DiagnosisType> diagnosisTypes { get; set; } public DbSet<Research> researches { get; set; } public DbSet<ResearchType> researchTypes { get; set; } public DbSet<Medicine> medicines { get; set; } public DbSet<MedicineType> medicineTypes { get; set; } public DbSet<Neurostatus> neurostatuses { get; set; } public DbSet<NeuroStatusType> neuroStatusTypes { get; set; } public DbSet<Assigment> assigments { get; set; } public DbSet<AssigmentType> assigmentTypes { get; set; } public DbSet<Syndrome> syndromes { get; set; } public DbSet<SyndromeType> syndromeTypes { get; set; } public DbSet<Review> reviews { get; set; } public DbSet<VisitDate> visits { get; set; } public DbSet<Doctor> doctors { get; set; } } </lang> </spoiler> , , , . - Web.config : <spoiler title=" Web.config"> <source lang="xml"> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Users.mdf;Initial Catalog=aspnet-WebApplication2-20150526031246;Integrated Security=True" providerName="System.Data.SqlClient" /> <add name="PacientDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Pacients.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
泚æïŒ è©æ¬ºïŒ ããã©ã«ãã§ã¯ãããã©ã«ãã³ã³ããã¹ãã¯
Data Source =ïŒLocalDbïŒ\ MSLocalDBã§ãããå±éåã«SQL Server Express 2014ã§ããããšã倿ããŸãããããã¹ãã£ã³ã°ã¯ããã«ã€ããŠäœãç¥ããŸããã§ããïŒ Express 2012ãããã«ã€ã³ã¹ããŒã«ãïŒããã§ãªãå ŽåïŒã
v11.0ã§ä¿®æ£ããããšãã
å§ãããŸãã
ããã§ãã¢ããªã±ãŒã·ã§ã³ãèµ·åããã ãã§ã·ã¹ãã ã¯æ°ããããŒã¿ããŒã¹ãäœæããŸã... ããã¯ããã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãæåã«èŠæ±ãããšãã«åããŠèµ·ãããŸããã ãã ãããµãŒããŒãã©ãŠã¶ãŒã®å·ŠåŽã®ããŒã¿ã«ã¢ã¯ã»ã¹ãããšãäœæãããããŒã¿ããŒã¹ã確èªã§ããŸãã

ã¡ãªã¿ã«ãåŸã§ã¢ãã«ãå°ã倿Žããããäœãã远å ãããããå¿
èŠãããå Žåã¯ãããŒã¹ãåäœæããå¿
èŠã¯ãããŸããã ããã«ã¯èªåç§»è¡ããããŸãã æäœæé ïŒããã±ãŒãžãããŒãžã£ãŒã³ã³ãœãŒã«ãéãã
Enable-Migrations âEnableAutomaticMigrations -ContextTypeName WebApplication2.Models.PacientDBContexã³ãã³ãã䜿çšããŠç§»è¡ãæå¹ã«ããããŒã¿ããŒã¹ãæŽæ°ããããã«ãä»åŸ
update-databaseã³ãã³ã
ãçºè¡ããŸãã 詳现ã¯
ãã¡ã ã

ã³ã³ãããŒã©ãŒã®è¿œå
次ã®ã¹ãããã¯ãã·ã¹ãã å
ã®åããŒã¿ã¿ã€ãã«ã³ã³ãããŒã©ãŒã远å ããããšã§ãã ããã»ã¹ã¯èªåçã«æåã§è¡ãããŸãã ããŒã¿åããšã«ã³ã³ãããŒã©ãŒã远å ããå¿
èŠããããŸãã
ã³ã³ãããŒã©ãŒã远å ããããã»ã¹ ããã§ããã¹ãŠã®ããŒã¿ã衚瀺ã远å ã倿Žããããã®ã³ã³ãããŒã©ãŒãšæšæºãã¥ãŒãã§ããŸããïŒ Django管çããã«ã®ããã«ããããããã€ã³ãã§ããŸããïŒ
ãããŠããïŒ æšæºã§ã¯ãã¢ãã«ã¬ãã«ã§ã¯ãã®ãããªé¢ä¿ããããŸãããæ£è
ãå
¥é¢æ¥ãšé¢é£ä»ããããšã¯ã§ããŸããã ãã®ç¬éãããæ¥œãã¿ãå§ãŸããŸãïŒ æ£è
ããŒãžã«ãã¹ãŠã®ããŒã¿ã衚瀺ããå¿
èŠããããŸãã
ãããè¡ãã«ã¯ãPacientsContrtoller.csã®Detailsã¡ãœããã倿ŽããŸãã
public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); }
ãã®ã²ã©ããLINQã¯ãšãªã§ã¯ã絶察ã«ãã¹ãŠã®æ£è
ããŒã¿ãèªã¿èŸŒãããã·ã¹ãã ã«èŠæ±ããŸãã ããã«ã¯ãIncludeã䜿çšããããã¹ãã®ç¬¬2ã¬ãã«ã«ã¯Selectã䜿çšãããŸãã
CVã§ååãŸãã¯åèªã«ããæ€çŽ¢ãå®è£
ããã«ã¯ãããªãããŒãªãªã¯ãšã¹ãã䜿çšããŸãã
public ActionResult SearchByName(String name = "", String mode = "name") { if (mode.Equals("name")) return PartialView(db.pacients.Where(p => p.name.Contains(name)).ToList()); else { var results = db.pacients.Where(p => p.visits.Any(vd => vd.reviews.Any(r => r.comments.ToLower().Contains(name.ToLower())))); return PartialView(results.ToList()); } }
ã³ã³ãããŒã©ãŒã¡ãœããã®ãã©ã¡ãŒã¿ãŒã¯ãGETãªã¯ãšã¹ãïŒçå笊ã®åŸã®ã¢ãã¬ã¹ããŒïŒã«å«ãŸããŠãããã®ã§ããããšãæãåºããŸãã
æ®ãã®ã¡ãœããã¯åºæ¬çã«å€æŽãããŸããã
åããã¥ã¡ã³ãã³ã³ãããŒã©ãŒïŒå»çå±¥æŽã蚺æãå±¥æŽæžãªã©ïŒã§ãæšæºã®ã¡ãœããã«ä»£ãã4ã€ã®æ°ããã¡ãœãããäœæããŸããããããã¯AJAXã®éšåãã¥ãŒãè¿ããŸãã
å®è£
public ActionResult pacientDetails(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Anamnesis anamnesis = db.anamneses.Include(p => p.type).Where(p => p.ID == id).First(); if (anamnesis == null) { return HttpNotFound(); } return PartialView("~/views/Anamnesis/pacientDetails.cshtml", anamnesis); }
ããã©ã«ãã®ãã¥ãŒã倿Žãã
ããã§ã®ã¿ã¹ã¯ã¯ãæ£è
ã«é¢ãã衚çŸã倿ŽããŠãæ£è
ã«é¢ãããã¹ãŠã®æ
å ±ã衚瀺ããããŒãžãæŽæ°ããã«æ£è
ãç·šéã§ããããã«ããããšã§ãã
ã¡ã€ã³ããŒãžã§ã¯ãéžæãã2ã€ã®ãã©ã¡ãŒã¿ãŒã§æ€çŽ¢ãã©ãŒã ã衚瀺ããJQueryã䜿çšããŠçµæãåçã«ããŒãããŸãã
æ£è
ãªã¹ãããŒãžã³ãŒã-Views / Pacient / Details.cshtml @{ ViewBag.Title = "Index"; } <div class="row"> <div class="col-md-6"> <h2> </h2> </div> <div class="col-md-6"> <a href="/Pacients/Create/" class="btn btn-success pull-right" style="margin-top: 20px; margin-right: 20px;"><span class="glyphicon glyphicon-plus"></span></a> </div> </div> <div> <form class="form-horizontal"> <div class="input-group input-group-lg col-md-12 bs-callout bs-callout-primary"> <label for="search" class="sr-only"> </label> <div class="col-sm-10"> <input type="text" placeholder=" " name="name" class="col-sm-10 form-control" id="search" /> </div> <div class="col-sm-2"> <input type='button' id="submit" value='' class="btn" /> </div> <div class="col-sm-10"> <label class="radio-inline"> <input type="radio" name="searchOptions" id="searchByName" value="name" checked> </label> <label class="radio-inline"> <input type="radio" name="searchOptions" id="reviewSearch" value="review"> </label> </div> </div> </form> </div> <div id="results"></div> <script type="text/javascript"> $(document).ready(function () { </script>
æ°ããæ£è
ãšå€æŽãäœæããããã®ãã³ãã¬ãŒãã¯å€æŽãããŸããã ããããæ£è
ã«é¢ãã詳现æ
å ±ã®ããŒãžã¯ãäžåºŠã«è€æ°ã®æåºã«åå²ããå¿
èŠããããŸããã
æ£è
ããŒãžã®ããã㌠@model WebApplication2.Models.Pacient @{ ViewBag.Title = "Details"; } <div class="row"> <div class="col-md-2" style=" margin-top: 30px;"> <a href="@Url.Action("Index" )" class = "btn btn-default btn-lg"><span class="glyphicon glyphicon-backward" aria-hidden="true"></span> </a> </div> <div class="col-md-6"><h2>@Html.DisplayFor(model => model.name)</h2> <h4>@Html.DisplayNameFor(model => model.doctor): @Html.DisplayFor(model => model.doctor.name)</h4> </div> @if (Model.visits.Count==0 || !(Model.visits.First().date.Equals(DateTime.Today))) { <span style=" margin-top: 30px;margin-right: 30px;" class="pull-right"> <a href="@Url.Action("Create", "visitDates", new {id=Model.ID })" class="btn btn-default btn-primary btn-lg"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> </a> </span> } </div> <hr /> @Html.Partial("~/Views/Pacients/visitsView.cshtml", Model)
Html .Partialã³ãã³ãã®
ããããŒïŒ "ã/ Views / Pacients / visitsView.cshtml"ãModelïŒã¯ããã¹ãŠã®ããã¥ã¡ã³ãã®ãªã¹ããããŒãããŸãã ããã¥ã¡ã³ãã®ãªã¹ãã®äžçªäžã«ã¯ãåçãªããŒã¿èªã¿èŸŒã¿ã®ããã®äžè¬çãªJS颿°ããããŸãã VS2015ã¯ããã©ã«ãã§AngularJSããµããŒãããŸããããã®ãããžã§ã¯ãã§ã¯ãAngularJSãªãã§è¡ãããšã«ããŸãã-ããç°¡åã§ãããããçè§£ããããã§ãã 幞ããªããšã«ãããã«ã¯4ã€ã®æé ã ããå¿
èŠã§ããã
åä»ã¿ãã«ã¯ãã¹ãŠã®ããŒã¿ãå
¥åŠæ¥é ã«ãœãŒããããæ®ãã®ã¿ãã«ã¯åã
ã®çš®é¡ã®ããã¥ã¡ã³ãããããŸãã ç°¡ç¥åããããã«ããã¹ãŠãåã³ç°ãªãæ¹æ³ã§ã¬ã€ã¢ãŠããããŸãã
ãã¥ãŒ/ Pacients / visitsView.cshtml @model WebApplication2.Models.Pacient @using WebApplication2.Models <script> function Delete(controller, id) { if (confirm(" ?")) { $('#' + controller + 'Div' + id).load('/' + controller + '/pacientDelete/' + id); $('.' + controller + 'Div' + id).load('/' + controller + '/pacientDelete/' + id); } } function Cancel(controller, id) { if (confirm(" , . ?")) { $("#" + controller + "Tab").find('#' + controller + 'Div' + id).load('/' + controller + '/pacientCancel/' + id); $("#" + controller + "Tab").find('.' + controller + 'Div' + id).load('/' + controller + '/pacientCancel/' + id); } } function CancelEdit(controller, id) { $.get('/' + controller + '/pacientDetails/' + id, function (data) { res = $.parseHTML('<div>' + data + '</div>'); if ($(res).find('.' + controller + 'Div' + id).html() != "") { var content = $(res).find('.' + controller + 'Div' + id).html(); } else { var content = $(res).find('#' + controller + 'Div' + id).html(); } $('#' + controller + 'Div' + id).html(content); $('.' + controller + 'Div' + id).html(content); }); } function LoadEditForm(controller, id) { if ($("#" + controller + "Tab").hasClass("active")) { $("#" + controller + "Tab").find('#' + controller + 'Div' + id).load('/' + controller + '/pacientEdit/' + id); $("#" + controller + "Tab").find('.' + controller + 'Div' + id).load('/' + controller + '/pacientEdit/' + id); } else { $("#dateTab").find('#' + controller + 'Div' + id).load('/' + controller + '/pacientEdit/' + id); $("#dateTab").find('.' + controller + 'Div' + id).load('/' + controller + '/pacientEdit/' + id); } } function PostEditForm(controller, id, mce) { if (mce == true) tinyMCE.triggerSave(); $.ajax({ type: "POST", url: '/' + controller + '/pacientEdit/' + id, data: $('.' + controller + 'Edit' + id).serialize() + $('#' + controller + 'Edit' + id).serialize(), </script> <div role="tabpanel"> <ul class="nav nav-pills nav-justified"> <li role="presentation" class="active"><a href="#dateTab" aria-controls="dateTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#InfoTab" aria-controls="InfoTab" role="tab" data-toggle="tab"> </a></li> <li role="presentation"><a href="#AnamnesisTab" aria-controls="AnamnesisTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#DebutsTab" aria-controls="DebutsTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#DiagnosesTab" aria-controls="DiagnosesTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#SyndromesTab" aria-controls="SyndromesTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#ResearchesTab" aria-controls="ResearchesTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#AssigmentsTab" aria-controls="AssigmentsTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#NeurostatusTab" aria-controls="NeurostatusTab" role="tab" data-toggle="tab"></a></li> <li role="presentation"><a href="#ReviewsTab" aria-controls="ReviewsTab" role="tab" data-toggle="tab"></a></li> </ul> <div class="tab-content"> <div role="tabpanel" class="tab-pane active fade in" id="dateTab"> @if (Model.visits.Count == 0) { <div class="bs-callout bs-callout-success"> <p> .</p> </div> } @if (Model.visits.Count != 0 && Model.visits.First().date.Equals(DateTime.Today)) { @Html.Partial("~/Views/Pacients/documentList.cshtml", new documentList { num = 1, add = true, visit = Model.visits.First() }) } @{ int num = 9; } @foreach (var visit in Model.visits) { if (visit.date.Equals(DateTime.Today)) { continue; } @Html.Partial("~/Views/Pacients/documentList.cshtml", new documentList { num = num, add = false, visit = visit }) num = num + 8; } </div> <div role="tabpanel" class="tab-pane fade" id="InfoTab"> @Html.Partial("~/Views/Pacients/PersonalData.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="AnamnesisTab"> @Html.Partial("~/Views/Pacients/anamnesisList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="DebutsTab"> @Html.Partial("~/Views/Pacients/debutList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="DiagnosesTab"> @Html.Partial("~/Views/Pacients/diagnosisList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="SyndromesTab"> @Html.Partial("~/Views/Pacients/syndromList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="ResearchesTab"> @Html.Partial("~/Views/Pacients/researchList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="AssigmentsTab"> @Html.Partial("~/Views/Pacients/assigmentList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="NeurostatusTab"> @Html.Partial("~/Views/Pacients/neurostatusList.cshtml", Model) </div> <div role="tabpanel" class="tab-pane fade" id="ReviewsTab"> @Html.Partial("~/Views/Pacients/reviewList.cshtml", Model) </div> </div> </div>
äŸãšããŠãããšãã°å±¥æŽã®ããã¿ãã®ãã¥ãŒã®1ã€ãèããŸãã
ãã¥ãŒ/ Pacient / anamnesisList.cshtml @model WebApplication2.Models.Pacient @using WebApplication2.Models <div class="bs-callout bs-callout-success"> <h5> </h5> <p> </p> <div class="tabContent"> @foreach (var visit in Model.visits) { foreach (var anamnes in visit.anamnesis) { @Html.Partial("~/Views/Anamnesis/pacientDetails.cshtml", anamnes) } } </div> </div>
ãåç¥ã®ããã«ãããã¥ã¡ã³ãã³ã³ãããŒã©ãŒã§pacientDetailsãpacientCreateãpacientEditãpacientDeleteã®4ã€ã®æ°ããã¡ãœãããäœæããŸããã ãããããã¯äžèšã®è¡šçŸãåç
§ããå¿
èŠããããŸãã äœæããå¿
èŠããããŸãïŒ
æ°ããéšåãã¥ãŒã®è¿œå ãã¥ãŒãäœæãããããããå
¥åããŸãã
ãã¥ãŒ/ã¢ãã ãã·ã¹/ pacientDetails.cshtml @model WebApplication2.Models.Anamnesis <div class="@String.Format("AnamnesisDiv{0}", Model.ID) row"> <div class="col-md-4"><strong> @Html.DisplayFor(model => model.type.name) </strong> </div> <div class="col-md-6"><p> @Html.DisplayFor(model => model.comments) </p> </div> <div class="col-md-2"> <button class="btn btn-success btn-sm" onclick="LoadEditForm('Anamnesis', @Model.ID)"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> </button> <button class="btn btn-danger btn-sm" onclick="Delete('Anamnesis', @Model.ID)"> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> </button> </div> </div> <hr />
ããã§ã¯ãéåžžã®ååã®ä»£ããã«ãèŠçŽ åã衚瀺ããããã«
Html .DisplayForïŒmodel => model.type.nameïŒã䜿çšãããŸãã ããã«ãããã¢ãã«å
ã§ååãæå®ã§ããŸãïŒæçš¿ã®åé ã§è¡ã£ãããã«ïŒã
åæ§ã«ããã¥ãŒã䜿çšããŠæ¢åŸæŽã倿Žã§ããŸãã
ãã¥ãŒ/ã¢ãã ãã·ã¹/ pacientEdit.cshtml @model WebApplication2.Models.Anamnesis <form class="@String.Format("AnamnesisEdit{0}", Model.ID)"> @Html.AntiForgeryToken() @Html.HiddenFor(model => model.ID) @Html.HiddenFor(model => model.type.ID) <div class="form-horizontal"> <div class="col-md-4"> <strong> @Html.DisplayFor(model => model.type.name) </strong> </div> <div class="col-md-6"> @Html.EditorFor(model => model.comments, new { htmlAttributes = new { @class = "form-control", @placeholder = Html.DisplayNameFor(model => model.comments) } }) @Html.ValidationMessageFor(model => model.comments, "", new { @class = "text-danger" }) </div> <div class="col-md-2"> <a onclick="CancelEdit('Anamnesis', @Model.ID);" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-backward" aria-hidden="true"></span></a> <a onclick="PostEditForm('Anamnesis', @Model.ID);" class="btn btn-primary btn-sm"><span class="glyphicon glyphicon-save" aria-hidden="true"></span></a> </div> </div> </form>
åèïŒ
- Html .AntiForgeryTokenïŒïŒ-äžæã®ãŠãŒã¶ãŒããŒã远å ããŸã
- Html .HiddenForïŒmodel => model.IDïŒ-ãã£ãŒã«ãã«<input type = "hidden" ...>ã远å ããŸã
- Html .ValidationMessageForïŒmodel => model.commentsã ""ãnew { class = "text-danger"}ïŒ-æ€èšŒã¡ãã»ãŒãžã衚瀺ããŸã
- Html .EditorForïŒmodel => model.commentsïŒ-ãã£ãŒã«ãã®ã¿ã€ãïŒããšãã°ãinputãŸãã¯textareaïŒã«åŸã£ãŠå
¥åãã£ãŒã«ãã衚瀺ããŸã
- CancelEditãšPostEditFormã¯ãåè¿°ã®JSããã·ãŒãžã£ã§ãã
ããããæ°ãããªããžã§ã¯ãã®äœæã¯ããå°é£ã§ããããããã£ã¯ã·ã§ããªã®ãªããžã§ã¯ãã«é¢é£ä»ããå¿
èŠããããããã¯ç°ãªãã¢ãã«ã§ãããããŒã¿ãæã€å¥ã®ããŒãã«ã§ãã å¯èœãªãã¹ãŠã®ãªãã·ã§ã³ã®ãªã¹ããäœæãã©ãŒã ã«ãã©ãã°ããå¿
èŠããããŸãã ç°¡åã«ããŒãã§ããŸããããã¥ãŒã«æž¡ãããšã¯ã§ããŸãããå¿
èŠãªãã©ã¡ãŒã¿ãŒã¯1ã€ã ãã§ããã¢ãã«ã§ãã æ°ããã¢ãã«ãäœæããå¿
èŠããããŸã...
æ°ãããã¡ã€ã«
Models \ viewModels.csãäœæãããã¬ãŒã³ããŒã·ã§ã³çšã«ã¢ãã«ã®ã³ãŒãã远å ããŸãã ã³ã³ããã¹ãã«è¿œå ããå¿
èŠã¯ãããŸããã
å±¥æŽã远å ããã¢ãã«ã³ãŒã public class newAnamnesis { public Anamnesis anamnesis { get; set; } public int visitID { get; set; } public int? num { get; set; } public List<AnamnesisEventType> eventTypes { get; set; } }
Controllers \ AnamnesisController.csã®pacientCreate颿°ãæãåºããŠãã ããã
pacientCreate-æ°ããå±¥æŽã远å ããã¡ãœãã ãµãŒããã¹ãŠæºåãã§ããããã§ãã ãããã®æäœã¯ãä»ã®ãã¹ãŠã®çš®é¡ã®ããã¥ã¡ã³ãã«å¯ŸããŠã®ã¿å®è¡ããŸãã ãšããã§ãçè«çã«ã¯ãã³ãã¬ãŒããã¥ãŒãäœæãããªã©ããããèªååã§ããŸãããRazorã§ãããè¡ãããšã¯ã§ããŸããã ç§ãééã£ãŠããå Žåã¯ä¿®æ£ããŸãã
äœæãã©ãŒã ã¯ããªãã¯ã¿ãã«ããŒããããŸãïŒ
[ã¬ã»ãã·ã§ã³]ã¿ãã®DocumentList.cshtmlãã¥ãŒã³ãŒã @model WebApplication2.Models.documentList @using WebApplication2.Models @{ var cl = "bs-callout-primary"; var ac = ""; } @if (Model.add == false) { cl = "bs-callout-success"; ac = ""; } <div class="bs-callout @cl"> @if (Model.add == false) { <h5> @Model.visit.date</h5> } else { <h5> </h5> } @if (Model.visit.anamnesis.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var anamnes in Model.visit.anamnesis) { @Html.Partial("~/Views/Anamnesis/pacientDetails.cshtml", anamnes); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Anamnesis", new { num = Model.num, visitID = Model.visit.ID}) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.debutes.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var debut in Model.visit.debutes) { @Html.Partial("~/Views/Debuts/pacientDetails.cshtml", debut); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Debuts", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.diagnoses.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var diagnosis in Model.visit.diagnoses) { @Html.Partial("~/Views/Diagnoses/pacientDetails.cshtml", diagnosis); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Diagnoses", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.syndromes.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var syndrome in Model.visit.syndromes) { @Html.Partial("~/Views/Syndromes/pacientDetails.cshtml", syndrome); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Syndromes", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.researches.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var research in Model.visit.researches) { @Html.Partial("~/Views/Researches/pacientDetails.cshtml", research); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Researches", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.assigments.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var assigment in Model.visit.assigments) { @Html.Partial("~/Views/Assigments/pacientDetails.cshtml", assigment); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Assigments", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.neurostatuses.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var neurostatus in Model.visit.neurostatuses) { @Html.Partial("~/Views/Neurostatus/pacientDetails.cshtml", neurostatus); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Neurostatus", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } @if (Model.visit.reviews.Count > 0 || Model.add == true) { <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="@String.Format("#documentHeading{0}", Model.num)" onclick="$('@String.Format("#document{0}", Model.num)').collapse('toogle');"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="@String.Format("#document{0}", Model.num)" aria-expanded="true" aria-controls="collapseOne"> <span class="pull-right"><small>@Model.visit.date</small></span> </a> </h4> </div> <div id="@String.Format("document{0}", Model.num)" class="panel-collapse collapse @ac" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body"> <div id="@String.Format("documentData{0}", Model.num)"> @foreach (var review in Model.visit.reviews) { @Html.Partial("~/Views/Reviews/pacientDetails.cshtml", review); } </div> @if (Model.add == true) { @Html.Action("pacientCreate", "Reviews", new { num = Model.num, visitID = Model.visit.ID }) } </div> </div> </div> </div> Model.num = Model.num + 1; } <div class="row"> @Html.ActionLink(" ", "Delete", "VisitDates", new { id = Model.visit.ID }, new { @class = "btn btn-danger btn-sm pull-right", style = "margin-top: 10px;margin-right: 15px;" }) </div> </div>
ã¡ãªã¿ã«ã圌ã«ãšã£ãŠã¯ãå¥ã®ãã¬ãŒã³ããŒã·ã§ã³ãå¿
èŠã§ããããã®çµæã次ã®ããã«ãªããŸããã


ãµãŒããŒã«å
Ž
FTPçµç±ã§ãµãŒããŒã«ãããã€ããã«ã¯ããããžã§ã¯ãããããã€ããããŒã¿ããŒã¹ãåå¥ã«ãããã€ããå¿
èŠããããŸãããããè¡ãã«ã¯ããããžã§ã¯ããå³ã¯ãªãã¯ããŠãããªã±ãŒã·ã§ã³ãéžæããŸããããŠã³ããŒãããåã«ããããžã§ã¯ãã®ã«ãŒãã«ããWeb.Release.Configãç·šéããconnectionStringãæžã蟌ãã§ãµãŒããŒäžã®ããŒã¿ããŒã¹ã«æ¥ç¶ããå¿
èŠããããŸãããããè¡ãæ¹æ³ã«é¢ããæç€ºã¯ããã¡ã€ã«èªäœã«Microsoftã«ãã£ãŠæ
éã«æäŸãããŠããŸããããŒã¿ããŒã¹ã®ãšã¯ã¹ããŒãã¯ãSQL Server Management Studioã䜿çšããŠæåã§å®è¡ããå¿
èŠããããŸãããAzureã䜿çšãããšããã¹ãŠãããã«ã·ã³ãã«ã«ãªããŸã-ã¹ã¿ãžãªèªäœãããŒã¿ããŒã¹ãå
¬éããŸãããããã«
æ®å¿µãªããã1ã€ã®èšäºã§ãã¹ãŠã®åŸ®åŠãªç¹ã説æããããšã¯éåžžã«å°é£ã§ãããäžè¬çãªãã€ã³ãã匷調ããããšããŸããããããžã§ã¯ãã®å®å
šãªã³ãŒãã¯GitHubã§æäŸãããŠããŸãïŒhttps://github.com/roctbb/ICNE_EHR/ãããã€ãã®ããšãæ£ããããªãã£ããšæããŸããã³ã¡ã³ããããã ããã°ããããã§ãã䜿çšããããœãŒã¹ã¯ãasp.netãšstackoverflow.comã®ç¡æ°ã®è³ªåã§ããã