예제 #1
0
        internal static Element ParseElement(IFhirReader reader, ErrorList errors)
        {
            try
            {
                reader.MoveToContent();

                if( ParserUtils.IsAtFhirElementEndingWith(reader, "Age" ))
                    return AgeParser.ParseAge(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Count" ))
                    return CountParser.ParseCount(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Distance" ))
                    return DistanceParser.ParseDistance(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Duration" ))
                    return DurationParser.ParseDuration(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Money" ))
                    return MoneyParser.ParseMoney(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Address" ))
                    return AddressParser.ParseAddress(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Attachment" ))
                    return AttachmentParser.ParseAttachment(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Choice" ))
                    return ChoiceParser.ParseChoice(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "CodeableConcept" ))
                    return CodeableConceptParser.ParseCodeableConcept(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Coding" ))
                    return CodingParser.ParseCoding(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Contact" ))
                    return ContactParser.ParseContact(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Extension" ))
                    return ExtensionParser.ParseExtension(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "HumanName" ))
                    return HumanNameParser.ParseHumanName(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Identifier" ))
                    return IdentifierParser.ParseIdentifier(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Narrative" ))
                    return NarrativeParser.ParseNarrative(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Period" ))
                    return PeriodParser.ParsePeriod(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Quantity" ))
                    return QuantityParser.ParseQuantity(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Range" ))
                    return RangeParser.ParseRange(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Ratio" ))
                    return RatioParser.ParseRatio(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Resource" ))
                    return ResourceReferenceParser.ParseResourceReference(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "SampledData" ))
                    return SampledDataParser.ParseSampledData(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Schedule" ))
                    return ScheduleParser.ParseSchedule(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Base64Binary" ))
                    return Base64BinaryParser.ParseBase64Binary(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Boolean" ))
                    return FhirBooleanParser.ParseFhirBoolean(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Code" ))
                    return CodeParser.ParseCode(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Date" ))
                    return DateParser.ParseDate(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "DateTime" ))
                    return FhirDateTimeParser.ParseFhirDateTime(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Decimal" ))
                    return FhirDecimalParser.ParseFhirDecimal(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Id" ))
                    return IdParser.ParseId(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Idref" ))
                    return IdRefParser.ParseIdRef(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Instant" ))
                    return InstantParser.ParseInstant(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Integer" ))
                    return IntegerParser.ParseInteger(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Oid" ))
                    return OidParser.ParseOid(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "String" ))
                    return FhirStringParser.ParseFhirString(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Uri" ))
                    return FhirUriParser.ParseFhirUri(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Uuid" ))
                    return UuidParser.ParseUuid(reader, errors);
                else if( ParserUtils.IsAtFhirElementEndingWith(reader, "Xhtml" ))
                    return XHtmlParser.ParseXHtml(reader, errors);
                else
                {
                    errors.Add(String.Format("Encountered unrecognized datatype '{0}'",	reader.CurrentElementName), reader);
                    reader.SkipSubElementsFor(reader.CurrentElementName);
                    return null;
                }
            }
            catch( Exception xe )
            {
                errors.Add( xe.Message, reader);
                return null;
            }
        }
예제 #2
0
        internal static Resource ParseResource(IFhirReader reader, ErrorList errors)
        {
            try
            {
                reader.MoveToContent();

                if (ParserUtils.IsAtFhirElement(reader, "AdverseReaction"))
                {
                    return(AdverseReactionParser.ParseAdverseReaction(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Alert"))
                {
                    return(AlertParser.ParseAlert(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "AllergyIntolerance"))
                {
                    return(AllergyIntoleranceParser.ParseAllergyIntolerance(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "CarePlan"))
                {
                    return(CarePlanParser.ParseCarePlan(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Condition"))
                {
                    return(ConditionParser.ParseCondition(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Conformance"))
                {
                    return(ConformanceParser.ParseConformance(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Coverage"))
                {
                    return(CoverageParser.ParseCoverage(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Device"))
                {
                    return(DeviceParser.ParseDevice(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DeviceCapabilities"))
                {
                    return(DeviceCapabilitiesParser.ParseDeviceCapabilities(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DeviceLog"))
                {
                    return(DeviceLogParser.ParseDeviceLog(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DeviceObservation"))
                {
                    return(DeviceObservationParser.ParseDeviceObservation(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DiagnosticOrder"))
                {
                    return(DiagnosticOrderParser.ParseDiagnosticOrder(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DiagnosticReport"))
                {
                    return(DiagnosticReportParser.ParseDiagnosticReport(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Document"))
                {
                    return(DocumentParser.ParseDocument(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "DocumentReference"))
                {
                    return(DocumentReferenceParser.ParseDocumentReference(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Encounter"))
                {
                    return(EncounterParser.ParseEncounter(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "FamilyHistory"))
                {
                    return(FamilyHistoryParser.ParseFamilyHistory(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Group"))
                {
                    return(GroupParser.ParseGroup(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "ImagingStudy"))
                {
                    return(ImagingStudyParser.ParseImagingStudy(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Immunization"))
                {
                    return(ImmunizationParser.ParseImmunization(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "ImmunizationProfile"))
                {
                    return(ImmunizationProfileParser.ParseImmunizationProfile(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "List"))
                {
                    return(ListParser.ParseList(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Location"))
                {
                    return(LocationParser.ParseLocation(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Media"))
                {
                    return(MediaParser.ParseMedia(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Medication"))
                {
                    return(MedicationParser.ParseMedication(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "MedicationAdministration"))
                {
                    return(MedicationAdministrationParser.ParseMedicationAdministration(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "MedicationDispense"))
                {
                    return(MedicationDispenseParser.ParseMedicationDispense(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "MedicationPrescription"))
                {
                    return(MedicationPrescriptionParser.ParseMedicationPrescription(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "MedicationStatement"))
                {
                    return(MedicationStatementParser.ParseMedicationStatement(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Message"))
                {
                    return(MessageParser.ParseMessage(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Observation"))
                {
                    return(ObservationParser.ParseObservation(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "OperationOutcome"))
                {
                    return(OperationOutcomeParser.ParseOperationOutcome(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Order"))
                {
                    return(OrderParser.ParseOrder(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "OrderResponse"))
                {
                    return(OrderResponseParser.ParseOrderResponse(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Organization"))
                {
                    return(OrganizationParser.ParseOrganization(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Other"))
                {
                    return(OtherParser.ParseOther(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Patient"))
                {
                    return(PatientParser.ParsePatient(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Practitioner"))
                {
                    return(PractitionerParser.ParsePractitioner(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Procedure"))
                {
                    return(ProcedureParser.ParseProcedure(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Profile"))
                {
                    return(ProfileParser.ParseProfile(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Provenance"))
                {
                    return(ProvenanceParser.ParseProvenance(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Query"))
                {
                    return(QueryParser.ParseQuery(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Questionnaire"))
                {
                    return(QuestionnaireParser.ParseQuestionnaire(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "RelatedPerson"))
                {
                    return(RelatedPersonParser.ParseRelatedPerson(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "SecurityEvent"))
                {
                    return(SecurityEventParser.ParseSecurityEvent(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Specimen"))
                {
                    return(SpecimenParser.ParseSpecimen(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Substance"))
                {
                    return(SubstanceParser.ParseSubstance(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Supply"))
                {
                    return(SupplyParser.ParseSupply(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "ValueSet"))
                {
                    return(ValueSetParser.ParseValueSet(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Binary"))
                {
                    return(BinaryParser.ParseBinary(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "Appointment"))
                {
                    return(AppointmentParser.ParseAppointment(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElement(reader, "InterestOfCare"))
                {
                    return(InterestOfCareParser.ParseInterestOfCare(reader, errors));
                }
                else
                {
                    errors.Add(String.Format("Encountered unrecognized resource '{0}'", reader.CurrentElementName), reader);
                    reader.SkipSubElementsFor(reader.CurrentElementName);
                    return(null);
                }
            }
            catch (Exception xe)
            {
                errors.Add(xe.Message, reader);
                return(null);
            }
        }
예제 #3
0
        internal static Resource ParseResource(IFhirReader reader, ErrorList errors)
        {
            try
            {
                reader.MoveToContent();

                if( ParserUtils.IsAtFhirElement(reader, "AdverseReaction" ) )
                    return AdverseReactionParser.ParseAdverseReaction(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Alert" ) )
                    return AlertParser.ParseAlert(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "AllergyIntolerance" ) )
                    return AllergyIntoleranceParser.ParseAllergyIntolerance(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "CarePlan" ) )
                    return CarePlanParser.ParseCarePlan(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Condition" ) )
                    return ConditionParser.ParseCondition(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Conformance" ) )
                    return ConformanceParser.ParseConformance(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Coverage" ) )
                    return CoverageParser.ParseCoverage(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Device" ) )
                    return DeviceParser.ParseDevice(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DeviceCapabilities" ) )
                    return DeviceCapabilitiesParser.ParseDeviceCapabilities(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DeviceLog" ) )
                    return DeviceLogParser.ParseDeviceLog(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DeviceObservation" ) )
                    return DeviceObservationParser.ParseDeviceObservation(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DiagnosticOrder" ) )
                    return DiagnosticOrderParser.ParseDiagnosticOrder(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DiagnosticReport" ) )
                    return DiagnosticReportParser.ParseDiagnosticReport(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Document" ) )
                    return DocumentParser.ParseDocument(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "DocumentReference" ) )
                    return DocumentReferenceParser.ParseDocumentReference(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Encounter" ) )
                    return EncounterParser.ParseEncounter(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "FamilyHistory" ) )
                    return FamilyHistoryParser.ParseFamilyHistory(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Group" ) )
                    return GroupParser.ParseGroup(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "ImagingStudy" ) )
                    return ImagingStudyParser.ParseImagingStudy(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Immunization" ) )
                    return ImmunizationParser.ParseImmunization(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "ImmunizationProfile" ) )
                    return ImmunizationProfileParser.ParseImmunizationProfile(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "List" ) )
                    return ListParser.ParseList(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Location" ) )
                    return LocationParser.ParseLocation(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Media" ) )
                    return MediaParser.ParseMedia(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Medication" ) )
                    return MedicationParser.ParseMedication(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "MedicationAdministration" ) )
                    return MedicationAdministrationParser.ParseMedicationAdministration(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "MedicationDispense" ) )
                    return MedicationDispenseParser.ParseMedicationDispense(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "MedicationPrescription" ) )
                    return MedicationPrescriptionParser.ParseMedicationPrescription(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "MedicationStatement" ) )
                    return MedicationStatementParser.ParseMedicationStatement(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Message" ) )
                    return MessageParser.ParseMessage(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Observation" ) )
                    return ObservationParser.ParseObservation(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "OperationOutcome" ) )
                    return OperationOutcomeParser.ParseOperationOutcome(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Order" ) )
                    return OrderParser.ParseOrder(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "OrderResponse" ) )
                    return OrderResponseParser.ParseOrderResponse(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Organization" ) )
                    return OrganizationParser.ParseOrganization(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Other" ) )
                    return OtherParser.ParseOther(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Patient" ) )
                    return PatientParser.ParsePatient(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Practitioner" ) )
                    return PractitionerParser.ParsePractitioner(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Procedure" ) )
                    return ProcedureParser.ParseProcedure(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Profile" ) )
                    return ProfileParser.ParseProfile(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Provenance" ) )
                    return ProvenanceParser.ParseProvenance(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Query" ) )
                    return QueryParser.ParseQuery(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Questionnaire" ) )
                    return QuestionnaireParser.ParseQuestionnaire(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "RelatedPerson" ) )
                    return RelatedPersonParser.ParseRelatedPerson(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "SecurityEvent" ) )
                    return SecurityEventParser.ParseSecurityEvent(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Specimen" ) )
                    return SpecimenParser.ParseSpecimen(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Substance" ) )
                    return SubstanceParser.ParseSubstance(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Supply" ) )
                    return SupplyParser.ParseSupply(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "ValueSet" ) )
                    return ValueSetParser.ParseValueSet(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Binary" ) )
                    return BinaryParser.ParseBinary(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "Appointment" ) )
                    return AppointmentParser.ParseAppointment(reader, errors);
                else if( ParserUtils.IsAtFhirElement(reader, "InterestOfCare" ) )
                    return InterestOfCareParser.ParseInterestOfCare(reader, errors);
                else
                {
                    errors.Add(String.Format("Encountered unrecognized resource '{0}'",	reader.CurrentElementName), reader);
                    reader.SkipSubElementsFor(reader.CurrentElementName);
                    return null;
                }
            }
            catch( Exception xe )
            {
                errors.Add( xe.Message, reader);
                return null;
            }
        }
예제 #4
0
        internal static Element ParseElement(IFhirReader reader, ErrorList errors)
        {
            try
            {
                reader.MoveToContent();

                if (ParserUtils.IsAtFhirElementEndingWith(reader, "Age"))
                {
                    return(AgeParser.ParseAge(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Count"))
                {
                    return(CountParser.ParseCount(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Distance"))
                {
                    return(DistanceParser.ParseDistance(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Duration"))
                {
                    return(DurationParser.ParseDuration(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Money"))
                {
                    return(MoneyParser.ParseMoney(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Address"))
                {
                    return(AddressParser.ParseAddress(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Attachment"))
                {
                    return(AttachmentParser.ParseAttachment(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Choice"))
                {
                    return(ChoiceParser.ParseChoice(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "CodeableConcept"))
                {
                    return(CodeableConceptParser.ParseCodeableConcept(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Coding"))
                {
                    return(CodingParser.ParseCoding(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Contact"))
                {
                    return(ContactParser.ParseContact(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Extension"))
                {
                    return(ExtensionParser.ParseExtension(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "HumanName"))
                {
                    return(HumanNameParser.ParseHumanName(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Identifier"))
                {
                    return(IdentifierParser.ParseIdentifier(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Narrative"))
                {
                    return(NarrativeParser.ParseNarrative(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Period"))
                {
                    return(PeriodParser.ParsePeriod(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Quantity"))
                {
                    return(QuantityParser.ParseQuantity(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Range"))
                {
                    return(RangeParser.ParseRange(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Ratio"))
                {
                    return(RatioParser.ParseRatio(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Resource"))
                {
                    return(ResourceReferenceParser.ParseResourceReference(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "SampledData"))
                {
                    return(SampledDataParser.ParseSampledData(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Schedule"))
                {
                    return(ScheduleParser.ParseSchedule(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Base64Binary"))
                {
                    return(Base64BinaryParser.ParseBase64Binary(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Boolean"))
                {
                    return(FhirBooleanParser.ParseFhirBoolean(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Code"))
                {
                    return(CodeParser.ParseCode(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Date"))
                {
                    return(DateParser.ParseDate(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "DateTime"))
                {
                    return(FhirDateTimeParser.ParseFhirDateTime(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Decimal"))
                {
                    return(FhirDecimalParser.ParseFhirDecimal(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Id"))
                {
                    return(IdParser.ParseId(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Idref"))
                {
                    return(IdRefParser.ParseIdRef(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Instant"))
                {
                    return(InstantParser.ParseInstant(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Integer"))
                {
                    return(IntegerParser.ParseInteger(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Oid"))
                {
                    return(OidParser.ParseOid(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "String"))
                {
                    return(FhirStringParser.ParseFhirString(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Uri"))
                {
                    return(FhirUriParser.ParseFhirUri(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Uuid"))
                {
                    return(UuidParser.ParseUuid(reader, errors));
                }
                else if (ParserUtils.IsAtFhirElementEndingWith(reader, "Xhtml"))
                {
                    return(XHtmlParser.ParseXHtml(reader, errors));
                }
                else
                {
                    errors.Add(String.Format("Encountered unrecognized datatype '{0}'", reader.CurrentElementName), reader);
                    reader.SkipSubElementsFor(reader.CurrentElementName);
                    return(null);
                }
            }
            catch (Exception xe)
            {
                errors.Add(xe.Message, reader);
                return(null);
            }
        }