Esempio n. 1
0
        public HttpStatusCode Update(string patid, String format, String data)
        {
            int id = Int32.Parse(patid);

            var resource = Parse(format, data);
            var patient  = PatientMapper.MapResource(resource);

            patient.PatientId = id;

            // Upate "Patient" resource in the repository
            _repository.UpdatePatient(patient);

            var response = WebOperationContext.Current.OutgoingResponse;

            var    uri      = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.BaseUri;
            string fhirbase = uri.AbsoluteUri;
            string host     = uri.Host;

            response.LastModified = patient.Timestamp;
            response.StatusCode   = HttpStatusCode.Created;
            response.Headers.Add("Host", host);

            response.Location = String.Format("{0}/Patient/{1}/_history/{2}", fhirbase, patient.PatientId, patient.Version);
            return(HttpStatusCode.OK);
        }
Esempio n. 2
0
        public HttpResponseMessage Create(Hl7.Fhir.Model.Patient fhirPatient)
        {
            HttpResponseMessage message = new HttpResponseMessage();

            Patient patient = PatientMapper.MapResource(fhirPatient);

            patient = (Patient)ControllerUtils.AddMetadata(patient, ControllerUtils.CREATE);

            db.Patients.Add(patient);
            db.SaveChanges();

            message.Content          = new StringContent("Patient created!", Encoding.UTF8, "text/html");
            message.StatusCode       = HttpStatusCode.Created;
            message.Headers.Location = new Uri(Url.Link("SpecificPatient", new { id = patient.PatientId }));

            return(message);
        }
Esempio n. 3
0
        public HttpResponseMessage Update(Hl7.Fhir.Model.Patient fhirPatient, int patientId)
        {
            HttpResponseMessage message = new HttpResponseMessage();

            if (patientId != int.Parse(fhirPatient.Id))
            {
                message.StatusCode = HttpStatusCode.BadRequest;
                message.Content    = new StringContent("Mismatch of patient ID! Provided " + patientId + " in URL but found " + fhirPatient.Id + "in payload!", Encoding.UTF8, "text/html");
                return(message);
            }

            Patient patient = PatientMapper.MapResource(fhirPatient);

            patient = (Patient)ControllerUtils.AddMetadata(patient, ControllerUtils.UPDATE);

            db.Entry(patient).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PatientExists(patientId))
                {
                    message.StatusCode = HttpStatusCode.NotFound;
                    message.Content    = new StringContent("Patient with id " + patientId + " not found!", Encoding.UTF8, "text/html");
                    return(message);
                }
                else
                {
                    throw;
                }
            }

            message.StatusCode = HttpStatusCode.NoContent;
            return(message);
        }