Ejemplo n.º 1
0
        internal static IList<Tag> ParseTags(XmlReader xr, ErrorList errors)
        {
            xr.MoveToContent();

            try
            {
                var taglist = (XElement)XElement.ReadFrom(xr);

                if (taglist.Name == BundleXmlParser.XFHIRNS + TagListSerializer.TAGLIST_ROOT)
                {
                    if (taglist.Elements().All(xe => xe.Name == BundleXmlParser.XFHIRNS + BundleXmlParser.XATOM_CATEGORY))
                        return ParseTags(taglist.Elements());
                    else
                        errors.Add("TagList contains unexpected child elements");
                }
                else
                    errors.Add(String.Format("Unexpected element name {0} found at start of TagList", taglist.Name));
            }
            catch (Exception exc)
            {
                errors.Add("Exception while loading taglist: " + exc.Message);
            }

            return null;
        }
Ejemplo n.º 2
0
        internal override ErrorList ValidateRules()
        {
            var result = new ErrorList();
            result.AddRange(base.ValidateRules());

            if (Content == null)
                result.Add("Entry must contain (possibly 0-length) data");

            if (ContentType == null)
                result.Add("Entry must contain a contentType");

            return result;
        }
Ejemplo n.º 3
0
        internal override ErrorList ValidateRules()
        {
            var result = new ErrorList();

            if (Value.IsAbsoluteUri)
            {
                string dummy; string dummy2;
                var urnValue = Value.ToString();

                if (urnValue.StartsWith("urn:oid:") && !Oid.TryParseValue(urnValue, out dummy))
                    result.Add(String.Format("Uri is an urn:oid, but the oid {0} is incorrect",urnValue));

                else if (urnValue.StartsWith("urn:uuid:") && !Uuid.TryParseValue(urnValue, out dummy2))
                    result.Add(String.Format("Uri is an urn:uuid, but the uuid {0} is incorrect", urnValue));
            }

            return result;
        }
