public ActionResult Save(DetailsPatient item)
        {
            DetailsPatient element = new DetailsPatient();

            element.date         = item.date;
            element.reason       = item.reason;
            element.amount       = item.amount;
            element.resourceName = item.resourceName;
            element.id           = item.id;
            element.patientId    = item.patientId;


            var conn = new FhirClient("http://localhost:8080/baseR4");

            conn.PreferredFormat = ResourceFormat.Json;

            Patient patient = conn.Read <Patient>("Patient/" + element.patientId);

            UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4");

            uriBuilder.Path = "Patient/" + patient.Id;
            Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything");

            ViewBag.Surname   = patient.Name[0].Family;
            ViewBag.ID        = patient.Id;
            ViewBag.Name      = patient.Name[0].Given.FirstOrDefault();
            ViewBag.birthDate = new Date(patient.BirthDate.ToString());


            if (resultResource is Bundle)
            {
                Bundle resultBundle = resultResource as Bundle;
                while (resultBundle != null)
                {
                    foreach (var i in resultBundle.Entry)
                    {
                        DetailsPatient fetchedElement = new DetailsPatient();
                        switch (i.Resource.TypeName)
                        {
                        case "Observation":
                            Observation observation = (Observation)i.Resource;

                            if (observation.Id == item.id)
                            {
                                fetchedElement.date   = observation.Effective;
                                fetchedElement.reason = observation.Code.Text;
                                fetchedElement.amount = observation.Meta.VersionId;


                                UriBuilder uriBuilderBack = new UriBuilder("http://localhost:8080/baseR4");
                                uriBuilderBack.Path = "Observation/" + item.id;
                                Observation resultResourceBack = conn.Read <Observation>(uriBuilderBack.Uri);


                                resultResourceBack.Code.Text = item.reason;
                                conn.Update(resultResourceBack);
                            }
                            break;

                        case "MedicationRequest":
                            MedicationRequest medicationRequest = (MedicationRequest)i.Resource;
                            if (medicationRequest.Id == item.id)
                            {
                                fetchedElement.amount = medicationRequest.Meta.VersionId;

                                //fetchedElement.date = medicationRequest.AuthoredOn
                                //fetchedElement.reason += ((CodeableConcept)medicationRequest.Medication).Text;
                            }
                            break;
                        }
                    }
                    resultBundle = conn.Continue(resultBundle, PageDirection.Next);
                }
            }



            return(View(element));
        }
        public ViewResult Edit(string id, string resourceName, string patientId)
        {
            var conn = new FhirClient("http://localhost:8080/baseR4");

            conn.PreferredFormat = ResourceFormat.Json;

            Patient patient = conn.Read <Patient>("Patient/" + patientId);

            UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4");

            uriBuilder.Path = "Patient/" + patient.Id;
            Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything");

            ViewBag.Surname   = patient.Name[0].Family;
            ViewBag.ID        = patient.Id;
            ViewBag.Name      = patient.Name[0].Given.FirstOrDefault();
            ViewBag.birthDate = new Date(patient.BirthDate.ToString());

            var selectedElement = new DetailsPatient();

            if (resultResource is Bundle)
            {
                Bundle resultBundle = resultResource as Bundle;
                while (resultBundle != null)
                {
                    foreach (var i in resultBundle.Entry)
                    {
                        DetailsPatient element = new DetailsPatient();
                        switch (i.Resource.TypeName)
                        {
                        case "Observation":
                            Observation observation = (Observation)i.Resource;
                            if (observation.Id == id)
                            {
                                element.id           = observation.Id;
                                element.resourceName = "Observation";
                                element.date         = observation.Effective;
                                element.reason       = observation.Code.Text;
                                element.amount       = observation.Meta.VersionId;


                                element.patientId = patient.Id;

                                selectedElement = element;
                            }
                            break;

                        case "MedicationRequest":
                            MedicationRequest medicationRequest = (MedicationRequest)i.Resource;
                            if (medicationRequest.Id == id)
                            {
                                element.id           = medicationRequest.Id;
                                element.resourceName = "MedicationRequest";

                                element.reason   += ((CodeableConcept)medicationRequest.Medication).Text;
                                element.patientId = patientId;
                                element.amount    = medicationRequest.Meta.VersionId;

                                selectedElement = element;
                            }
                            break;
                        }
                    }
                    resultBundle = conn.Continue(resultBundle, PageDirection.Next);
                }
            }


            return(View(selectedElement));
        }