Module: FHIR::Hashable
- Included in:
- Account, ActivityDefinition, ActivityDefinition::DynamicValue, Address, Age, AllergyIntolerance, AllergyIntolerance::Reaction, Annotation, Appointment, Appointment::Participant, AppointmentResponse, Attachment, AuditEvent, AuditEvent::Agent, AuditEvent::Agent::Network, AuditEvent::Entity, AuditEvent::Entity::Detail, AuditEvent::Source, BackboneElement, Basic, Binary, BodySite, Boot::Template, Bundle, Bundle::Entry, Bundle::Entry::Request, Bundle::Entry::Response, Bundle::Entry::Search, Bundle::Link, CarePlan, CarePlan::Activity, CarePlan::Activity::Detail, CarePlan::RelatedPlan, CareTeam, CareTeam::Participant, Claim, Claim::Accident, Claim::Coverage, Claim::Diagnosis, Claim::Information, Claim::Item, Claim::Item::CareTeam, Claim::Item::Detail, Claim::Item::Detail::SubDetail, Claim::Item::Prosthesis, Claim::MissingTeeth, Claim::Payee, Claim::Procedure, Claim::Related, ClaimResponse, ClaimResponse::AddItem, ClaimResponse::AddItem::Detail, ClaimResponse::Coverage, ClaimResponse::Error, ClaimResponse::Item, ClaimResponse::Item::Adjudication, ClaimResponse::Item::Detail, ClaimResponse::Item::Detail::SubDetail, ClaimResponse::Note, ClaimResponse::Payment, ClinicalImpression, ClinicalImpression::Finding, ClinicalImpression::Investigations, CodeSystem, CodeSystem::Concept, CodeSystem::Concept::Designation, CodeSystem::Concept::Property, CodeSystem::Contact, CodeSystem::Filter, CodeSystem::Property, CodeableConcept, Coding, Communication, Communication::Payload, CommunicationRequest, CommunicationRequest::Payload, CompartmentDefinition, CompartmentDefinition::Contact, CompartmentDefinition::Resource, Composition, Composition::Attester, Composition::Event, Composition::Section, ConceptMap, ConceptMap::Contact, ConceptMap::Group, ConceptMap::Group::Element, ConceptMap::Group::Element::Target, ConceptMap::Group::Element::Target::DependsOn, Condition, Condition::Evidence, Condition::Stage, Conformance, Conformance::Contact, Conformance::Document, Conformance::Implementation, Conformance::Messaging, Conformance::Messaging::Endpoint, Conformance::Messaging::Event, Conformance::Rest, Conformance::Rest::Interaction, Conformance::Rest::Operation, Conformance::Rest::Resource, Conformance::Rest::Resource::Interaction, Conformance::Rest::Resource::SearchParam, Conformance::Rest::Security, Conformance::Rest::Security::Certificate, Conformance::Software, Consent, Consent::Except, Consent::Except::Actor, Consent::Except::Data, ContactDetail, ContactPoint, Contract, Contract::Agent, Contract::Friendly, Contract::Legal, Contract::Rule, Contract::Signer, Contract::Term, Contract::Term::Agent, Contract::Term::ValuedItem, Contract::ValuedItem, Contributor, Count, Coverage, DataElement, DataElement::Contact, DataElement::Mapping, DataRequirement, DataRequirement::CodeFilter, DataRequirement::DateFilter, DecisionSupportServiceModule, DetectedIssue, DetectedIssue::Mitigation, Device, DeviceComponent, DeviceComponent::ProductionSpecification, DeviceMetric, DeviceMetric::Calibration, DeviceUseRequest, DeviceUseStatement, DiagnosticReport, DiagnosticReport::Image, DiagnosticRequest, Distance, DocumentManifest, DocumentManifest::Content, DocumentManifest::Related, DocumentReference, DocumentReference::Content, DocumentReference::Context, DocumentReference::Context::Related, DocumentReference::RelatesTo, DomainResource, Duration, Element, ElementDefinition, ElementDefinition::Base, ElementDefinition::Binding, ElementDefinition::Constraint, ElementDefinition::Mapping, ElementDefinition::Slicing, ElementDefinition::Type, EligibilityRequest, EligibilityResponse, EligibilityResponse::BenefitBalance, EligibilityResponse::BenefitBalance::Financial, EligibilityResponse::Error, Encounter, Encounter::Hospitalization, Encounter::Location, Encounter::Participant, Encounter::StatusHistory, Endpoint, EnrollmentRequest, EnrollmentResponse, EpisodeOfCare, EpisodeOfCare::StatusHistory, ExpansionProfile, ExpansionProfile::CodeSystem, ExpansionProfile::CodeSystem::Exclude, ExpansionProfile::CodeSystem::Exclude::CodeSystem, ExpansionProfile::CodeSystem::Include, ExpansionProfile::CodeSystem::Include::CodeSystem, ExpansionProfile::Contact, ExpansionProfile::Designation, ExpansionProfile::Designation::Exclude, ExpansionProfile::Designation::Exclude::Designation, ExpansionProfile::Designation::Include, ExpansionProfile::Designation::Include::Designation, ExplanationOfBenefit, ExplanationOfBenefit::Accident, ExplanationOfBenefit::AddItem, ExplanationOfBenefit::AddItem::Detail, ExplanationOfBenefit::BenefitBalance, ExplanationOfBenefit::BenefitBalance::Financial, ExplanationOfBenefit::Coverage, ExplanationOfBenefit::Diagnosis, ExplanationOfBenefit::Information, ExplanationOfBenefit::Item, ExplanationOfBenefit::Item::Adjudication, ExplanationOfBenefit::Item::CareTeam, ExplanationOfBenefit::Item::Detail, ExplanationOfBenefit::Item::Detail::SubDetail, ExplanationOfBenefit::Item::Prosthesis, ExplanationOfBenefit::MissingTeeth, ExplanationOfBenefit::Note, ExplanationOfBenefit::Payee, ExplanationOfBenefit::Payment, ExplanationOfBenefit::Procedure, ExplanationOfBenefit::Related, Extension, FamilyMemberHistory, FamilyMemberHistory::Condition, Flag, Goal, Goal::Outcome, Group, Group::Characteristic, Group::Member, GuidanceResponse, GuidanceResponse::Action, GuidanceResponse::Action::RelatedAction, HealthcareService, FHIR::HealthcareService::AvailableTime, FHIR::HealthcareService::NotAvailable, HumanName, Identifier, ImagingManifest, ImagingManifest::Study, ImagingManifest::Study::BaseLocation, ImagingManifest::Study::Series, ImagingManifest::Study::Series::BaseLocation, ImagingManifest::Study::Series::Instance, ImagingStudy, ImagingStudy::BaseLocation, ImagingStudy::Series, ImagingStudy::Series::BaseLocation, ImagingStudy::Series::Instance, Immunization, Immunization::Explanation, Immunization::Reaction, Immunization::VaccinationProtocol, ImmunizationRecommendation, ImmunizationRecommendation::Recommendation, ImmunizationRecommendation::Recommendation::DateCriterion, ImmunizationRecommendation::Recommendation::Protocol, ImplementationGuide, ImplementationGuide::Contact, ImplementationGuide::Dependency, ImplementationGuide::Global, ImplementationGuide::Package, ImplementationGuide::Package::Resource, ImplementationGuide::Page, Library, Linkage, Linkage::Item, List, List::Entry, Location, Location::Position, Measure, Measure::Group, Measure::Group::Population, Measure::Group::Stratifier, Measure::SupplementalData, MeasureReport, MeasureReport::Group, MeasureReport::Group::Population, MeasureReport::Group::Stratifier, MeasureReport::Group::Stratifier::Group, MeasureReport::Group::Stratifier::Group::Population, MeasureReport::Group::SupplementalData, MeasureReport::Group::SupplementalData::Group, Media, Medication, Medication::Package, Medication::Package::Content, Medication::Product, Medication::Product::Batch, Medication::Product::Ingredient, MedicationAdministration, MedicationAdministration::Dosage, MedicationAdministration::EventHistory, MedicationDispense, MedicationDispense::DosageInstruction, MedicationDispense::EventHistory, MedicationDispense::Substitution, MedicationOrder, MedicationOrder::DispenseRequest, MedicationOrder::DosageInstruction, MedicationOrder::EventHistory, MedicationOrder::Substitution, MedicationStatement, MedicationStatement::Dosage, MessageHeader, MessageHeader::Destination, MessageHeader::Response, MessageHeader::Source, Meta, Money, NamingSystem, NamingSystem::Contact, NamingSystem::UniqueId, Narrative, NutritionRequest, NutritionRequest::EnteralFormula, NutritionRequest::EnteralFormula::Administration, NutritionRequest::OralDiet, NutritionRequest::OralDiet::Nutrient, NutritionRequest::OralDiet::Texture, NutritionRequest::Supplement, Observation, Observation::Component, Observation::ReferenceRange, Observation::Related, OperationDefinition, OperationDefinition::Contact, OperationDefinition::Parameter, OperationDefinition::Parameter::Binding, OperationOutcome, OperationOutcome::Issue, Organization, Organization::Contact, ParameterDefinition, Parameters, Parameters::Parameter, Patient, Patient::Animal, Patient::Communication, Patient::Contact, Patient::Link, PaymentNotice, PaymentReconciliation, PaymentReconciliation::Detail, PaymentReconciliation::Note, Period, Person, Person::Link, PlanDefinition, PlanDefinition::ActionDefinition, PlanDefinition::ActionDefinition::Condition, PlanDefinition::ActionDefinition::DynamicValue, PlanDefinition::ActionDefinition::RelatedAction, Practitioner, Practitioner::Qualification, Practitioner::Role, PractitionerRole, PractitionerRole::AvailableTime, PractitionerRole::NotAvailable, Procedure, Procedure::FocalDevice, Procedure::Performer, ProcedureRequest, ProcessRequest, ProcessRequest::Item, ProcessResponse, ProcessResponse::Notes, Provenance, Provenance::Agent, Provenance::Agent::RelatedAgent, Provenance::Entity, Quantity, Questionnaire, Questionnaire::Item, Questionnaire::Item::EnableWhen, Questionnaire::Item::Option, QuestionnaireResponse, QuestionnaireResponse::Item, QuestionnaireResponse::Item::Answer, Range, Ratio, Reference, ReferralRequest, RelatedPerson, RelatedResource, Resource, RiskAssessment, RiskAssessment::Prediction, SampledData, Schedule, SearchParameter, SearchParameter::Contact, Sequence, Sequence::Quality, Sequence::ReferenceSeq, Sequence::Repository, Sequence::StructureVariant, Sequence::StructureVariant::Inner, Sequence::StructureVariant::Outer, Sequence::Variant, Signature, Slot, Specimen, Specimen::Collection, Specimen::Container, Specimen::Treatment, StructureDefinition, StructureDefinition::Contact, StructureDefinition::Differential, StructureDefinition::Mapping, StructureDefinition::Snapshot, StructureMap, StructureMap::Contact, StructureMap::Group, StructureMap::Group::Input, StructureMap::Group::Rule, StructureMap::Group::Rule::Dependent, StructureMap::Group::Rule::Source, StructureMap::Group::Rule::Target, StructureMap::Group::Rule::Target::Parameter, StructureMap::Structure, Subscription, Subscription::Channel, Substance, Substance::Ingredient, Substance::Instance, SupplyDelivery, SupplyRequest, SupplyRequest::When, Task, Task::Fulfillment, Task::Input, Task::Output, TestScript, TestScript::Contact, TestScript::Destination, TestScript::Fixture, TestScript::Metadata, TestScript::Metadata::Capability, TestScript::Metadata::Link, TestScript::Origin, TestScript::Rule, TestScript::Rule::Param, TestScript::Ruleset, TestScript::Ruleset::Rule, TestScript::Ruleset::Rule::Param, TestScript::Setup, TestScript::Setup::Action, TestScript::Setup::Action::Assert, TestScript::Setup::Action::Assert::Rule, TestScript::Setup::Action::Assert::Rule::Param, TestScript::Setup::Action::Assert::Ruleset, TestScript::Setup::Action::Assert::Ruleset::Rule, TestScript::Setup::Action::Assert::Ruleset::Rule::Param, TestScript::Setup::Action::Operation, TestScript::Setup::Action::Operation::RequestHeader, TestScript::Teardown, TestScript::Teardown::Action, TestScript::Test, TestScript::Test::Action, TestScript::Variable, Timing, Timing::Repeat, TriggerDefinition, UsageContext, ValueSet, ValueSet::Compose, ValueSet::Compose::Include, ValueSet::Compose::Include::Concept, ValueSet::Compose::Include::Concept::Designation, ValueSet::Compose::Include::Filter, ValueSet::Contact, ValueSet::Expansion, ValueSet::Expansion::Contains, ValueSet::Expansion::Parameter, VisionPrescription, VisionPrescription::Dispense
- Defined in:
- lib/bootstrap/hashable.rb
Instance Method Summary collapse
Instance Method Details
#from_hash(hash) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/bootstrap/hashable.rb', line 29 def from_hash(hash) # clear the existing variables self.class::METADATA.each do |key,value| local_name = key local_name = value['local_name'] if value['local_name'] self.instance_variable_set("@#{local_name}",nil) end # set the variables to the hash values hash.each do |key,value| key = key.to_s = self.class::METADATA[key] if !.nil? local_name = key local_name = ['local_name'] if ['local_name'] self.instance_variable_set("@#{local_name}",value) rescue nil # inflate the value if it isn't a primitive klass = Module.const_get("FHIR::#{['type']}") rescue nil if !klass.nil? && !value.nil? # handle array of objects if value.is_a?(Array) value.map! do |child| obj = child unless [FHIR::RESOURCES, FHIR::TYPES].flatten.include? child.class.name.gsub('FHIR::','') if child['resourceType'] klass = Module.const_get("FHIR::#{child['resourceType']}") rescue nil end begin obj = klass.new(child) rescue Exception => e FHIR.logger.error("Unable to inflate embedded class #{klass}\n#{e.backtrace}") end end obj end else # handle single object if value['resourceType'] klass = Module.const_get("FHIR::#{value['resourceType']}") rescue nil end begin obj = klass.new(value) value = obj rescue Exception => e FHIR.logger.error("Unable to inflate embedded class #{klass}\n#{e.backtrace}") end # if there is only one of these, but cardinality allows more, we need to wrap it in an array. value = [ value ] if(value && (['max'] > 1)) end self.instance_variable_set("@#{local_name}",value) elsif !FHIR::PRIMITIVES.include?(['type']) && ['type']!='xhtml' FHIR.logger.error("Unhandled and unrecognized class/type: #{['type']}") else # primitive if value.is_a?(Array) # array of primitives value.map!{|child| convert_primitive(child,)} self.instance_variable_set("@#{local_name}",value) else # single primitive value = convert_primitive(value,) # if there is only one of these, but cardinality allows more, we need to wrap it in an array. value = [ value ] if(value && (['max'] > 1)) self.instance_variable_set("@#{local_name}",value) end end # !klass && !nil? end # !meta.nil? end # hash loop self end |
#to_hash ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/bootstrap/hashable.rb', line 4 def to_hash hash = Hash.new self.class::METADATA.each do |key,value| local_name = key local_name = value['local_name'] if value['local_name'] hash[key] = self.instance_variable_get("@#{local_name}") if hash[key].respond_to?(:to_hash) hash[key] = hash[key].to_hash elsif hash[key].is_a? Array hash[key] = Array.new(hash[key]) # copy the array hash[key].each_with_index do |item,index| hash[key][index] = item.to_hash if item.respond_to?(:to_hash) end end end hash.keep_if do |key,value| !value.nil? && ( (value.is_a?(Hash) && !value.empty?) || (value.is_a?(Array) && !value.empty?) || (!value.is_a?(Hash) && !value.is_a?(Array)) ) end hash['resourceType'] = self.resourceType if self.respond_to?(:resourceType) hash end |