Ejemplo n.º 4
0
        internal override ErrorList ValidateRules()
        {
            var result = new ErrorList();

            if (Value == null)
                result.Add("Uuid values cannot be empty");
            else
            {
                Uuid dummy;

                if (!TryParse(Value, out dummy))
                    result.Add("Not an correctly formatted uuid value");
            }

            return result;
        }
        /// <summary>
        /// Parse base64Binary
        /// </summary>
        public static Hl7.Fhir.Model.Base64Binary ParseBase64Binary(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Base64Binary existingInstance = null )
        {
            Hl7.Fhir.Model.Base64Binary result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Base64Binary();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element value
                else if( atName == "value" )
                    result.Value = Base64Binary.Parse(reader.ReadPrimitiveContents(typeof(Base64Binary))).Value;

                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;
        }
        /// <summary>
        /// Parse MedicationAdministration
        /// </summary>
        public static Hl7.Fhir.Model.MedicationAdministration ParseMedicationAdministration(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.MedicationAdministration existingInstance = null )
        {
            Hl7.Fhir.Model.MedicationAdministration result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.MedicationAdministration();
            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 = new List<Hl7.Fhir.Model.Identifier>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "identifier") )
                        result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element status
                else if( atName == "status" )
                    result.StatusElement = CodeParser.ParseCode<Hl7.Fhir.Model.MedicationAdministration.MedicationAdministrationStatus>(reader, errors);

                // Parse element patient
                else if( atName == "patient" )
                    result.Patient = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element practitioner
                else if( atName == "practitioner" )
                    result.Practitioner = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element encounter
                else if( atName == "encounter" )
                    result.Encounter = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element prescription
                else if( atName == "prescription" )
                    result.Prescription = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element wasNotGiven
                else if( atName == "wasNotGiven" )
                    result.WasNotGivenElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element reasonNotGiven
                else if( atName == "reasonNotGiven" )
                {
                    result.ReasonNotGiven = new List<Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "reasonNotGiven") )
                        result.ReasonNotGiven.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element whenGiven
                else if( atName == "whenGiven" )
                    result.WhenGiven = PeriodParser.ParsePeriod(reader, errors);

                // Parse element medication
                else if( atName == "medication" )
                    result.Medication = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element administrationDevice
                else if( atName == "administrationDevice" )
                {
                    result.AdministrationDevice = new List<Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "administrationDevice") )
                        result.AdministrationDevice.Add(ResourceReferenceParser.ParseResourceReference(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element dosage
                else if( atName == "dosage" )
                {
                    result.Dosage = new List<Hl7.Fhir.Model.MedicationAdministration.MedicationAdministrationDosageComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "dosage") )
                        result.Dosage.Add(MedicationAdministrationParser.ParseMedicationAdministrationDosageComponent(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;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Parse ValueSet
        /// </summary>
        public static Hl7.Fhir.Model.ValueSet ParseValueSet(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.ValueSet existingInstance = null)
        {
            Hl7.Fhir.Model.ValueSet result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.ValueSet();
            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.IdentifierElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element version
                else if (atName == "version")
                {
                    result.VersionElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element name
                else if (atName == "name")
                {
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element publisher
                else if (atName == "publisher")
                {
                    result.PublisherElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element telecom
                else if (atName == "telecom")
                {
                    result.Telecom = new List <Hl7.Fhir.Model.Contact>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "telecom"))
                    {
                        result.Telecom.Add(ContactParser.ParseContact(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element description
                else if (atName == "description")
                {
                    result.DescriptionElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element copyright
                else if (atName == "copyright")
                {
                    result.CopyrightElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element status
                else if (atName == "status")
                {
                    result.StatusElement = CodeParser.ParseCode <Hl7.Fhir.Model.ValueSet.ValueSetStatus>(reader, errors);
                }

                // Parse element experimental
                else if (atName == "experimental")
                {
                    result.ExperimentalElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);
                }

                // Parse element date
                else if (atName == "date")
                {
                    result.DateElement = FhirDateTimeParser.ParseFhirDateTime(reader, errors);
                }

                // Parse element define
                else if (atName == "define")
                {
                    result.Define = ValueSetParser.ParseValueSetDefineComponent(reader, errors);
                }

                // Parse element compose
                else if (atName == "compose")
                {
                    result.Compose = ValueSetParser.ParseValueSetComposeComponent(reader, errors);
                }

                // Parse element expansion
                else if (atName == "expansion")
                {
                    result.Expansion = ValueSetParser.ParseValueSetExpansionComponent(reader, errors);
                }

                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);
        }
        /// <summary>
        /// Parse ConformanceRestResourceSearchParamComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceRestResourceSearchParamComponent ParseConformanceRestResourceSearchParamComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceRestResourceSearchParamComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceRestResourceSearchParamComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceRestResourceSearchParamComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element name
                else if( atName == "name" )
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element source
                else if( atName == "source" )
                    result.SourceElement = FhirUriParser.ParseFhirUri(reader, errors);

                // Parse element type
                else if( atName == "type" )
                    result.TypeElement = CodeParser.ParseCode<Hl7.Fhir.Model.Conformance.SearchParamType>(reader, errors);

                // Parse element documentation
                else if( atName == "documentation" )
                    result.DocumentationElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element xpath
                else if( atName == "xpath" )
                    result.XpathElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element target
                else if( atName == "target" )
                {
                    result.TargetElement = new List<Hl7.Fhir.Model.Code>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "target") )
                        result.TargetElement.Add(CodeParser.ParseCode(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element chain
                else if( atName == "chain" )
                {
                    result.ChainElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "chain") )
                        result.ChainElement.Add(FhirStringParser.ParseFhirString(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;
        }
Ejemplo n.º 9
0
 public void HasErrorShouldBeTrue()
 {
     ErrorList errors = new ErrorList();
     errors.Add(new ErrorInfo("Name"));
     Assert.IsTrue(errors.HasErrors);
 }
        /// <summary>
        /// Parse OperationOutcomeIssueComponent
        /// </summary>
        public static Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent ParseOperationOutcomeIssueComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent existingInstance = null )
        {
            Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element severity
                else if( atName == "severity" )
                    result.SeverityElement = CodeParser.ParseCode<Hl7.Fhir.Model.OperationOutcome.IssueSeverity>(reader, errors);

                // Parse element type
                else if( atName == "type" )
                    result.Type = CodingParser.ParseCoding(reader, errors);

                // Parse element details
                else if( atName == "details" )
                    result.DetailsElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element location
                else if( atName == "location" )
                {
                    result.LocationElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "location") )
                        result.LocationElement.Add(FhirStringParser.ParseFhirString(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;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Parse ConformanceMessagingEventComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceMessagingEventComponent ParseConformanceMessagingEventComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceMessagingEventComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceMessagingEventComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceMessagingEventComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element code
                else if( atName == "code" )
                    result.CodeElement = CodeParser.ParseCode(reader, errors);

                // Parse element mode
                else if( atName == "mode" )
                    result.ModeElement = CodeParser.ParseCode<Hl7.Fhir.Model.Conformance.ConformanceEventMode>(reader, errors);

                // Parse element protocol
                else if( atName == "protocol" )
                {
                    result.Protocol = new List<Hl7.Fhir.Model.Coding>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "protocol") )
                        result.Protocol.Add(CodingParser.ParseCoding(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element focus
                else if( atName == "focus" )
                    result.FocusElement = CodeParser.ParseCode(reader, errors);

                // Parse element request
                else if( atName == "request" )
                    result.Request = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element response
                else if( atName == "response" )
                    result.Response = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element documentation
                else if( atName == "documentation" )
                    result.DocumentationElement = FhirStringParser.ParseFhirString(reader, errors);

                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;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Parse Document
        /// </summary>
        public static Hl7.Fhir.Model.Document ParseDocument(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Document existingInstance = null)
        {
            Hl7.Fhir.Model.Document result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Document();
            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 versionIdentifier
                else if (atName == "versionIdentifier")
                {
                    result.VersionIdentifier = IdentifierParser.ParseIdentifier(reader, errors);
                }

                // Parse element created
                else if (atName == "created")
                {
                    result.CreatedElement = InstantParser.ParseInstant(reader, errors);
                }

                // Parse element type
                else if (atName == "type")
                {
                    result.Type = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                // Parse element subtype
                else if (atName == "subtype")
                {
                    result.Subtype = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                // Parse element title
                else if (atName == "title")
                {
                    result.TitleElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element status
                else if (atName == "status")
                {
                    result.StatusElement = CodeParser.ParseCode <Hl7.Fhir.Model.Document.DocumentStatus>(reader, errors);
                }

                // Parse element confidentiality
                else if (atName == "confidentiality")
                {
                    result.Confidentiality = CodingParser.ParseCoding(reader, errors);
                }

                // Parse element subject
                else if (atName == "subject")
                {
                    result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors);
                }

                // Parse element author
                else if (atName == "author")
                {
                    result.Author = new List <Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "author"))
                    {
                        result.Author.Add(ResourceReferenceParser.ParseResourceReference(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element attester
                else if (atName == "attester")
                {
                    result.Attester = new List <Hl7.Fhir.Model.Document.DocumentAttesterComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "attester"))
                    {
                        result.Attester.Add(DocumentParser.ParseDocumentAttesterComponent(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element custodian
                else if (atName == "custodian")
                {
                    result.Custodian = ResourceReferenceParser.ParseResourceReference(reader, errors);
                }

                // Parse element event
                else if (atName == "event")
                {
                    result.Event = DocumentParser.ParseDocumentEventComponent(reader, errors);
                }

                // Parse element encounter
                else if (atName == "encounter")
                {
                    result.Encounter = ResourceReferenceParser.ParseResourceReference(reader, errors);
                }

                // Parse element replaces
                else if (atName == "replaces")
                {
                    result.ReplacesElement = IdParser.ParseId(reader, errors);
                }

                // Parse element provenance
                else if (atName == "provenance")
                {
                    result.Provenance = new List <Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "provenance"))
                    {
                        result.Provenance.Add(ResourceReferenceParser.ParseResourceReference(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element stylesheet
                else if (atName == "stylesheet")
                {
                    result.Stylesheet = AttachmentParser.ParseAttachment(reader, errors);
                }

                // Parse element representation
                else if (atName == "representation")
                {
                    result.Representation = AttachmentParser.ParseAttachment(reader, errors);
                }

                // Parse element section
                else if (atName == "section")
                {
                    result.Section = new List <Hl7.Fhir.Model.Document.SectionComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "section"))
                    {
                        result.Section.Add(DocumentParser.ParseSectionComponent(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);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Parse Request
        /// </summary>
        public static Request ParseRequest(IFhirReader reader, ErrorList errors, Request existingInstance = null)
        {
            Request result = existingInstance != null ? existingInstance : new Request();

            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element language
                    else if (ParserUtils.IsAtFhirElement(reader, "language"))
                    {
                        result.Language = CodeParser.ParseCode(reader, errors);
                    }

                    // Parse element text
                    else if (ParserUtils.IsAtFhirElement(reader, "text"))
                    {
                        result.Text = NarrativeParser.ParseNarrative(reader, errors);
                    }

                    // Parse element contained
                    else if (ParserUtils.IsAtFhirElement(reader, "contained"))
                    {
                        result.Contained = new List <Resource>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "contained"))
                        {
                            result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Action performed when Pack file is hit
        /// </summary>
        /// <param name="param"></param>
        private async void PackFileAction(object param)
        {
            if (SelectedFilter < 0)
            {
                UserInput.ShowMessage("USER_SELECT_PACK_TYPE");
                return;
            }

            QueueActionType = ActionType.Pack;

            if (!IsItemReady())
            {
                return;
            }

            FilesActionVm.Instance.CcFiles++;
            SetItemState(State.Packing | State.LongAction);
            //await Task.Delay(1000);
            //this.SetItemState(State.Ready);
            //WorkingListVM.Instance.ProcessQueueUponActionFinalization(this);
            //return;

            HashMismatchFiles.Clear();
            ErrorList.Clear();
            _successCounter = 0;

            var filesInDir = IOHelper.GetAllFilesFromDir(String.Format("{0}{1}", MainWindowVm.Instance.SelectedWorkingProfile.UnpackDirectory, DisplayName));
            var indexItems = new List <IndexItem>();

            string indexFilePath = String.Format("{0}{1}",
                                                 MainWindowVm.Instance.SelectedWorkingProfile.WorkingDirectory,
                                                 String.Format("{0}{1}",
                                                               DisplayName,
                                                               MainWindowVm.Instance.SelectedWorkingProfile.IndexExtension));

            string packFilePath = String.Format("{0}{1}",
                                                MainWindowVm.Instance.SelectedWorkingProfile.WorkingDirectory,
                                                String.Format("{0}{1}",
                                                              DisplayName,
                                                              MainWindowVm.Instance.SelectedWorkingProfile.PackExtension));

            if (File.Exists(packFilePath))
            {
                // File already packed, but will be overwritten
                WindowLog.Warning("FILE_ALREADY_PACKED_BUT_OVER", Filename);
                File.Delete(packFilePath);
            }

            if (File.Exists(indexFilePath))
            {
                File.Delete(EterHelper.ReplaceWithEpkExt(indexFilePath));
            }

            await Task.Run(() =>
            {
                int counter = 0;
                foreach (var file in filesInDir)
                {
                    //int type = -1;

                    //string fileExtension = Path.GetExtension(file.FullName);

                    //if (SelectedFilter.RawExtensions != null)
                    //{
                    //    foreach (var rawExt in SelectedFilter.RawExtensions)
                    //        if (rawExt.ToLower() == fileExtension.ToLower())
                    //            type = 0;

                    //    foreach (var lzoExt in SelectedFilter.LzoExtensions)
                    //        if (lzoExt.ToLower() == fileExtension.ToLower())
                    //            type = 1;

                    //    foreach (var xteaExt in SelectedFilter.XteaExtensions)
                    //        if (xteaExt.ToLower() == fileExtension.ToLower())
                    //            type = 2;
                    //}

                    //if (type == -1)
                    //    type = SelectedFilter.NotIncludedExtensionsType;

                    string toReplaceStr = String.Format("{0}{1}", MainWindowVm.Instance.SelectedWorkingProfile.UnpackDirectory, DisplayName).Replace("/", "\\");

                    string fileName = file.FullName.Substring(file.FullName.IndexOf(toReplaceStr) + toReplaceStr.Length + 1);

                    indexItems.Add(new IndexItem(
                                       counter,
                                       fileName,
                                       null,
                                       0,
                                       0,
                                       null,
                                       0,
                                       SelectedFilter,
                                       DisplayName));
                    counter++;
                }

                double lastProgressValue = 0;

                try
                {
                    EterFilesDal.BuildIndexAndPackFiles(
                        indexItems,
                        packFilePath,
                        String.Format("{0}{1}\\",
                                      MainWindowVm.Instance.SelectedWorkingProfile.UnpackDirectory,
                                      DisplayName),
                        MainWindowVm.Instance.SelectedWorkingProfile.IndexKey,
                        MainWindowVm.Instance.SelectedWorkingProfile.PackKey,
                        (error) =>
                    {
                        if (error != null)
                        {
                            ErrorList.Add(error);
                        }
                    },
                        (result, progress) =>
                    {
                        if (result == 0)
                        {
                            _successCounter++;
                        }

                        if (((progress - lastProgressValue) >= 5))
                        {
                            ActionProgress    = progress;
                            lastProgressValue = progress;
                        }
                    },
                        () => SetItemState(State.CriticalError));
                }
                catch (OutOfMemoryException ex)
                {
                    WindowLog.Warning("FILE_TOO_BIG", DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (EterPackFileNotFoundException ex)
                {
                    WindowLog.Error("ETER_EPK_FILE_NOT_FOUND", DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (FileNotFoundException ex)
                {
                    WindowLog.Error("FILE_NOT_FOUND", DisplayName, new object[] { ex.FileName });
                    SetItemState(State.CriticalError);
                }
                catch (UnauthorizedAccessException ex)
                {
                    WindowLog.Error("COULD_NOT_ACCESS_FILE", DisplayName, DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (System.IO.IOException ex)
                {
                    WindowLog.Error("ERROR_WITH_CUSTOM_MSG", DisplayName, ex.Message);
                    SetItemState(State.CriticalError);
                }
            });

            SetItemState(ErrorList.Count > 0 ? State.ReadyWithErrors : State.Ready);

            ActionProgress = 100;
            WindowLog.Information("ETER_PACK_RESULT", DisplayName, new object[] { _successCounter, HashMismatchFiles.Count, ErrorList.Count });
            AfterLongAction(param);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Parse DocumentEventComponent
        /// </summary>
        public static Hl7.Fhir.Model.Document.DocumentEventComponent ParseDocumentEventComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Document.DocumentEventComponent existingInstance = null)
        {
            Hl7.Fhir.Model.Document.DocumentEventComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Document.DocumentEventComponent();
            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 _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element code
                else if (atName == "code")
                {
                    result.Code = new List <Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "code"))
                    {
                        result.Code.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element period
                else if (atName == "period")
                {
                    result.Period = PeriodParser.ParsePeriod(reader, errors);
                }

                // Parse element detail
                else if (atName == "detail")
                {
                    result.Detail = new List <Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "detail"))
                    {
                        result.Detail.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);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Action performed when Unpack file is hit
        /// </summary>
        /// <param name="param"></param>
        private async void UnpackFileAction(object param)
        {
            QueueActionType = ActionType.Unpack;

            if (!IsItemReady())
            {
                return;
            }

            FilesActionVm.Instance.CcFiles++;
            SetItemState(State.Unpacking | State.LongAction);

            await Task.Run(() =>
            {
                // Set state to unpacking
                SetItemState(State.Unpacking);

                // Clear lists
                HashMismatchFiles.Clear();
                ErrorList.Clear();

                // Reset counters
                _successCounter          = 0;
                double lastProgressValue = 0;

                try
                {
                    // Unpack file
                    EterFilesDal.UnpackFile(
                        new FileInfo(EterHelper.ReplaceWithEpkExt(Path.Combine(MainWindowVm.Instance.SelectedWorkingProfile.WorkingDirectory, Filename))),
                        MainWindowVm.Instance.SelectedWorkingProfile.UnpackDirectory,
                        MainWindowVm.Instance.SelectedWorkingProfile.IndexKey,
                        MainWindowVm.Instance.SelectedWorkingProfile.PackKey,
                        (operationResult, globalProgress) =>
                    {
                        if ((globalProgress - lastProgressValue) >= 5)
                        {
                            ActionProgress    = globalProgress;
                            lastProgressValue = globalProgress;
                        }

                        if (operationResult == 0)
                        {
                            _successCounter++;
                        }
                    },
                        (error, hash) =>
                    {
                        if (error != null)
                        {
                            ErrorList.Add(error);
                        }

                        if (!String.IsNullOrWhiteSpace(hash))
                        {
                            HashMismatchFiles.Add(hash);
                        }
                    });
                }
                catch (ErrorReadingIndexException ex)
                {
                    WindowLog.Error("ETER_WRONG_INDEX_KEY", DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (OutOfMemoryException ex)
                {
                    WindowLog.Warning("FILE_TOO_BIG", DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (EterPackFileNotFoundException ex)
                {
                    WindowLog.Error("ETER_EPK_FILE_NOT_FOUND", DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (FileNotFoundException ex)
                {
                    WindowLog.Error("FILE_NOT_FOUND", DisplayName, new object[] { ex.FileName });
                    SetItemState(State.CriticalError);
                }
                catch (UnauthorizedAccessException ex)
                {
                    WindowLog.Error("COULD_NOT_ACCESS_FILE", DisplayName, DisplayName);
                    SetItemState(State.CriticalError);
                }
                catch (System.IO.IOException ex)
                {
                    WindowLog.Error("ERROR_WITH_CUSTOM_MSG", DisplayName, ex.Message);
                    SetItemState(State.CriticalError);
                }
            });

            // If any file produced an error, set state accordingly
            if (ErrorList.Count > 0 && ItemState != State.CriticalError)
            {
                SetItemState(State.ReadyWithErrors);
            }
            else if (ErrorList.Count == 0 && ItemState != State.CriticalError)
            {
                SetItemState(State.Ready);
            }

            // Make sure progress bar is at 100%
            ActionProgress = 100;

            // Logging stuff
            if (ItemState != State.CriticalError)
            {
                // Get all failed items
                int failedCount = ErrorList.Count;

                // Were any unnamed files present?
                var item = ErrorList.FirstOrDefault(x => x.ErrorMotive.Contains("(no name)"));

                // If so, add it
                if (item != null)
                {
                    failedCount += Convert.ToInt32(item.Arg) - 1;
                }

                WindowLog.Information("ETER_UNPACK_RESULT", DisplayName, _successCounter, HashMismatchFiles.Count, failedCount);
            }


            AfterLongAction(param);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 日報作成・修正時の入力が正しいかチェックをする
        /// </summary>
        /// <returns>result 正常ならtrueを返却</returns>
        ///
        public Boolean InputCheck()
        {
            Boolean result = true;

            if (startHour == null || startHour.Equals(""))
            {
                result = false;
                errorList.Add("・日時のFrom(時間)が未入力です");
            }

            if (startMin == null || startMin.Equals(""))
            {
                result = false;
                errorList.Add("・日時のFrom(分)が未入力です");
            }

            if (endHour == null || endHour.Equals(""))
            {
                result = false;
                errorList.Add("・日時のTo(時間)が未入力です");
            }

            if (endMin == null || endMin.Equals(""))
            {
                result = false;
                errorList.Add("・日時のTo(分)が未入力です");
            }

            if (result)
            {
                //日にち、時間、分をつなげてDateTime型をstartDateAllへ
                int startH = int.Parse(startHour);
                int startM = int.Parse(startMin);
                startDateAll = DateTime.Parse(startDate + " " + startH + ":" + startM);

                //日にち、時間、分をつなげてDateTime型をendDateAllへ
                int endH = int.Parse(endHour);
                int endM = int.Parse(endMin);
                endDateAll = DateTime.Parse(endDate + " " + endH + ":" + endM);


                //開始日時が未来にならないか
                resultDate = DateTime.Compare(startDateAll, dt);

                if (resultDate == 1)
                {
                    result = false;
                    errorList.Add("・訪問日時は現在日時以前の時間を指定してください");
                }
                else
                {
                    //終了が開始より前にならないか
                    if (endDateAll <= startDateAll)
                    {
                        result = false;
                        errorList.Add("・ToはFromより後の時間にしてください");
                    }
                }
            }

            if (customerName == null || customerName.Equals(""))
            {
                result = false;
                ErrorList.Add("・訪問先の顧客を選択してください");
            }

            if (visitType == null || visitType.Equals(""))
            {
                result = false;
                ErrorList.Add("・訪問種別を選択してください");
            }



            if (detail == null || detail.Equals(""))
            {
                result = false;
                ErrorList.Add("・内容を入力してください");
            }


            return(result);
        }
Ejemplo n.º 18
0
        // Group: Loading Functions
        // __________________________________________________________________________


        /* Function: Load
         * Attempts to parse <Project.txt> and return it as a <ProjectConfig>.  Any syntax errors found will be added to the
         * <ErrorList>.  The <ProjectConfig> object will always exist, even if all its properties are empty.
         */
        public bool Load(Path path, out ProjectConfig projectConfig, ErrorList errorList)
        {
            projectConfig = new ProjectConfig(Source.ProjectFile);

            this.errorList     = errorList;
            this.projectConfig = projectConfig;

            int originalErrorCount = errorList.Count;

            using (var configFile = new ConfigFile())
            {
                // We don't condense value whitespace because some things like title, subtitle, and copyright may want multiple spaces.
                bool openResult = configFile.Open(path,
                                                  ConfigFile.FileFormatFlags.CondenseIdentifierWhitespace |
                                                  ConfigFile.FileFormatFlags.MakeIdentifiersLowercase,
                                                  errorList);

                if (openResult == false)
                {
                    return(false);
                }

                string lcIdentifier, value;

                Targets.Base currentTarget      = null;
                ProjectInfo  currentProjectInfo = projectConfig.ProjectInfo;

                while (configFile.Get(out lcIdentifier, out value))
                {
                    var          propertyLocation = new PropertyLocation(Source.ProjectFile, configFile.FileName, configFile.LineNumber);
                    Targets.Base target           = null;

                    if (GetGlobalProperty(lcIdentifier, value, propertyLocation))
                    {
                        currentTarget      = null;
                        currentProjectInfo = projectConfig.ProjectInfo;
                    }
                    else if (GetTargetHeader(lcIdentifier, value, propertyLocation, out target))
                    {
                        currentTarget = target;

                        if (target is Targets.OutputBase)
                        {
                            currentProjectInfo = (target as Targets.OutputBase).ProjectInfo;
                        }
                        else
                        {
                            currentProjectInfo = projectConfig.ProjectInfo;
                        }
                    }
                    else if (GetProjectInfoProperty(lcIdentifier, value, propertyLocation, currentProjectInfo))
                    {
                    }
                    else if (currentTarget != null && GetTargetProperty(lcIdentifier, value, propertyLocation, currentTarget))
                    {
                    }
                    else
                    {
                        errorList.Add(
                            message: Locale.Get("NaturalDocs.Engine", "ConfigFile.NotAValidIdentifier(identifier)", lcIdentifier),
                            propertyLocation: propertyLocation
                            );
                    }
                }

                configFile.Close();
            }

            return(errorList.Count == originalErrorCount);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Parse ValueSetExpansionComponent
        /// </summary>
        public static Hl7.Fhir.Model.ValueSet.ValueSetExpansionComponent ParseValueSetExpansionComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.ValueSet.ValueSetExpansionComponent existingInstance = null)
        {
            Hl7.Fhir.Model.ValueSet.ValueSetExpansionComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.ValueSet.ValueSetExpansionComponent();
            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 _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element timestamp
                else if (atName == "timestamp")
                {
                    result.TimestampElement = InstantParser.ParseInstant(reader, errors);
                }

                // Parse element contains
                else if (atName == "contains")
                {
                    result.Contains = new List <Hl7.Fhir.Model.ValueSet.ValueSetExpansionContainsComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "contains"))
                    {
                        result.Contains.Add(ValueSetParser.ParseValueSetExpansionContainsComponent(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);
        }
Ejemplo n.º 20
0
        protected void NextButton_Click(object sender, EventArgs e)
        {
            ErrorList errors = new ErrorList();

            if (StringUtils.IsBlank(FtpHostTextBox.Text))
            {
                errors.Add("Ftp host is required");
            }

            if (NumericUtils.ParseInt32(FtpPortTextBox.Text, 0) == 0)
            {
                errors.Add("Ftp host port must be a number");
            }

            if (StringUtils.IsBlank(FtpUsernameTextBox.Text))
            {
                errors.Add("Username is required");
            }

            if (errors.Count > 0)
            {
                FeedbackLabel1.SetErrorMessage("Please check the following and try again:", errors);
                return;
            }

            // List of files to upload
            List <FtpFile> assetFilePaths = new List <FtpFile>();

            // Get all of the order items in the current order
            foreach (OrderItem orderItem in SelectedOrder.OrderItemList)
            {
                // Get the order item id
                int orderItemId = orderItem.OrderItemId.GetValueOrDefault();

                // Check if the order item can be downloaded and is in the list of selected order items
                if (ViewOrders.CanDownload(orderItem) && SelectedOrderItems.Contains(orderItemId))
                {
                    // Get the asset
                    Asset asset = orderItem.Asset;

                    // Get the selected order item
                    SelectedOrderItem soi = SelectedOrderItems.Get(orderItemId);

                    // Initialise path and filename to FTP
                    string path, filename;

                    // Check if zip asset files is enabled and we're not doing any kind of transcoding.
                    // If so, we want to FTP the zipped asset file instead, so set the path and filename accordingly.
                    // However, if the zip file doesn't exist, then we want to FTP the original asset instead.

                    if (AssetFileManager.ZipAssetFiles && soi.AssetImageSizeId == 0)
                    {
                        // First get the path to the zipped asset file
                        ZippedAssetFileInfo zippedFileInfo = new ZippedAssetFileInfo(asset);

                        if (zippedFileInfo.FileExists)
                        {
                            // Ensure that a path was returned, and if so, set the filename accordingly
                            path     = zippedFileInfo.FilePath;
                            filename = Path.GetFileNameWithoutExtension(asset.Filename) + ".zip";
                        }
                        else
                        {
                            // Otherwise, the zip file doesn't exist, so get the path to the original
                            // asset file, and set the filename to the asset filename

                            AssetFileInfo info = new AssetFileInfo(asset);

                            path     = info.FilePath;
                            filename = asset.Filename;
                        }
                    }
                    else
                    {
                        // Get the file path to the asset
                        AssetFileInfo info = new AssetFileInfo(asset);
                        path = info.FilePath;

                        // For images, get the filepath to the resized image
                        if (AssetTypeChecker.IsImage(asset.FileExtension))
                        {
                            path = AssetImageManager.GetResizedAssetImage(asset, soi.AssetImageSizeId, soi.DownloadFormat, true);
                        }

                        // Construct the asset filename
                        filename = Path.GetFileNameWithoutExtension(asset.Filename) + Path.GetExtension(path);
                    }

                    // Add the file path to the list
                    FtpFile file = new FtpFile(path, filename);
                    assetFilePaths.Add(file);
                }
            }

            try
            {
                // Instantiate FTP downloader
                FtpDownloader ftpDownloader = new FtpDownloader
                {
                    BackgroundTransfer = true,
                    Host         = FtpHostTextBox.Text.Trim(),
                    Port         = NumericUtils.ParseInt32(FtpPortTextBox.Text, 0),
                    PassiveMode  = FtpPassiveModeCheckBox.Checked,
                    Username     = FtpUsernameTextBox.Text.Trim(),
                    Password     = FtpPasswordTextBox.Text.Trim(),
                    RemoteFolder = FtpRemoteFolderTextBox.Text.Trim(),
                    User         = CurrentUser
                };

                // Specify files to send to FTP server
                foreach (FtpFile file in assetFilePaths)
                {
                    ftpDownloader.Files.Add(file);
                }

                // Wire up events
                ftpDownloader.UploadComplete += new FtpDownloadCompleteEventHandler(NotifyEngine.FtpDownloadComplete);

                // Go do it!
                ftpDownloader.Go();

                // Log the assets as downloaded
                foreach (SelectedOrderItem soi in SelectedOrderItems)
                {
                    OrderItem orderItem = OrderItem.Get(soi.OrderItemId);
                    Asset     asset     = orderItem.Asset;

                    AuditLogManager.LogAssetAction(asset, CurrentUser, AuditAssetAction.DownloadedAssetFile);
                    AuditLogManager.LogUserAction(CurrentUser, AuditUserAction.DownloadAsset, string.Format("Downloaded AssetId: {0} as part of FTP download to: {1} for OrderId: {2}", asset.AssetId, ftpDownloader.Host, orderItem.OrderId));
                }

                // Lets cookie the settings as well, so we can pre-populate
                // the form when the user returns to download more assets
                CookieManager.SetValue("FtpHost", ftpDownloader.Host);
                CookieManager.SetValue("FtpPort", ftpDownloader.Port);
                CookieManager.SetValue("FtpPassiveMode", FtpPassiveModeCheckBox.Checked ? "1" : "0");
                CookieManager.SetValue("FtpUsername", ftpDownloader.Username);

                // Update UI
                FormPanel.Visible    = false;
                SuccessPanel.Visible = true;
            }
            catch (FtpDownloadException fdex)
            {
                // Remove the error code from the start of the error message
                string message = Regex.Replace(fdex.Message, @"(\d+\s-\s)", string.Empty);

                // Display the error to the user
                FeedbackLabel1.SetErrorMessage("Error downloading assets", message);

                // Log the error
                m_Logger.Warn(string.Format("Error downloading files to FTP. User: {0}, Host: {1}. Error: {2}", CurrentUser.FullName, FtpHostTextBox.Text, message), fdex);
            }
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Parse Group
        /// </summary>
        public static Hl7.Fhir.Model.Group ParseGroup(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Group existingInstance = null )
        {
            Hl7.Fhir.Model.Group result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Group();
            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 type
                else if( atName == "type" )
                    result.TypeElement = CodeParser.ParseCode<Hl7.Fhir.Model.Group.GroupType>(reader, errors);

                // Parse element actual
                else if( atName == "actual" )
                    result.ActualElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element code
                else if( atName == "code" )
                    result.Code = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element name
                else if( atName == "name" )
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element quantity
                else if( atName == "quantity" )
                    result.QuantityElement = IntegerParser.ParseInteger(reader, errors);

                // Parse element characteristic
                else if( atName == "characteristic" )
                {
                    result.Characteristic = new List<Hl7.Fhir.Model.Group.GroupCharacteristicComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "characteristic") )
                        result.Characteristic.Add(GroupParser.ParseGroupCharacteristicComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element member
                else if( atName == "member" )
                {
                    result.Member = new List<Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "member") )
                        result.Member.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;
        }
        /// <summary>
        /// Parse PrescriptionDispenseComponent
        /// </summary>
        public static Prescription.PrescriptionDispenseComponent ParsePrescriptionDispenseComponent(IFhirReader reader, ErrorList errors, Prescription.PrescriptionDispenseComponent existingInstance = null)
        {
            Prescription.PrescriptionDispenseComponent result = existingInstance != null ? existingInstance : new Prescription.PrescriptionDispenseComponent();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    // Parse element repeats
                    else if (ParserUtils.IsAtFhirElement(reader, "repeats"))
                    {
                        result.Repeats = IntegerParser.ParseInteger(reader, errors);
                    }

                    // Parse element quantity
                    else if (ParserUtils.IsAtFhirElement(reader, "quantity"))
                    {
                        result.Quantity = QuantityParser.ParseQuantity(reader, errors);
                    }

                    // Parse element dispenser
                    else if (ParserUtils.IsAtFhirElement(reader, "dispenser"))
                    {
                        result.Dispenser = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
        /// <summary>
        /// Parse AnatomicalLocation
        /// </summary>
        public static AnatomicalLocation ParseAnatomicalLocation(IFhirReader reader, ErrorList errors, AnatomicalLocation existingInstance = null )
        {
            AnatomicalLocation result = existingInstance != null ? existingInstance : new AnatomicalLocation();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if( ParserUtils.IsAtFhirElement(reader, "extension") )
                    {
                        result.Extension = new List<Extension>();
                        reader.EnterArray();

                        while( ParserUtils.IsAtArrayElement(reader, "extension") )
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));

                        reader.LeaveArray();
                    }

                    // Parse element language
                    else if( ParserUtils.IsAtFhirElement(reader, "language") )
                        result.Language = CodeParser.ParseCode(reader, errors);

                    // Parse element text
                    else if( ParserUtils.IsAtFhirElement(reader, "text") )
                        result.Text = NarrativeParser.ParseNarrative(reader, errors);

                    // Parse element contained
                    else if( ParserUtils.IsAtFhirElement(reader, "contained") )
                    {
                        result.Contained = new List<Resource>();
                        reader.EnterArray();

                        while( ParserUtils.IsAtArrayElement(reader, "contained") )
                            result.Contained.Add(ParserUtils.ParseContainedResource(reader,errors));

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if( reader.IsAtRefIdElement() )
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return result;
        }
        /// <summary>
        /// Parse PrescriptionAdministrationRequestComponent
        /// </summary>
        public static Prescription.PrescriptionAdministrationRequestComponent ParsePrescriptionAdministrationRequestComponent(IFhirReader reader, ErrorList errors, Prescription.PrescriptionAdministrationRequestComponent existingInstance = null)
        {
            Prescription.PrescriptionAdministrationRequestComponent result = existingInstance != null ? existingInstance : new Prescription.PrescriptionAdministrationRequestComponent();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    // Parse element description
                    else if (ParserUtils.IsAtFhirElement(reader, "description"))
                    {
                        result.Description = FhirStringParser.ParseFhirString(reader, errors);
                    }

                    // Parse element totalPeriodicDose
                    else if (ParserUtils.IsAtFhirElement(reader, "totalPeriodicDose"))
                    {
                        result.TotalPeriodicDose = RatioParser.ParseRatio(reader, errors);
                    }

                    // Parse element start
                    else if (ParserUtils.IsAtFhirElement(reader, "start"))
                    {
                        result.Start = FhirDateTimeParser.ParseFhirDateTime(reader, errors);
                    }

                    // Parse element end
                    else if (ParserUtils.IsAtFhirElement(reader, "end"))
                    {
                        result.End = FhirDateTimeParser.ParseFhirDateTime(reader, errors);
                    }

                    // Parse element duration
                    else if (ParserUtils.IsAtFhirElement(reader, "duration"))
                    {
                        result.Duration = QuantityParser.ParseQuantity(reader, errors);
                    }

                    // Parse element numberOfAdministrations
                    else if (ParserUtils.IsAtFhirElement(reader, "numberOfAdministrations"))
                    {
                        result.NumberOfAdministrations = IntegerParser.ParseInteger(reader, errors);
                    }

                    // Parse element dosageInstruction
                    else if (ParserUtils.IsAtFhirElement(reader, "dosageInstruction"))
                    {
                        result.DosageInstruction = new List <Prescription.PrescriptionAdministrationRequestDosageInstructionComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "dosageInstruction"))
                        {
                            result.DosageInstruction.Add(PrescriptionParser.ParsePrescriptionAdministrationRequestDosageInstructionComponent(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();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Parse Conformance
        /// </summary>
        public static Hl7.Fhir.Model.Conformance ParseConformance(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance();
            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.IdentifierElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element version
                else if( atName == "version" )
                    result.VersionElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element name
                else if( atName == "name" )
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element publisher
                else if( atName == "publisher" )
                    result.PublisherElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element telecom
                else if( atName == "telecom" )
                {
                    result.Telecom = new List<Hl7.Fhir.Model.Contact>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "telecom") )
                        result.Telecom.Add(ContactParser.ParseContact(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element description
                else if( atName == "description" )
                    result.DescriptionElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element status
                else if( atName == "status" )
                    result.StatusElement = CodeParser.ParseCode<Hl7.Fhir.Model.Conformance.ConformanceStatementStatus>(reader, errors);

                // Parse element experimental
                else if( atName == "experimental" )
                    result.ExperimentalElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element date
                else if( atName == "date" )
                    result.DateElement = FhirDateTimeParser.ParseFhirDateTime(reader, errors);

                // Parse element software
                else if( atName == "software" )
                    result.Software = ConformanceParser.ParseConformanceSoftwareComponent(reader, errors);

                // Parse element implementation
                else if( atName == "implementation" )
                    result.Implementation = ConformanceParser.ParseConformanceImplementationComponent(reader, errors);

                // Parse element fhirVersion
                else if( atName == "fhirVersion" )
                    result.FhirVersionElement = IdParser.ParseId(reader, errors);

                // Parse element acceptUnknown
                else if( atName == "acceptUnknown" )
                    result.AcceptUnknownElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element format
                else if( atName == "format" )
                {
                    result.FormatElement = new List<Hl7.Fhir.Model.Code>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "format") )
                        result.FormatElement.Add(CodeParser.ParseCode(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element rest
                else if( atName == "rest" )
                {
                    result.Rest = new List<Hl7.Fhir.Model.Conformance.ConformanceRestComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "rest") )
                        result.Rest.Add(ConformanceParser.ParseConformanceRestComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element messaging
                else if( atName == "messaging" )
                {
                    result.Messaging = new List<Hl7.Fhir.Model.Conformance.ConformanceMessagingComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "messaging") )
                        result.Messaging.Add(ConformanceParser.ParseConformanceMessagingComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element document
                else if( atName == "document" )
                {
                    result.Document = new List<Hl7.Fhir.Model.Conformance.ConformanceDocumentComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "document") )
                        result.Document.Add(ConformanceParser.ParseConformanceDocumentComponent(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;
        }
        /// <summary>
        /// Parse PrescriptionMedicineComponent
        /// </summary>
        public static Prescription.PrescriptionMedicineComponent ParsePrescriptionMedicineComponent(IFhirReader reader, ErrorList errors, Prescription.PrescriptionMedicineComponent existingInstance = null)
        {
            Prescription.PrescriptionMedicineComponent result = existingInstance != null ? existingInstance : new Prescription.PrescriptionMedicineComponent();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    // Parse element identification
                    else if (ParserUtils.IsAtFhirElement(reader, "identification"))
                    {
                        result.Identification = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element activeIngredient
                    else if (ParserUtils.IsAtFhirElement(reader, "activeIngredient"))
                    {
                        result.ActiveIngredient = new List <Prescription.PrescriptionMedicineActiveIngredientComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "activeIngredient"))
                        {
                            result.ActiveIngredient.Add(PrescriptionParser.ParsePrescriptionMedicineActiveIngredientComponent(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element inactiveIngredient
                    else if (ParserUtils.IsAtFhirElement(reader, "inactiveIngredient"))
                    {
                        result.InactiveIngredient = new List <Prescription.PrescriptionMedicineInactiveIngredientComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "inactiveIngredient"))
                        {
                            result.InactiveIngredient.Add(PrescriptionParser.ParsePrescriptionMedicineInactiveIngredientComponent(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();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Parse ConformanceSoftwareComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceSoftwareComponent ParseConformanceSoftwareComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceSoftwareComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceSoftwareComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceSoftwareComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element name
                else if( atName == "name" )
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element version
                else if( atName == "version" )
                    result.VersionElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element releaseDate
                else if( atName == "releaseDate" )
                    result.ReleaseDateElement = FhirDateTimeParser.ParseFhirDateTime(reader, errors);

                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;
        }
        /// <summary>
        /// Parse Prescription
        /// </summary>
        public static Prescription ParsePrescription(IFhirReader reader, ErrorList errors, Prescription existingInstance = null)
        {
            Prescription result = existingInstance != null ? existingInstance : new Prescription();

            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element language
                    else if (ParserUtils.IsAtFhirElement(reader, "language"))
                    {
                        result.Language = CodeParser.ParseCode(reader, errors);
                    }

                    // Parse element text
                    else if (ParserUtils.IsAtFhirElement(reader, "text"))
                    {
                        result.Text = NarrativeParser.ParseNarrative(reader, errors);
                    }

                    // Parse element contained
                    else if (ParserUtils.IsAtFhirElement(reader, "contained"))
                    {
                        result.Contained = new List <Resource>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "contained"))
                        {
                            result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    // Parse element identifier
                    else if (ParserUtils.IsAtFhirElement(reader, "identifier"))
                    {
                        result.Identifier = new List <Identifier>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "identifier"))
                        {
                            result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element status
                    else if (ParserUtils.IsAtFhirElement(reader, "status"))
                    {
                        result.Status = CodeParser.ParseCode <Prescription.PrescriptionStatus>(reader, errors);
                    }

                    // Parse element patient
                    else if (ParserUtils.IsAtFhirElement(reader, "patient"))
                    {
                        result.Patient = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    // Parse element prescriber
                    else if (ParserUtils.IsAtFhirElement(reader, "prescriber"))
                    {
                        result.Prescriber = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    // Parse element prescribed
                    else if (ParserUtils.IsAtFhirElement(reader, "prescribed"))
                    {
                        result.Prescribed = FhirDateTimeParser.ParseFhirDateTime(reader, errors);
                    }

                    // Parse element dispense
                    else if (ParserUtils.IsAtFhirElement(reader, "dispense"))
                    {
                        result.Dispense = PrescriptionParser.ParsePrescriptionDispenseComponent(reader, errors);
                    }

                    // Parse element medicine
                    else if (ParserUtils.IsAtFhirElement(reader, "medicine"))
                    {
                        result.Medicine = PrescriptionParser.ParsePrescriptionMedicineComponent(reader, errors);
                    }

                    // Parse element administrationRequest
                    else if (ParserUtils.IsAtFhirElement(reader, "administrationRequest"))
                    {
                        result.AdministrationRequest = PrescriptionParser.ParsePrescriptionAdministrationRequestComponent(reader, errors);
                    }

                    // Parse element reason
                    else if (ParserUtils.IsAtFhirElement(reader, "reason"))
                    {
                        result.Reason = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 29
0
 public void ShouldBeAbleToGetErrorInfoByFieldName()
 {
     ErrorList errors = new ErrorList();
     errors.Add(new ErrorInfo("Name", "Can't be blank"));
     Assert.AreEqual("Name can't be blank", errors["Name"].ToString());
 }
Ejemplo n.º 30
0
        /// <summary>
        /// Parse HumanName
        /// </summary>
        public static Hl7.Fhir.Model.HumanName ParseHumanName(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.HumanName existingInstance = null )
        {
            Hl7.Fhir.Model.HumanName result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.HumanName();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element use
                else if( atName == "use" )
                    result.UseElement = CodeParser.ParseCode<Hl7.Fhir.Model.HumanName.NameUse>(reader, errors);

                // Parse element text
                else if( atName == "text" )
                    result.TextElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element family
                else if( atName == "family" )
                {
                    result.FamilyElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "family") )
                        result.FamilyElement.Add(FhirStringParser.ParseFhirString(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element given
                else if( atName == "given" )
                {
                    result.GivenElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "given") )
                        result.GivenElement.Add(FhirStringParser.ParseFhirString(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element prefix
                else if( atName == "prefix" )
                {
                    result.PrefixElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "prefix") )
                        result.PrefixElement.Add(FhirStringParser.ParseFhirString(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element suffix
                else if( atName == "suffix" )
                {
                    result.SuffixElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "suffix") )
                        result.SuffixElement.Add(FhirStringParser.ParseFhirString(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element period
                else if( atName == "period" )
                    result.Period = PeriodParser.ParsePeriod(reader, errors);

                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;
        }
Ejemplo n.º 31
0
        public bool LoadDatabaseMetadata(string database_name, string connection_string)
        {
            if (string.IsNullOrEmpty(database_name))
            {
                throw new ArgumentException("Database name is null or empty");
            }

            Reset();

            Name             = database_name;
            ConnectionString = connection_string;

            // load and parse out table data
            try
            {
                string sql_query = GetTableData();

                DataTable dt = Database.ExecuteQuery(sql_query, null, ConnectionString);

                if (dt != null && dt.Rows.Count != 0 && dt.Columns.Count != 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        string table_name  = (string)dr["TableName"];
                        string column_name = (string)dr["ColumnName"];

                        if (!Tables.ContainsKey(table_name))
                        {
                            SqlTable sql_table = new SqlTable(this, table_name);
                            Tables.Add(table_name, sql_table);
                        }

                        SqlColumn sql_column = new SqlColumn();

                        sql_column.Table         = Tables[table_name];
                        sql_column.Name          = (string)dr["ColumnName"];
                        sql_column.DataType      = (string)dr["DataType"];
                        sql_column.Length        = Convert.ToInt32(dr["Length"]);
                        sql_column.Precision     = Convert.ToInt32(dr["Precision"]);
                        sql_column.IsNullable    = Convert.ToBoolean(dr["IsNullable"]);
                        sql_column.IsPk          = Convert.ToBoolean(dr["IsPK"]);
                        sql_column.IsIdentity    = Convert.ToBoolean(dr["IsIdentity"]);
                        sql_column.ColumnOrdinal = Convert.ToInt32(dr["ColumnOrdinal"]);

                        if (Tables[table_name].Columns.ContainsKey(column_name))
                        {
                            throw new Exception($"Column {column_name} already exists in table {Tables[table_name]}");
                        }
                        else
                        {
                            Tables[table_name].Columns.Add(column_name, sql_column);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex);
            }

            // get SP
            try
            {
                string sql_query = GetStoredProcedures();

                DataTable dt = Database.ExecuteQuery(sql_query, null, ConnectionString);

                if (dt != null && dt.Rows.Count != 0 && dt.Columns.Count != 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SqlScript sql_script = new SqlScript();

                        sql_script.Name = (string)dr["Name"];
                        sql_script.Body = (string)dr["Body"];

                        if (StoredProcedures.ContainsKey(sql_script.Name))
                        {
                            StoredProcedures[sql_script.Name].Body += sql_script.Body;
                        }
                        else
                        {
                            StoredProcedures.Add(sql_script.Name, sql_script);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex);
            }

            // get functions
            try
            {
                string sql_query = GetFunctions();

                DataTable dt = Database.ExecuteQuery(sql_query, null, ConnectionString);

                if (dt != null && dt.Rows.Count != 0 && dt.Columns.Count != 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SqlScript sql_script = new SqlScript();

                        sql_script.Name = (string)dr["Name"];
                        sql_script.Body = (string)dr["Body"];

                        if (Functions.ContainsKey(sql_script.Name))
                        {
                            Functions[sql_script.Name].Body += sql_script.Body;
                        }
                        else
                        {
                            Functions.Add(sql_script.Name, sql_script);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex);
            }

            // get constraints
            try
            {
                string sql_query = GetConstraints();

                DataTable dt = Database.ExecuteQuery(sql_query, null, ConnectionString);

                if (dt != null && dt.Rows.Count != 0 && dt.Columns.Count != 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SqlConstraint sql_constraint = new SqlConstraint();

                        sql_constraint.ConstraintName = (string)dr["ConstraintName"];
                        sql_constraint.FKTable        = (string)dr["FKTable"];
                        sql_constraint.FKColumn       = (string)dr["FKColumn"];
                        sql_constraint.PKTable        = (string)dr["PKTable"];
                        sql_constraint.PKColumn       = (string)dr["PKColumn"];

                        if (Constraints.ContainsKey(sql_constraint.ConstraintName))
                        {
                            throw new Exception(string.Format("Constraint {0} already exists.", sql_constraint.ConstraintName));
                        }
                        else
                        {
                            Constraints.Add(sql_constraint.ConstraintName, sql_constraint);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex);
            }

            // load default values
            try
            {
                string sql_query = GetDefaultValues();

                DataTable dt = Database.ExecuteQuery(sql_query, null, ConnectionString);

                if (dt != null && dt.Rows.Count != 0 && dt.Columns.Count != 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (Tables.ContainsKey((string)dr["TableName"]))
                        {
                            if (Tables[(string)dr["TableName"]].Columns.ContainsKey((string)dr["ColumnName"]))
                            {
                                Tables[(string)dr["TableName"]].Columns[(string)dr["ColumnName"]].DefaultValue = RemoveWrappingCharacters((string)dr["DefaultValue"]);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorList.Add(ex);
            }

            return(ErrorList.Count == 0);
        }
Ejemplo n.º 32
0
        /// <summary>
        /// Parse EncounterParticipantComponent
        /// </summary>
        public static Hl7.Fhir.Model.Encounter.EncounterParticipantComponent ParseEncounterParticipantComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Encounter.EncounterParticipantComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Encounter.EncounterParticipantComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Encounter.EncounterParticipantComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element type
                else if( atName == "type" )
                {
                    result.TypeElement = new List<Code<Hl7.Fhir.Model.Encounter.ParticipantType>>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "type") )
                        result.TypeElement.Add(CodeParser.ParseCode<Hl7.Fhir.Model.Encounter.ParticipantType>(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element practitioner
                else if( atName == "practitioner" )
                    result.Practitioner = ResourceReferenceParser.ParseResourceReference(reader, errors);

                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;
        }
Ejemplo n.º 33
0
        /// <summary>
        /// Parse ConceptSetComponent
        /// </summary>
        public static Hl7.Fhir.Model.ValueSet.ConceptSetComponent ParseConceptSetComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.ValueSet.ConceptSetComponent existingInstance = null)
        {
            Hl7.Fhir.Model.ValueSet.ConceptSetComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.ValueSet.ConceptSetComponent();
            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 _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element system
                else if (atName == "system")
                {
                    result.SystemElement = FhirUriParser.ParseFhirUri(reader, errors);
                }

                // Parse element version
                else if (atName == "version")
                {
                    result.VersionElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element code
                else if (atName == "code")
                {
                    result.CodeElement = new List <Hl7.Fhir.Model.Code>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "code"))
                    {
                        result.CodeElement.Add(CodeParser.ParseCode(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element filter
                else if (atName == "filter")
                {
                    result.Filter = new List <Hl7.Fhir.Model.ValueSet.ConceptSetFilterComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "filter"))
                    {
                        result.Filter.Add(ValueSetParser.ParseConceptSetFilterComponent(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);
        }
        /// <summary>
        /// Parse CodeableConcept
        /// </summary>
        public static Hl7.Fhir.Model.CodeableConcept ParseCodeableConcept(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.CodeableConcept existingInstance = null )
        {
            Hl7.Fhir.Model.CodeableConcept result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.CodeableConcept();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element coding
                else if( atName == "coding" )
                {
                    result.Coding = new List<Hl7.Fhir.Model.Coding>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "coding") )
                        result.Coding.Add(CodingParser.ParseCoding(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element text
                else if( atName == "text" )
                    result.TextElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element primary
                else if( atName == "primary" )
                    result.PrimaryElement = IdRefParser.ParseIdRef(reader, errors);

                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;
        }
        /// <summary>
        /// Parse PrescriptionAdministrationRequestDosageInstructionComponent
        /// </summary>
        public static Prescription.PrescriptionAdministrationRequestDosageInstructionComponent ParsePrescriptionAdministrationRequestDosageInstructionComponent(IFhirReader reader, ErrorList errors, Prescription.PrescriptionAdministrationRequestDosageInstructionComponent existingInstance = null)
        {
            Prescription.PrescriptionAdministrationRequestDosageInstructionComponent result = existingInstance != null ? existingInstance : new Prescription.PrescriptionAdministrationRequestDosageInstructionComponent();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "extension"))
                    {
                        result.Extension = new List <Extension>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "extension"))
                        {
                            result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element internalId
                    else if (reader.IsAtRefIdElement())
                    {
                        result.InternalId = Id.Parse(reader.ReadRefIdContents());
                    }

                    // Parse element precondition
                    else if (ParserUtils.IsAtFhirElement(reader, "precondition"))
                    {
                        result.Precondition = new List <CodeableConcept>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "precondition"))
                        {
                            result.Precondition.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element prn
                    else if (ParserUtils.IsAtFhirElement(reader, "prn"))
                    {
                        result.Prn = FhirBooleanParser.ParseFhirBoolean(reader, errors);
                    }

                    // Parse element additionalInstruction
                    else if (ParserUtils.IsAtFhirElement(reader, "additionalInstruction"))
                    {
                        result.AdditionalInstruction = new List <CodeableConcept>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "additionalInstruction"))
                        {
                            result.AdditionalInstruction.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element route
                    else if (ParserUtils.IsAtFhirElement(reader, "route"))
                    {
                        result.Route = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element dose
                    else if (ParserUtils.IsAtFhirElement(reader, "dose", true))
                    {
                        result.Dose = FhirParser.ParseElement(reader, errors);
                    }

                    // Parse element rate
                    else if (ParserUtils.IsAtFhirElement(reader, "rate"))
                    {
                        result.Rate = QuantityParser.ParseQuantity(reader, errors);
                    }

                    // Parse element schedule
                    else if (ParserUtils.IsAtFhirElement(reader, "schedule"))
                    {
                        result.Schedule = new List <Schedule>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "schedule"))
                        {
                            result.Schedule.Add(ScheduleParser.ParseSchedule(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();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 36
0
        /// <summary>
        /// Parse ValueSetDefineConceptComponent
        /// </summary>
        public static Hl7.Fhir.Model.ValueSet.ValueSetDefineConceptComponent ParseValueSetDefineConceptComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.ValueSet.ValueSetDefineConceptComponent existingInstance = null)
        {
            Hl7.Fhir.Model.ValueSet.ValueSetDefineConceptComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.ValueSet.ValueSetDefineConceptComponent();
            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 _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element code
                else if (atName == "code")
                {
                    result.CodeElement = CodeParser.ParseCode(reader, errors);
                }

                // Parse element abstract
                else if (atName == "abstract")
                {
                    result.AbstractElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);
                }

                // Parse element display
                else if (atName == "display")
                {
                    result.DisplayElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element definition
                else if (atName == "definition")
                {
                    result.DefinitionElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element concept
                else if (atName == "concept")
                {
                    result.Concept = new List <Hl7.Fhir.Model.ValueSet.ValueSetDefineConceptComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "concept"))
                    {
                        result.Concept.Add(ValueSetParser.ParseValueSetDefineConceptComponent(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);
        }
Ejemplo n.º 37
0
        /// <summary>
        /// Parse EncounterHospitalizationComponent
        /// </summary>
        public static Hl7.Fhir.Model.Encounter.EncounterHospitalizationComponent ParseEncounterHospitalizationComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Encounter.EncounterHospitalizationComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Encounter.EncounterHospitalizationComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Encounter.EncounterHospitalizationComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element preAdmissionIdentifier
                else if( atName == "preAdmissionIdentifier" )
                    result.PreAdmissionIdentifier = IdentifierParser.ParseIdentifier(reader, errors);

                // Parse element origin
                else if( atName == "origin" )
                    result.Origin = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element admitSource
                else if( atName == "admitSource" )
                    result.AdmitSource = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element period
                else if( atName == "period" )
                    result.Period = PeriodParser.ParsePeriod(reader, errors);

                // Parse element accomodation
                else if( atName == "accomodation" )
                {
                    result.Accomodation = new List<Hl7.Fhir.Model.Encounter.EncounterHospitalizationAccomodationComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "accomodation") )
                        result.Accomodation.Add(EncounterParser.ParseEncounterHospitalizationAccomodationComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element diet
                else if( atName == "diet" )
                    result.Diet = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element specialCourtesy
                else if( atName == "specialCourtesy" )
                {
                    result.SpecialCourtesy = new List<Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "specialCourtesy") )
                        result.SpecialCourtesy.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element specialArrangement
                else if( atName == "specialArrangement" )
                {
                    result.SpecialArrangement = new List<Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "specialArrangement") )
                        result.SpecialArrangement.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element destination
                else if( atName == "destination" )
                    result.Destination = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element dischargeDisposition
                else if( atName == "dischargeDisposition" )
                    result.DischargeDisposition = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element reAdmission
                else if( atName == "reAdmission" )
                    result.ReAdmissionElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                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;
        }
        /// <summary>
        /// Parse OperationOutcomeIssueComponent
        /// </summary>
        public static Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent ParseOperationOutcomeIssueComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent existingInstance = null)
        {
            Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent();
            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 _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element severity
                else if (atName == "severity")
                {
                    result.SeverityElement = CodeParser.ParseCode <Hl7.Fhir.Model.OperationOutcome.IssueSeverity>(reader, errors);
                }

                // Parse element type
                else if (atName == "type")
                {
                    result.Type = CodingParser.ParseCoding(reader, errors);
                }

                // Parse element details
                else if (atName == "details")
                {
                    result.DetailsElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element location
                else if (atName == "location")
                {
                    result.LocationElement = new List <Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "location"))
                    {
                        result.LocationElement.Add(FhirStringParser.ParseFhirString(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);
        }
Ejemplo n.º 39
0
        /// <summary>
        /// Parse Encounter
        /// </summary>
        public static Hl7.Fhir.Model.Encounter ParseEncounter(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Encounter existingInstance = null )
        {
            Hl7.Fhir.Model.Encounter result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Encounter();
            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 = new List<Hl7.Fhir.Model.Identifier>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "identifier") )
                        result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element status
                else if( atName == "status" )
                    result.StatusElement = CodeParser.ParseCode<Hl7.Fhir.Model.Encounter.EncounterState>(reader, errors);

                // Parse element class
                else if( atName == "class" )
                    result.ClassElement = CodeParser.ParseCode<Hl7.Fhir.Model.Encounter.EncounterClass>(reader, errors);

                // Parse element type
                else if( atName == "type" )
                {
                    result.Type = new List<Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "type") )
                        result.Type.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element subject
                else if( atName == "subject" )
                    result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element participant
                else if( atName == "participant" )
                {
                    result.Participant = new List<Hl7.Fhir.Model.Encounter.EncounterParticipantComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "participant") )
                        result.Participant.Add(EncounterParser.ParseEncounterParticipantComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element fulfills
                else if( atName == "fulfills" )
                    result.Fulfills = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element start
                else if( atName == "start" )
                    result.StartElement = FhirDateTimeParser.ParseFhirDateTime(reader, errors);

                // Parse element length
                else if( atName == "length" )
                    result.Length = DurationParser.ParseDuration(reader, errors);

                // Parse element reason
                else if( atName.StartsWith("reason") )
                    result.Reason = FhirParser.ParseElement(reader, errors);

                // Parse element indication
                else if( atName == "indication" )
                    result.Indication = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element priority
                else if( atName == "priority" )
                    result.Priority = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element hospitalization
                else if( atName == "hospitalization" )
                    result.Hospitalization = EncounterParser.ParseEncounterHospitalizationComponent(reader, errors);

                // Parse element location
                else if( atName == "location" )
                {
                    result.Location = new List<Hl7.Fhir.Model.Encounter.EncounterLocationComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "location") )
                        result.Location.Add(EncounterParser.ParseEncounterLocationComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element serviceProvider
                else if( atName == "serviceProvider" )
                    result.ServiceProvider = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element partOf
                else if( atName == "partOf" )
                    result.PartOf = ResourceReferenceParser.ParseResourceReference(reader, errors);

                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;
        }
        /// <summary>
        /// Parse OperationOutcome
        /// </summary>
        public static Hl7.Fhir.Model.OperationOutcome ParseOperationOutcome(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.OperationOutcome existingInstance = null)
        {
            Hl7.Fhir.Model.OperationOutcome result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.OperationOutcome();
            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 issue
                else if (atName == "issue")
                {
                    result.Issue = new List <Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "issue"))
                    {
                        result.Issue.Add(OperationOutcomeParser.ParseOperationOutcomeIssueComponent(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);
        }
Ejemplo n.º 41
0
        /// <summary>
        /// Parse GroupCharacteristicComponent
        /// </summary>
        public static Hl7.Fhir.Model.Group.GroupCharacteristicComponent ParseGroupCharacteristicComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Group.GroupCharacteristicComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Group.GroupCharacteristicComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Group.GroupCharacteristicComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element type
                else if( atName == "type" )
                    result.Type = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element value
                else if( atName.StartsWith("value") )
                    result.Value = FhirParser.ParseElement(reader, errors);

                // Parse element exclude
                else if( atName == "exclude" )
                    result.ExcludeElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                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;
        }
Ejemplo n.º 42
0
        /// <summary>
        /// Parse ProblemRelatedItemComponent
        /// </summary>
        public static Hl7.Fhir.Model.Problem.ProblemRelatedItemComponent ParseProblemRelatedItemComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Problem.ProblemRelatedItemComponent existingInstance = null)
        {
            Hl7.Fhir.Model.Problem.ProblemRelatedItemComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Problem.ProblemRelatedItemComponent();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "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 _id
                    else if (ParserUtils.IsAtFhirElement(reader, "_id"))
                    {
                        result.LocalId = Id.Parse(reader.ReadPrimitiveContents("id"));
                    }

                    // Parse element type
                    else if (ParserUtils.IsAtFhirElement(reader, "type"))
                    {
                        result.Type = CodeParser.ParseCode <Hl7.Fhir.Model.Problem.ProblemRelationshipType>(reader, errors);
                    }

                    // Parse element code
                    else if (ParserUtils.IsAtFhirElement(reader, "code"))
                    {
                        result.Code = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element target
                    else if (ParserUtils.IsAtFhirElement(reader, "target"))
                    {
                        result.Target = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
Ejemplo n.º 43
0
        public ErrorList Validate()
        {
            ErrorList result = new ErrorList();

            if (Label == null)
                result.Add("Tag label cannot be null");

            return result;
        }
Ejemplo n.º 44
0
        /// <summary>
        /// Parse Problem
        /// </summary>
        public static Hl7.Fhir.Model.Problem ParseProblem(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Problem existingInstance = null)
        {
            Hl7.Fhir.Model.Problem result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Problem();
            try
            {
                string currentElementName = reader.CurrentElementName;
                reader.EnterElement();

                while (reader.HasMoreElements())
                {
                    // Parse element extension
                    if (ParserUtils.IsAtFhirElement(reader, "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 (ParserUtils.IsAtFhirElement(reader, "language"))
                    {
                        result.Language = CodeParser.ParseCode(reader, errors);
                    }

                    // Parse element text
                    else if (ParserUtils.IsAtFhirElement(reader, "text"))
                    {
                        result.Text = NarrativeParser.ParseNarrative(reader, errors);
                    }

                    // Parse element contained
                    else if (ParserUtils.IsAtFhirElement(reader, "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 (ParserUtils.IsAtFhirElement(reader, "_id"))
                    {
                        result.LocalId = Id.Parse(reader.ReadPrimitiveContents("id"));
                    }

                    // Parse element subject
                    else if (ParserUtils.IsAtFhirElement(reader, "subject"))
                    {
                        result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    // Parse element visit
                    else if (ParserUtils.IsAtFhirElement(reader, "visit"))
                    {
                        result.Visit = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    // Parse element asserter
                    else if (ParserUtils.IsAtFhirElement(reader, "asserter"))
                    {
                        result.Asserter = ResourceReferenceParser.ParseResourceReference(reader, errors);
                    }

                    // Parse element dateAsserted
                    else if (ParserUtils.IsAtFhirElement(reader, "dateAsserted"))
                    {
                        result.DateAsserted = DateParser.ParseDate(reader, errors);
                    }

                    // Parse element code
                    else if (ParserUtils.IsAtFhirElement(reader, "code"))
                    {
                        result.Code = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element category
                    else if (ParserUtils.IsAtFhirElement(reader, "category"))
                    {
                        result.Category = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element status
                    else if (ParserUtils.IsAtFhirElement(reader, "status"))
                    {
                        result.Status = CodeParser.ParseCode <Hl7.Fhir.Model.Problem.ProblemStatus>(reader, errors);
                    }

                    // Parse element certainty
                    else if (ParserUtils.IsAtFhirElement(reader, "certainty"))
                    {
                        result.Certainty = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element severity
                    else if (ParserUtils.IsAtFhirElement(reader, "severity"))
                    {
                        result.Severity = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                    }

                    // Parse element onset
                    else if (ParserUtils.IsAtFhirElement(reader, "onset", true))
                    {
                        result.Onset = FhirParser.ParseElement(reader, errors);
                    }

                    // Parse element abatement
                    else if (ParserUtils.IsAtFhirElement(reader, "abatement", true))
                    {
                        result.Abatement = FhirParser.ParseElement(reader, errors);
                    }

                    // Parse element stage
                    else if (ParserUtils.IsAtFhirElement(reader, "stage"))
                    {
                        result.Stage = ProblemParser.ParseProblemStageComponent(reader, errors);
                    }

                    // Parse element evidence
                    else if (ParserUtils.IsAtFhirElement(reader, "evidence"))
                    {
                        result.Evidence = new List <Hl7.Fhir.Model.Problem.ProblemEvidenceComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "evidence"))
                        {
                            result.Evidence.Add(ProblemParser.ParseProblemEvidenceComponent(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element location
                    else if (ParserUtils.IsAtFhirElement(reader, "location"))
                    {
                        result.Location = new List <Hl7.Fhir.Model.Problem.ProblemLocationComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "location"))
                        {
                            result.Location.Add(ProblemParser.ParseProblemLocationComponent(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element relatedItem
                    else if (ParserUtils.IsAtFhirElement(reader, "relatedItem"))
                    {
                        result.RelatedItem = new List <Hl7.Fhir.Model.Problem.ProblemRelatedItemComponent>();
                        reader.EnterArray();

                        while (ParserUtils.IsAtArrayElement(reader, "relatedItem"))
                        {
                            result.RelatedItem.Add(ProblemParser.ParseProblemRelatedItemComponent(reader, errors));
                        }

                        reader.LeaveArray();
                    }

                    // Parse element notes
                    else if (ParserUtils.IsAtFhirElement(reader, "notes"))
                    {
                        result.Notes = FhirStringParser.ParseFhirString(reader, errors);
                    }

                    else
                    {
                        errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                        reader.SkipSubElementsFor(currentElementName);
                        result = null;
                    }
                }

                reader.LeaveElement();
            }
            catch (Exception ex)
            {
                errors.Add(ex.Message, reader);
            }
            return(result);
        }
        /// <summary>
        /// Parse OperationOutcome
        /// </summary>
        public static Hl7.Fhir.Model.OperationOutcome ParseOperationOutcome(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.OperationOutcome existingInstance = null )
        {
            Hl7.Fhir.Model.OperationOutcome result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.OperationOutcome();
            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 issue
                else if( atName == "issue" )
                {
                    result.Issue = new List<Hl7.Fhir.Model.OperationOutcome.OperationOutcomeIssueComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "issue") )
                        result.Issue.Add(OperationOutcomeParser.ParseOperationOutcomeIssueComponent(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;
        }
Ejemplo n.º 46
0
 public CustomError(ErrorType type)
     : this()
 {
     ErrorList.Add(type);
 }
Ejemplo n.º 47
0
        /// <summary>
        /// Parse ConformanceMessagingComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceMessagingComponent ParseConformanceMessagingComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceMessagingComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceMessagingComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceMessagingComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element endpoint
                else if( atName == "endpoint" )
                    result.EndpointElement = FhirUriParser.ParseFhirUri(reader, errors);

                // Parse element reliableCache
                else if( atName == "reliableCache" )
                    result.ReliableCacheElement = IntegerParser.ParseInteger(reader, errors);

                // Parse element documentation
                else if( atName == "documentation" )
                    result.DocumentationElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element event
                else if( atName == "event" )
                {
                    result.Event = new List<Hl7.Fhir.Model.Conformance.ConformanceMessagingEventComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "event") )
                        result.Event.Add(ConformanceParser.ParseConformanceMessagingEventComponent(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;
        }
Ejemplo n.º 48
0
 public void Add(ErrorType type)
 {
     ErrorList.Add(type);
 }
Ejemplo n.º 49
0
        /// <summary>
        /// Parse ConformanceRestComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceRestComponent ParseConformanceRestComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceRestComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceRestComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceRestComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element mode
                else if( atName == "mode" )
                    result.ModeElement = CodeParser.ParseCode<Hl7.Fhir.Model.Conformance.RestfulConformanceMode>(reader, errors);

                // Parse element documentation
                else if( atName == "documentation" )
                    result.DocumentationElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element security
                else if( atName == "security" )
                    result.Security = ConformanceParser.ParseConformanceRestSecurityComponent(reader, errors);

                // Parse element resource
                else if( atName == "resource" )
                {
                    result.Resource = new List<Hl7.Fhir.Model.Conformance.ConformanceRestResourceComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "resource") )
                        result.Resource.Add(ConformanceParser.ParseConformanceRestResourceComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element batch
                else if( atName == "batch" )
                    result.BatchElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element history
                else if( atName == "history" )
                    result.HistoryElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element query
                else if( atName == "query" )
                {
                    result.Query = new List<Hl7.Fhir.Model.Conformance.ConformanceRestQueryComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "query") )
                        result.Query.Add(ConformanceParser.ParseConformanceRestQueryComponent(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;
        }
Ejemplo n.º 50
0
        /// <summary>
        /// Parse Substance
        /// </summary>
        public static Hl7.Fhir.Model.Substance ParseSubstance(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Substance existingInstance = null)
        {
            Hl7.Fhir.Model.Substance result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Substance();
            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 name
                else if (atName == "name")
                {
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element type
                else if (atName == "type")
                {
                    result.Type = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                // Parse element description
                else if (atName == "description")
                {
                    result.DescriptionElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element status
                else if (atName == "status")
                {
                    result.Status = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                // Parse element effectiveTime
                else if (atName == "effectiveTime")
                {
                    result.EffectiveTime = PeriodParser.ParsePeriod(reader, errors);
                }

                // Parse element quantity
                else if (atName == "quantity")
                {
                    result.Quantity = QuantityParser.ParseQuantity(reader, errors);
                }

                // Parse element ingredient
                else if (atName == "ingredient")
                {
                    result.Ingredient = new List <Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "ingredient"))
                    {
                        result.Ingredient.Add(ResourceReferenceParser.ParseResourceReference(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element quantityMode
                else if (atName == "quantityMode")
                {
                    result.QuantityMode = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                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);
        }
Ejemplo n.º 51
0
        /// <summary>
        /// Parse ConformanceRestResourceComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceRestResourceComponent ParseConformanceRestResourceComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceRestResourceComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceRestResourceComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceRestResourceComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element type
                else if( atName == "type" )
                    result.TypeElement = CodeParser.ParseCode(reader, errors);

                // Parse element profile
                else if( atName == "profile" )
                    result.Profile = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element operation
                else if( atName == "operation" )
                {
                    result.Operation = new List<Hl7.Fhir.Model.Conformance.ConformanceRestResourceOperationComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "operation") )
                        result.Operation.Add(ConformanceParser.ParseConformanceRestResourceOperationComponent(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element readHistory
                else if( atName == "readHistory" )
                    result.ReadHistoryElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);

                // Parse element searchInclude
                else if( atName == "searchInclude" )
                {
                    result.SearchIncludeElement = new List<Hl7.Fhir.Model.FhirString>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "searchInclude") )
                        result.SearchIncludeElement.Add(FhirStringParser.ParseFhirString(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element searchParam
                else if( atName == "searchParam" )
                {
                    result.SearchParam = new List<Hl7.Fhir.Model.Conformance.ConformanceRestResourceSearchParamComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "searchParam") )
                        result.SearchParam.Add(ConformanceParser.ParseConformanceRestResourceSearchParamComponent(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;
        }
Ejemplo n.º 52
0
        public static void ExecuteScript(IServerProcess process, string script, ScriptExecuteOption options, out ErrorList errors, out TimeSpan timeElapsed, ReportScriptProgressHandler reportScriptProgress, DebugLocator locator)
        {
            StringBuilder result = new StringBuilder();

            errors      = new ErrorList();
            timeElapsed = TimeSpan.Zero;

            bool     attemptExecute = true;
            DateTime startTime      = DateTime.Now;

            try
            {
                IServerScript localScript = process.PrepareScript(script, locator);
                try
                {
                    if (ConvertParserErrors(localScript.Messages, errors))
                    {
                        foreach (IServerBatch batch in localScript.Batches)
                        {
                            PlanStatistics statistics = null;
                            try
                            {
                                if (batch.IsExpression())
                                {
                                    IServerExpressionPlan plan = batch.PrepareExpression(null);
                                    try
                                    {
                                        attemptExecute &= ConvertCompilerErrors(plan.Messages, errors);
                                        if (attemptExecute)
                                        {
                                            int rowCount = ReadResult(result, plan);

                                            AppendStatistics(result, options, plan.PlanStatistics, plan.ProgramStatistics, rowCount);
                                            statistics = plan.PlanStatistics;
                                        }
                                    }
                                    finally
                                    {
                                        batch.UnprepareExpression(plan);
                                    }
                                }
                                else
                                {
                                    IServerStatementPlan plan = batch.PrepareStatement(null);
                                    try
                                    {
                                        attemptExecute &= ConvertCompilerErrors(plan.Messages, errors);
                                        if (attemptExecute)
                                        {
                                            plan.Execute(null);

                                            AppendStatistics(result, options, plan.PlanStatistics, plan.ProgramStatistics, -1);
                                            statistics = plan.PlanStatistics;
                                        }
                                    }
                                    finally
                                    {
                                        batch.UnprepareStatement(plan);
                                    }
                                }
                            }
                            finally
                            {
                                if (reportScriptProgress != null)
                                {
                                    reportScriptProgress(statistics, result.ToString());
                                }
                                result.Length = 0;
                            }
                        }                       // foreach batch...
                    }                           // if (no parser errors)...
                }
                finally
                {
                    process.UnprepareScript(localScript);
                }
            }
            catch (Exception exception)
            {
                errors.Add(exception);
            }
            timeElapsed = DateTime.Now - startTime;
        }
Ejemplo n.º 53
0
        /// <summary>
        /// Parse ConformanceRestSecurityComponent
        /// </summary>
        public static Hl7.Fhir.Model.Conformance.ConformanceRestSecurityComponent ParseConformanceRestSecurityComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Conformance.ConformanceRestSecurityComponent existingInstance = null )
        {
            Hl7.Fhir.Model.Conformance.ConformanceRestSecurityComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Conformance.ConformanceRestSecurityComponent();
            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 _id
                else if( atName == "_id" )
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));

                // Parse element service
                else if( atName == "service" )
                {
                    result.Service = new List<Hl7.Fhir.Model.CodeableConcept>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "service") )
                        result.Service.Add(CodeableConceptParser.ParseCodeableConcept(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element description
                else if( atName == "description" )
                    result.DescriptionElement = FhirStringParser.ParseFhirString(reader, errors);

                // Parse element certificate
                else if( atName == "certificate" )
                {
                    result.Certificate = new List<Hl7.Fhir.Model.Conformance.ConformanceRestSecurityCertificateComponent>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "certificate") )
                        result.Certificate.Add(ConformanceParser.ParseConformanceRestSecurityCertificateComponent(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;
        }
Ejemplo n.º 54
0
        /// <summary>
        /// Parse Group
        /// </summary>
        public static Hl7.Fhir.Model.Group ParseGroup(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Group existingInstance = null)
        {
            Hl7.Fhir.Model.Group result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Group();
            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 type
                else if (atName == "type")
                {
                    result.TypeElement = CodeParser.ParseCode <Hl7.Fhir.Model.Group.GroupType>(reader, errors);
                }

                // Parse element actual
                else if (atName == "actual")
                {
                    result.ActualElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);
                }

                // Parse element code
                else if (atName == "code")
                {
                    result.Code = CodeableConceptParser.ParseCodeableConcept(reader, errors);
                }

                // Parse element name
                else if (atName == "name")
                {
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element quantity
                else if (atName == "quantity")
                {
                    result.QuantityElement = IntegerParser.ParseInteger(reader, errors);
                }

                // Parse element characteristic
                else if (atName == "characteristic")
                {
                    result.Characteristic = new List <Hl7.Fhir.Model.Group.GroupCharacteristicComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "characteristic"))
                    {
                        result.Characteristic.Add(GroupParser.ParseGroupCharacteristicComponent(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element member
                else if (atName == "member")
                {
                    result.Member = new List <Hl7.Fhir.Model.ResourceReference>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "member"))
                    {
                        result.Member.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);
        }
        /// <summary>
        /// Parse RelatedPerson
        /// </summary>
        public static Hl7.Fhir.Model.RelatedPerson ParseRelatedPerson(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.RelatedPerson existingInstance = null )
        {
            Hl7.Fhir.Model.RelatedPerson result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.RelatedPerson();
            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 = new List<Hl7.Fhir.Model.Identifier>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "identifier") )
                        result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element patient
                else if( atName == "patient" )
                    result.Patient = ResourceReferenceParser.ParseResourceReference(reader, errors);

                // Parse element relationship
                else if( atName == "relationship" )
                    result.Relationship = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element name
                else if( atName == "name" )
                    result.Name = HumanNameParser.ParseHumanName(reader, errors);

                // Parse element telecom
                else if( atName == "telecom" )
                {
                    result.Telecom = new List<Hl7.Fhir.Model.Contact>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "telecom") )
                        result.Telecom.Add(ContactParser.ParseContact(reader, errors));

                    reader.LeaveArray();
                }

                // Parse element gender
                else if( atName == "gender" )
                    result.Gender = CodeableConceptParser.ParseCodeableConcept(reader, errors);

                // Parse element address
                else if( atName == "address" )
                    result.Address = AddressParser.ParseAddress(reader, errors);

                // Parse element photo
                else if( atName == "photo" )
                {
                    result.Photo = new List<Hl7.Fhir.Model.Attachment>();
                    reader.EnterArray();

                    while( ParserUtils.IsAtArrayElement(reader, "photo") )
                        result.Photo.Add(AttachmentParser.ParseAttachment(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;
        }
Ejemplo n.º 56
0
        /* Function: ParseCommandLine
         *
         * Parses the command line and applies the relevant settings in in <NaturalDocs.Engine's> modules.  If there were
         * errors they will be placed on errorList and it will return <ParseCommandLineResult.Error>.
         *
         * Supported:
         *
         *		- -i, --input, --source
         *		- -o, --output
         *		- -p, --project, --project-config --project-configuration
         *		- -w, --data, --working-data
         *		- -xi, --exclude-input, --exclude-source
         *		- -xip, --exclude-input-pattern, --exclude-source-pattern
         *		- -img, --images
         *		- -t, --tab, --tab-width, --tab-length
         *		- -do, --documented-only
         *		- -nag, --no-auto-group
         *		- -s, --style
         *		- -r, --rebuild
         *		- -ro, --rebuild-output
         *		- -q, --quiet
         *		- -v, --version
         *		- -vs, --versions, --all-versions
         *		- --benchmark
         *		- --worker-threads, --threads
         *		- --pause-before-exit, --pause
         *		- --pause-on-error
         *		- --dont-shrink-files
         *		- -h, --help
         *		- -?
         *
         * No Longer Supported:
         *
         *		- -cs, --char-set, --charset, --character-set, --characterset
         *		- -ho, --headers-only, --headersonly
         *		- -ag, --auto-group, --autogroup
         */
        private static ParseCommandLineResult ParseCommandLine(string[] commandLineSegments, out ProjectConfig commandLineConfig, ErrorList errorList)
        {
            int originalErrorCount        = errorList.Count;
            ParseCommandLineResult result = ParseCommandLineResult.Run;

            Engine.CommandLine commandLine = new CommandLine(commandLineSegments);

            commandLine.AddAliases("--input", "-i", "--source");
            commandLine.AddAliases("--output", "-o");
            commandLine.AddAliases("--project", "-p", "--project-config", "--projectconfig", "--project-configuration", "--projectconfiguration");
            commandLine.AddAliases("--working-data", "-w", "--data", "--workingdata");
            commandLine.AddAliases("--exclude-input", "-xi", "--excludeinput", "--exclude-source", "--excludesource");
            commandLine.AddAliases("--exclude-input-pattern", "-xip", "--excludeinputpattern", "--exclude-source-pattern", "--excludesourcepattern");
            commandLine.AddAliases("--images", "-img");
            commandLine.AddAliases("--tab-width", "-t", "--tab", "--tabwidth", "--tab-length", "--tablength");
            commandLine.AddAliases("--documented-only", "-do", "--documentedonly");
            commandLine.AddAliases("--no-auto-group", "-nag", "--noautogroup");
            commandLine.AddAliases("--style", "-s");
            commandLine.AddAliases("--rebuild", "-r");
            commandLine.AddAliases("--rebuild-output", "-ro", "--rebuildoutput");
            commandLine.AddAliases("--quiet", "-q");
            commandLine.AddAliases("--version", "-v");
            commandLine.AddAliases("--all-versions", "-vs", "--versions", "--allversions");
            commandLine.AddAliases("--pause-before-exit", "--pausebeforexit", "--pause");
            commandLine.AddAliases("--pause-on-error", "--pauseonerror");
            commandLine.AddAliases("--dont-shrink-files", "--dontshrinkfiles", "--dont-shrink-output", "--dontshrinkoutput", "--dont-shrink", "--dontshrink");
            commandLine.AddAliases("--worker-threads", "--threads");
            // no aliases for --benchmark
            commandLine.AddAliases("--help", "-h", "-?");

            // No longer supported
            commandLine.AddAliases("--charset", "-cs", "--char-set", "--character-set", "--characterset");
            commandLine.AddAliases("--headers-only", "-ho", "--headersonly");
            commandLine.AddAliases("--auto-group", "-ag", "--autogroup");

            commandLineConfig = new ProjectConfig(Source.CommandLine);

            string parameter, parameterAsEntered;
            bool   isFirst = true;

            while (commandLine.IsInBounds)
            {
                // If the first segment isn't a parameter, assume it's the project folder specified without -p.
                if (isFirst && !commandLine.IsOnParameter)
                {
                    parameter          = "--project";
                    parameterAsEntered = parameter;
                }
                else
                {
                    if (!commandLine.GetParameter(out parameter, out parameterAsEntered))
                    {
                        string bareWord;
                        commandLine.GetBareWord(out bareWord);

                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.UnrecognizedParameter(param)", bareWord)
                            );

                        commandLine.SkipToNextParameter();
                    }
                }

                isFirst = false;


                // Input folders

                if (parameter == "--input")
                {
                    Path folder;

                    if (!commandLine.GetPathValue(out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFolder(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        var target = new Engine.Config.Targets.SourceFolder(Source.CommandLine, Engine.Files.InputType.Source);

                        target.Folder = folder;
                        target.FolderPropertyLocation = Source.CommandLine;

                        commandLineConfig.InputTargets.Add(target);
                    }
                }



                // Output folders

                else if (parameter == "--output")
                {
                    string format;
                    Path   folder;

                    if (!commandLine.GetBareWordAndPathValue(out format, out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFormatAndFolder(param)", parameter)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        format = format.ToLower();

                        if (format == "html" || format == "framedhtml")
                        {
                            var target = new Engine.Config.Targets.HTMLOutputFolder(Source.CommandLine);

                            target.Folder = folder;
                            target.FolderPropertyLocation = Source.CommandLine;

                            commandLineConfig.OutputTargets.Add(target);
                        }
                        else
                        {
                            errorList.Add(
                                Locale.Get("NaturalDocs.CLI", "CommandLine.UnrecognizedOutputFormat(format)", format)
                                );

                            commandLine.SkipToNextParameter();
                        }
                    }
                }



                // Project configuration folder

                else if (parameter == "--project")
                {
                    Path folder;

                    if (!commandLine.GetPathValue(out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFolder(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        // Accept the parameter being set to Project.txt instead of the folder.
                        if (folder.NameWithoutPath.ToLower() == "project.txt")
                        {
                            folder = folder.ParentFolder;
                        }

                        if (commandLineConfig.ProjectConfigFolderPropertyLocation.IsDefined)
                        {
                            errorList.Add(
                                Locale.Get("NaturalDocs.CLI", "CommandLine.OnlyOneProjectConfigFolder")
                                );
                        }
                        else
                        {
                            commandLineConfig.ProjectConfigFolder = folder;
                            commandLineConfig.ProjectConfigFolderPropertyLocation = Source.CommandLine;
                        }
                    }
                }



                // Working data folder

                else if (parameter == "--working-data")
                {
                    Path folder;

                    if (!commandLine.GetPathValue(out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFolder(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        if (commandLineConfig.WorkingDataFolderPropertyLocation.IsDefined)
                        {
                            errorList.Add(
                                Locale.Get("NaturalDocs.CLI", "CommandLine.OnlyOneWorkingDataFolder")
                                );
                        }
                        else
                        {
                            commandLineConfig.WorkingDataFolder = folder;
                            commandLineConfig.WorkingDataFolderPropertyLocation = Source.CommandLine;
                        }
                    }
                }



                // Ignored input folders

                else if (parameter == "--exclude-input")
                {
                    Path folder;

                    if (!commandLine.GetPathValue(out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFolder(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        var target = new Engine.Config.Targets.IgnoredSourceFolder(Source.CommandLine);

                        target.Folder = folder;
                        target.FolderPropertyLocation = Source.CommandLine;

                        commandLineConfig.FilterTargets.Add(target);
                    }
                }



                // Ignored input folder patterns

                else if (parameter == "--exclude-input-pattern")
                {
                    string pattern;

                    if (!commandLine.GetBareOrQuotedWordsValue(out pattern))
                    {
                        errorList.Add(
                            Engine.Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedPattern(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        var target = new Engine.Config.Targets.IgnoredSourceFolderPattern(Source.CommandLine);

                        target.Pattern = pattern;
                        target.PatternPropertyLocation = Source.CommandLine;

                        commandLineConfig.FilterTargets.Add(target);
                    }
                }



                // Image folders

                else if (parameter == "--images")
                {
                    Path folder;

                    if (!commandLine.GetPathValue(out folder))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedFolder(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        if (folder.IsRelative)
                        {
                            folder = System.Environment.CurrentDirectory + "/" + folder;
                        }

                        var target = new Engine.Config.Targets.SourceFolder(Source.CommandLine, Engine.Files.InputType.Image);

                        target.Folder = folder;
                        target.FolderPropertyLocation = Source.CommandLine;

                        commandLineConfig.InputTargets.Add(target);
                    }
                }



                // Tab Width

                else if (parameter == "--tab-width")
                {
                    int tabWidth;

                    if (!commandLine.GetIntegerValue(out tabWidth))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNumber(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else if (tabWidth < 1)
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.InvalidTabWidth")
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.TabWidth = tabWidth;
                        commandLineConfig.TabWidthPropertyLocation = Source.CommandLine;
                    }
                }

                // Support the -t4 form ini addition to -t 4.  Doesn't support --tablength4.
                else if (parameter.StartsWith("-t") && parameter.Length > 2 && parameter[2] >= '0' && parameter[2] <= '9')
                {
                    string tabWidthString = parameter.Substring(2);

                    int tabWidth;

                    if (!Int32.TryParse(tabWidthString, out tabWidth))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNumber(param)", "-t")
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else if (tabWidth < 1)
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.InvalidTabWidth")
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.TabWidth = tabWidth;
                        commandLineConfig.TabWidthPropertyLocation = Source.CommandLine;
                    }
                }



                // Documented Only

                else if (parameter == "--documented-only")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.DocumentedOnly = true;
                        commandLineConfig.DocumentedOnlyPropertyLocation = Source.CommandLine;
                    }
                }



                // No Auto-Group

                else if (parameter == "--no-auto-group")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.AutoGroup = false;
                        commandLineConfig.AutoGroupPropertyLocation = Source.CommandLine;
                    }
                }



                // Don't Shrink Files

                else if (parameter == "--dont-shrink-files")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.ShrinkFiles = false;
                        commandLineConfig.ShrinkFilesPropertyLocation = Source.CommandLine;
                    }
                }



                // Style

                else if (parameter == "--style")
                {
                    string styleName;

                    if (!commandLine.GetBareOrQuotedWordsValue(out styleName))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedStyleName(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        commandLineConfig.ProjectInfo.StyleName = styleName;
                        commandLineConfig.ProjectInfo.StyleNamePropertyLocation = Source.CommandLine;
                    }
                }



                // Rebuild

                else if (parameter == "--rebuild")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        EngineInstance.Config.ReparseEverything = true;
                        EngineInstance.Config.RebuildAllOutput  = true;
                    }
                }

                else if (parameter == "--rebuild-output")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        EngineInstance.Config.RebuildAllOutput = true;
                    }
                }



                // Quiet

                else if (parameter == "--quiet")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        quiet = true;
                    }
                }



                // Worker Threads

                else if (parameter == "--worker-threads")
                {
                    int value;

                    if (!commandLine.GetIntegerValue(out value))
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNumber(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else if (value < 1)
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.InvalidWorkerThreadCount")
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        workerThreadCount = value;
                    }
                }



                // Benchmark

                else if (parameter == "--benchmark")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        benchmark = true;
                    }
                }



                // Pause Before Exit

                else if (parameter == "--pause-before-exit")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        pauseBeforeExit = true;
                    }
                }



                // Pause on Error

                else if (parameter == "--pause-on-error")
                {
                    if (!commandLine.NoValue())
                    {
                        errorList.Add(
                            Locale.Get("NaturalDocs.CLI", "CommandLine.ExpectedNoValue(param)", parameterAsEntered)
                            );

                        commandLine.SkipToNextParameter();
                    }
                    else
                    {
                        pauseOnError = true;
                    }
                }



                // Help

                else if (parameter == "--help")
                {
                    result = ParseCommandLineResult.ShowCommandLineReference;
                }



                // Version

                else if (parameter == "--version")
                {
                    result = ParseCommandLineResult.ShowVersion;
                }



                // All Versions

                else if (parameter == "--all-versions")
                {
                    result = ParseCommandLineResult.ShowAllVersions;
                }



                // No longer supported parameters

                else if (parameter == "--charset" ||
                         parameter == "--headers-only" ||
                         parameter == "--auto-group")
                {
                    errorList.Add(
                        Locale.Get("NaturalDocs.CLI", "CommandLine.NoLongerSupported(param)", parameterAsEntered)
                        );

                    commandLine.SkipToNextParameter();
                }



                // Everything else

                else
                {
                    errorList.Add(
                        Locale.Get("NaturalDocs.CLI", "CommandLine.UnrecognizedParameter(param)", parameterAsEntered)
                        );

                    commandLine.SkipToNextParameter();
                }
            }


            // Validation

            if (!commandLineConfig.ProjectConfigFolderPropertyLocation.IsDefined)
            {
                errorList.Add(
                    Locale.Get("NaturalDocs.CLI", "CommandLine.NoProjectConfigFolder")
                    );
            }


            // Done.

            if (result == ParseCommandLineResult.Run && errorList.Count != originalErrorCount)
            {
                result = ParseCommandLineResult.Error;
            }

            return(result);
        }
Ejemplo n.º 57
0
 public void ShouldBeAbleToAddErrorInfo()
 {
     ErrorList errors = new ErrorList();
     errors.Add(new ErrorInfo("Name"));
     Assert.AreEqual(1, errors.Count);
 }
Ejemplo n.º 58
0
 public override void RuntimeError(TemplateMessage msg)
 {
     ErrorList.Add(msg);
 }
Ejemplo n.º 59
0
 public void ShouldReturnNullIfFieldNameDoesntExists()
 {
     ErrorList errors = new ErrorList();
     errors.Add(new ErrorInfo("Name", "Can't be blank"));
     Assert.IsNull(errors["Age"]);
 }
Ejemplo n.º 60
0
        protected void BulkRegeneratePreviewsButton_Click(object sender, EventArgs e)
        {
            List <int> selectedIdList = GetSelectedAssetIdList();

            if (selectedIdList.Count == 0)
            {
                MessageLabel1.SetErrorMessage("No assets selected");
                return;
            }

            // Get the assets that we need to reprocess
            AssetFinder finder = new AssetFinder();

            finder.AssetIdList.Add(0);
            finder.AssetIdList.AddRange(selectedIdList);
            List <Asset> selectedAssets = Asset.FindMany(finder);

            if (selectedAssets.Count == 0)
            {
                MessageLabel1.SetErrorMessage("Selected assets no longer exist");
                return;
            }

            // Initialise error list for problems that might occur as assets are processed
            ErrorList errors = new ErrorList();

            // Counters
            int successCount = 0;
            int failCount    = 0;

            foreach (Asset asset in selectedAssets)
            {
                m_Logger.DebugFormat("Re-processing asset ID = {0}", asset.AssetId);

                AssetFileInfo afi = new AssetFileInfo(asset);

                if (!afi.FileExists)
                {
                    errors.Add(string.Format("Asset file for asset with ID {0} is missing or unavailable", asset.AssetId));
                    m_Logger.Warn("Asset file does not exist.  Cannot reprocess");
                    continue;
                }

                try
                {
                    if (APSGateway.Instance.ProcessFile(asset, false, FileOutputs.All))
                    {
                        asset.IsProcessed = false;
                        Asset.Update(asset);
                        successCount++;

                        m_Logger.DebugFormat("Asset {0} resubmitted for processing successfully", asset.AssetId);
                    }
                    else
                    {
                        failCount++;
                        errors.Add(string.Format("#{0} : An error occured when submitting the asset to the processing service", asset.AssetId));
                        m_Logger.DebugFormat("Asset {0} not submitted to the processing service. An error occurred.", asset.AssetId);
                    }
                }
                catch (InvalidAssetException iaex)
                {
                    failCount++;
                    m_Logger.Warn(string.Format("An error occured when processing the asset: {0}", asset.AssetId), iaex);
                    errors.Add(string.Format("#{0}: Error submitting asset for processing: {1}", asset.AssetId, iaex.Message));
                }
                catch (Exception ex)
                {
                    failCount++;
                    m_Logger.Warn(string.Format("An unknown error occured when processing the asset: {0}", asset.AssetId), ex);
                    errors.Add(string.Format("#{0}: Error submitting asset for processing", asset.AssetId));

                    ExceptionHandler.HandleException(ex, "Error bulk regenerating previews");
                }
            }

            m_Logger.DebugFormat("Asset processing result: {0} success, {1} failures, Errors: {2}", successCount, failCount, errors);

            if (successCount == 0)
            {
                MessageLabel1.SetErrorMessage("The selected assets could not be submitted for processing", errors);
                return;
            }

            if (failCount == 0)
            {
                MessageLabel1.SetSuccessMessage("All selected assets were resubmitted for reprocessing successfully");
                return;
            }

            if (successCount > 0 && failCount > 0)
            {
                MessageLabel1.SetErrorMessage("Some of the selected assets could not be resubmitted for processing", errors);
                return;
            }
        }