public async Task<ActionResult> CheckVerification(Models.Medicine med) { using(var dbcontext = new ApplicationDbContext()) { var allergyIntolerance = new AllergyIntolerance(Constants.HapiFhirServerBase, userManager, authManager); var user = dbcontext.Users.FirstOrDefault(a => a.Email == this.User.Identity.Name); int patientID; if(user == null || !int.TryParse(user.FhirPatientId, out patientID)) { return new HttpStatusCodeResult(404, "Patient not found"); } if(string.IsNullOrWhiteSpace(user.FhirPatientId)) { //todo: figure out what to show if the patient has no fhir data setup return new HttpStatusCodeResult(404, "Patient does not have FHIR data"); } var medications = new List<string>() { med.Name }; med.Found = await allergyIntolerance.IsAllergicToMedications(patientID, medications); } return View(med); }
} //end GetPatientsKnownAllergies public string CreateAllergyIntolerance(string patientID, string allergyIntoleranceCode) { //Create an empty Allergy Intolerance resource and then assign attributes Hl7.Fhir.Model.AllergyIntolerance fhirAllergyIntolerance = new Hl7.Fhir.Model.AllergyIntolerance(); Coding codingList = new Coding(); codingList.Code = allergyIntoleranceCode; fhirAllergyIntolerance.Substance = new CodeableConcept(); fhirAllergyIntolerance.Substance.Coding.Add(codingList); // Hl7.Fhir.Model.Patient fhirPatient = fhirClient.Read<Hl7.Fhir.Model.Patient>("Patient/21613"); fhirAllergyIntolerance.Patient = new ResourceReference(); fhirAllergyIntolerance.Patient.Reference = "Patient/" + patientID; //Push the local patient resource to the FHIR Server and expect a newly assigned ID var allergyResource = fhirClient.Create <Hl7.Fhir.Model.AllergyIntolerance>(fhirAllergyIntolerance); String returnID = "The newly created Allergy Intolerance ID is: "; returnID += allergyResource.Id; return(returnID); }//end CreateAllergyIntolerance method
public static void SerializeAllergyIntolerance(Hl7.Fhir.Model.AllergyIntolerance value, IFhirWriter writer, bool summary) { writer.WriteStartRootObject("AllergyIntolerance"); writer.WriteStartComplexContent(); // Serialize element _id if (value.LocalIdElement != null) { writer.WritePrimitiveContents("_id", value.LocalIdElement, XmlSerializationHint.Attribute); } // Serialize element extension if (value.Extension != null && !summary && value.Extension.Count > 0) { writer.WriteStartArrayElement("extension"); foreach (var item in value.Extension) { writer.WriteStartArrayMember("extension"); ExtensionSerializer.SerializeExtension(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element language if (value.LanguageElement != null && !summary) { writer.WriteStartElement("language"); CodeSerializer.SerializeCode(value.LanguageElement, writer, summary); writer.WriteEndElement(); } // Serialize element text if (value.Text != null && !summary) { writer.WriteStartElement("text"); NarrativeSerializer.SerializeNarrative(value.Text, writer, summary); writer.WriteEndElement(); } // Serialize element contained if (value.Contained != null && !summary && value.Contained.Count > 0) { writer.WriteStartArrayElement("contained"); foreach (var item in value.Contained) { writer.WriteStartArrayMember("contained"); FhirSerializer.SerializeResource(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element identifier if (value.Identifier != null && !summary) { writer.WriteStartElement("identifier"); IdentifierSerializer.SerializeIdentifier(value.Identifier, writer, summary); writer.WriteEndElement(); } // Serialize element criticality if (value.Criticality_Element != null && !summary) { writer.WriteStartElement("criticality"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.AllergyIntolerance.Criticality>(value.Criticality_Element, writer, summary); writer.WriteEndElement(); } // Serialize element sensitivityType if (value.SensitivityType_Element != null && !summary) { writer.WriteStartElement("sensitivityType"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.AllergyIntolerance.SensitivityType>(value.SensitivityType_Element, writer, summary); writer.WriteEndElement(); } // Serialize element recordedDate if (value.RecordedDateElement != null && !summary) { writer.WriteStartElement("recordedDate"); FhirDateTimeSerializer.SerializeFhirDateTime(value.RecordedDateElement, writer, summary); writer.WriteEndElement(); } // Serialize element status if (value.StatusElement != null && !summary) { writer.WriteStartElement("status"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.AllergyIntolerance.SensitivityStatus>(value.StatusElement, writer, summary); writer.WriteEndElement(); } // Serialize element subject if (value.Subject != null && !summary) { writer.WriteStartElement("subject"); ResourceReferenceSerializer.SerializeResourceReference(value.Subject, writer, summary); writer.WriteEndElement(); } // Serialize element recorder if (value.Recorder != null && !summary) { writer.WriteStartElement("recorder"); ResourceReferenceSerializer.SerializeResourceReference(value.Recorder, writer, summary); writer.WriteEndElement(); } // Serialize element substance if (value.Substance != null && !summary) { writer.WriteStartElement("substance"); ResourceReferenceSerializer.SerializeResourceReference(value.Substance, writer, summary); writer.WriteEndElement(); } // Serialize element reaction if (value.Reaction != null && !summary && value.Reaction.Count > 0) { writer.WriteStartArrayElement("reaction"); foreach (var item in value.Reaction) { writer.WriteStartArrayMember("reaction"); ResourceReferenceSerializer.SerializeResourceReference(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element sensitivityTest if (value.SensitivityTest != null && !summary && value.SensitivityTest.Count > 0) { writer.WriteStartArrayElement("sensitivityTest"); foreach (var item in value.SensitivityTest) { writer.WriteStartArrayMember("sensitivityTest"); ResourceReferenceSerializer.SerializeResourceReference(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } writer.WriteEndComplexContent(); writer.WriteEndRootObject(); }
/// <summary> /// Parse AllergyIntolerance /// </summary> public static Hl7.Fhir.Model.AllergyIntolerance ParseAllergyIntolerance(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.AllergyIntolerance existingInstance = null) { Hl7.Fhir.Model.AllergyIntolerance result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.AllergyIntolerance(); string currentElementName = reader.CurrentElementName; reader.EnterElement(); while (reader.HasMoreElements()) { var atName = reader.CurrentElementName; // Parse element extension if (atName == "extension") { result.Extension = new List <Hl7.Fhir.Model.Extension>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "extension")) { result.Extension.Add(ExtensionParser.ParseExtension(reader, errors)); } reader.LeaveArray(); } // Parse element language else if (atName == "language") { result.LanguageElement = CodeParser.ParseCode(reader, errors); } // Parse element text else if (atName == "text") { result.Text = NarrativeParser.ParseNarrative(reader, errors); } // Parse element contained else if (atName == "contained") { result.Contained = new List <Hl7.Fhir.Model.Resource>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "contained")) { result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors)); } reader.LeaveArray(); } // Parse element _id else if (atName == "_id") { result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id))); } // Parse element identifier else if (atName == "identifier") { result.Identifier = IdentifierParser.ParseIdentifier(reader, errors); } // Parse element criticality else if (atName == "criticality") { result.Criticality_Element = CodeParser.ParseCode <Hl7.Fhir.Model.AllergyIntolerance.Criticality>(reader, errors); } // Parse element sensitivityType else if (atName == "sensitivityType") { result.SensitivityType_Element = CodeParser.ParseCode <Hl7.Fhir.Model.AllergyIntolerance.SensitivityType>(reader, errors); } // Parse element recordedDate else if (atName == "recordedDate") { result.RecordedDateElement = FhirDateTimeParser.ParseFhirDateTime(reader, errors); } // Parse element status else if (atName == "status") { result.StatusElement = CodeParser.ParseCode <Hl7.Fhir.Model.AllergyIntolerance.SensitivityStatus>(reader, errors); } // Parse element subject else if (atName == "subject") { result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element recorder else if (atName == "recorder") { result.Recorder = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element substance else if (atName == "substance") { result.Substance = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element reaction else if (atName == "reaction") { result.Reaction = new List <Hl7.Fhir.Model.ResourceReference>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "reaction")) { result.Reaction.Add(ResourceReferenceParser.ParseResourceReference(reader, errors)); } reader.LeaveArray(); } // Parse element sensitivityTest else if (atName == "sensitivityTest") { result.SensitivityTest = new List <Hl7.Fhir.Model.ResourceReference>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "sensitivityTest")) { result.SensitivityTest.Add(ResourceReferenceParser.ParseResourceReference(reader, errors)); } reader.LeaveArray(); } else { errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader); reader.SkipSubElementsFor(currentElementName); result = null; } } reader.LeaveElement(); return(result); }