Inheritance: Hl7.Fhir.Model.DomainResource, System.ComponentModel.INotifyPropertyChanged
Exemple #1
0
        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
Exemple #3
0
        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);
        }