vericred_client 0.0.23 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +826 -28
- data/docs/ACAPlan.md +35 -35
- data/docs/ACAPlan2018.md +36 -36
- data/docs/ACAPlan2018SearchResponse.md +1 -1
- data/docs/ACAPlan2018SearchResult.md +39 -39
- data/docs/ACAPlanPre2018.md +35 -35
- data/docs/ACAPlanPre2018SearchResponse.md +1 -1
- data/docs/ACAPlanPre2018SearchResult.md +38 -38
- data/docs/Address.md +14 -0
- data/docs/AncillaryPlanIdentifier.md +9 -0
- data/docs/BasePlanSearchResponse.md +1 -1
- data/docs/CarrierGroupRequest.md +1 -1
- data/docs/CarrierRequest.md +2 -2
- data/docs/CarrierSubsidiary.md +2 -2
- data/docs/CarrierVerificationDentalPlansApi.md +63 -0
- data/docs/CarrierVerificationMedicalPlansApi.md +63 -0
- data/docs/CarrierVerificationVisionPlansApi.md +63 -0
- data/docs/County.md +1 -1
- data/docs/CountyBulk.md +1 -1
- data/docs/DentalPlan.md +7 -7
- data/docs/DentalPlanBenefits.md +22 -22
- data/docs/DentalPlanSearchRequest.md +1 -2
- data/docs/DentalPlanUpdate.md +5 -5
- data/docs/DentalPlansApi.md +118 -4
- data/docs/DependentCreate.md +12 -0
- data/docs/DependentCreateRequest.md +12 -0
- data/docs/DependentShow.md +12 -0
- data/docs/Drug.md +3 -3
- data/docs/DrugCoverage.md +3 -3
- data/docs/DrugCoverageResponse.md +2 -2
- data/docs/DrugPackage.md +1 -1
- data/docs/DrugSearchResponse.md +2 -2
- data/docs/EmbargoRequest.md +3 -2
- data/docs/FormularyResponse.md +1 -1
- data/docs/GroupCreate.md +14 -0
- data/docs/GroupCreateRequest.md +9 -0
- data/docs/GroupCreateResponse.md +9 -0
- data/docs/GroupShow.md +15 -0
- data/docs/GroupShowResponse.md +9 -0
- data/docs/GroupUpdate.md +14 -0
- data/docs/GroupUpdateRequest.md +9 -0
- data/docs/IssuerRequest.md +7 -7
- data/docs/LocationCreate.md +13 -0
- data/docs/LocationShow.md +14 -0
- data/docs/LocationUpdate.md +14 -0
- data/docs/MajorMedicalPlansApi.md +122 -0
- data/docs/MedicalPlanBenefits.md +35 -35
- data/docs/MedicalPlanUpdate.md +21 -20
- data/docs/MedicalPlansApi.md +0 -114
- data/docs/MedicareAdvantagePlan.md +25 -0
- data/docs/MedicareAdvantagePlanBenefits.md +148 -0
- data/docs/MedicareAdvantagePlanSearchRequest.md +12 -0
- data/docs/MedicareAdvantagePlanSearchResponse.md +9 -0
- data/docs/MedicareAdvantagePlanShowResponse.md +8 -0
- data/docs/MemberCreate.md +17 -0
- data/docs/MemberRateShow.md +13 -0
- data/docs/MemberRateShowRequest.md +10 -0
- data/docs/MemberRatesShowResponse.md +9 -0
- data/docs/MemberShow.md +18 -0
- data/docs/MembersCreateRequest.md +9 -0
- data/docs/MembersCreateResponse.md +8 -0
- data/docs/MembersShowResponse.md +8 -0
- data/docs/MetaPlanSearchResponse.md +1 -1
- data/docs/NetworkComparisonResponse.md +1 -1
- data/docs/NetworkDetails.md +1 -1
- data/docs/NetworkSize.md +1 -1
- data/docs/NetworksApi.md +17 -12
- data/docs/PlanCounty.md +1 -1
- data/docs/PlanCountyBulk.md +1 -1
- data/docs/PlanMedicare.md +1 -1
- data/docs/PlanMedicareBulk.md +2 -2
- data/docs/PlanPricingMedicare.md +3 -3
- data/docs/PlanSearchResponse.md +1 -1
- data/docs/PlansApi.md +0 -169
- data/docs/PlansBulkACA2018.md +8 -0
- data/docs/PlansBulkACAPre2018.md +8 -0
- data/docs/PlansBulkBase.md +7 -0
- data/docs/PlansBulkDental.md +7 -0
- data/docs/PlansBulkVision.md +7 -0
- data/docs/Provider.md +2 -2
- data/docs/ProviderDetails.md +5 -3
- data/docs/ProviderNetworkEventNotification.md +3 -3
- data/docs/ProviderNetworks.md +11 -0
- data/docs/ProviderShowResponse.md +1 -1
- data/docs/ProvidersApi.md +1 -56
- data/docs/QuoteCreate.md +15 -0
- data/docs/QuoteCreateRequest.md +8 -0
- data/docs/QuoteCreateResponse.md +8 -0
- data/docs/QuoteShow.md +17 -0
- data/docs/QuoteShowResponse.md +8 -0
- data/docs/QuotingApi.md +344 -0
- data/docs/RateRequest.md +24 -24
- data/docs/RateSearch.md +23 -18
- data/docs/RateShow.md +12 -0
- data/docs/RateShowRequest.md +10 -0
- data/docs/RatesShowResponse.md +9 -0
- data/docs/RequestPlanFind.md +2 -2
- data/docs/RequestPlanFindCarrierVerification.md +3 -3
- data/docs/RequestProviderNotificationSubscription.md +1 -1
- data/docs/RequestProvidersSearch.md +1 -1
- data/docs/RequestRatesSearch.md +1 -1
- data/docs/RxCuiIdentifier.md +1 -1
- data/docs/RxCuiIdentifierSearchResponse.md +1 -1
- data/docs/State.md +2 -2
- data/docs/SupplementalOptions.md +13 -0
- data/docs/V7Network.md +10 -0
- data/docs/V7NetworkComparisonResponse.md +9 -0
- data/docs/V7NetworkDetails.md +11 -0
- data/docs/V7NetworkDetailsResponse.md +8 -0
- data/docs/V7NetworkSearchResponse.md +9 -0
- data/docs/V7ProviderDetails.md +33 -0
- data/docs/V7ProviderNetworks.md +12 -0
- data/docs/VisionPlan.md +7 -7
- data/docs/VisionPlanBenefits.md +22 -15
- data/docs/VisionPlanSearchRequest.md +1 -2
- data/docs/VisionPlanUpdate.md +5 -5
- data/docs/VisionPlansApi.md +114 -0
- data/docs/ZipCountiesResponse.md +1 -1
- data/docs/ZipCountyBulk.md +1 -1
- data/lib/vericred_client/api/carrier_groups_api.rb +754 -15
- data/lib/vericred_client/api/carrier_verification_dental_plans_api.rb +1026 -0
- data/lib/vericred_client/api/carrier_verification_medical_plans_api.rb +1026 -0
- data/lib/vericred_client/api/carrier_verification_plans_api.rb +754 -15
- data/lib/vericred_client/api/carrier_verification_vision_plans_api.rb +1026 -0
- data/lib/vericred_client/api/carriers_api.rb +754 -15
- data/lib/vericred_client/api/dental_plans_api.rb +874 -18
- data/lib/vericred_client/api/drug_coverages_api.rb +754 -15
- data/lib/vericred_client/api/drug_packages_api.rb +754 -15
- data/lib/vericred_client/api/drugs_api.rb +754 -15
- data/lib/vericred_client/api/embargoes_api.rb +754 -15
- data/lib/vericred_client/api/formularies_api.rb +754 -15
- data/lib/vericred_client/api/issuers_api.rb +754 -15
- data/lib/vericred_client/api/major_medical_plans_api.rb +1086 -0
- data/lib/vericred_client/api/medical_plans_api.rb +754 -132
- data/lib/vericred_client/api/network_sizes_api.rb +754 -15
- data/lib/vericred_client/api/networks_api.rb +773 -27
- data/lib/vericred_client/api/plans_api.rb +754 -189
- data/lib/vericred_client/api/provider_notification_subscriptions_api.rb +754 -15
- data/lib/vericred_client/api/providers_api.rb +756 -74
- data/lib/vericred_client/api/quoting_api.rb +1316 -0
- data/lib/vericred_client/api/rates_api.rb +754 -15
- data/lib/vericred_client/api/vision_plans_api.rb +871 -15
- data/lib/vericred_client/api/zip_counties_api.rb +754 -15
- data/lib/vericred_client/api_client.rb +754 -15
- data/lib/vericred_client/api_error.rb +754 -15
- data/lib/vericred_client/configuration.rb +754 -15
- data/lib/vericred_client/models/aca_plan.rb +1165 -426
- data/lib/vericred_client/models/aca_plan2018.rb +1174 -435
- data/lib/vericred_client/models/aca_plan2018_search_response.rb +765 -26
- data/lib/vericred_client/models/aca_plan2018_search_result.rb +1203 -464
- data/lib/vericred_client/models/aca_plan2018_show_response.rb +754 -15
- data/lib/vericred_client/models/aca_plan_pre2018.rb +1165 -426
- data/lib/vericred_client/models/aca_plan_pre2018_search_response.rb +765 -26
- data/lib/vericred_client/models/aca_plan_pre2018_search_result.rb +1202 -463
- data/lib/vericred_client/models/aca_plan_pre2018_show_response.rb +754 -15
- data/lib/vericred_client/models/address.rb +1195 -0
- data/lib/vericred_client/models/ancillary_plan_identifier.rb +1145 -0
- data/lib/vericred_client/models/base.rb +754 -15
- data/lib/vericred_client/models/base_plan_search_response.rb +768 -29
- data/lib/vericred_client/models/carrier.rb +754 -15
- data/lib/vericred_client/models/carrier_group_request.rb +765 -26
- data/lib/vericred_client/models/carrier_request.rb +769 -30
- data/lib/vericred_client/models/carrier_subsidiary.rb +778 -39
- data/lib/vericred_client/models/county.rb +765 -26
- data/lib/vericred_client/models/county_bulk.rb +768 -29
- data/lib/vericred_client/models/dental_plan.rb +825 -86
- data/lib/vericred_client/models/dental_plan_benefits.rb +927 -188
- data/lib/vericred_client/models/dental_plan_search_applicant.rb +754 -15
- data/lib/vericred_client/models/dental_plan_search_request.rb +768 -39
- data/lib/vericred_client/models/dental_plan_search_response.rb +754 -15
- data/lib/vericred_client/models/dental_plan_show_response.rb +754 -15
- data/lib/vericred_client/models/dental_plan_update.rb +804 -65
- data/lib/vericred_client/models/dental_plan_update_request.rb +754 -15
- data/lib/vericred_client/models/dependent_create.rb +1175 -0
- data/lib/vericred_client/models/dependent_create_request.rb +1175 -0
- data/lib/vericred_client/models/dependent_show.rb +1175 -0
- data/lib/vericred_client/models/drug.rb +781 -42
- data/lib/vericred_client/models/drug_coverage.rb +781 -42
- data/lib/vericred_client/models/drug_coverage_response.rb +769 -30
- data/lib/vericred_client/models/drug_package.rb +765 -26
- data/lib/vericred_client/models/drug_search_response.rb +771 -32
- data/lib/vericred_client/models/embargo_request.rb +790 -39
- data/lib/vericred_client/models/formulary.rb +754 -15
- data/lib/vericred_client/models/formulary_drug_package_response.rb +754 -15
- data/lib/vericred_client/models/formulary_response.rb +768 -29
- data/lib/vericred_client/models/group_create.rb +1195 -0
- data/lib/vericred_client/models/group_create_request.rb +1147 -0
- data/lib/vericred_client/models/group_create_response.rb +1147 -0
- data/lib/vericred_client/models/group_show.rb +1205 -0
- data/lib/vericred_client/models/group_show_response.rb +1147 -0
- data/lib/vericred_client/models/group_update.rb +1195 -0
- data/lib/vericred_client/models/group_update_request.rb +1147 -0
- data/lib/vericred_client/models/issuer_request.rb +819 -80
- data/lib/vericred_client/models/location_create.rb +1185 -0
- data/lib/vericred_client/models/location_show.rb +1195 -0
- data/lib/vericred_client/models/location_update.rb +1195 -0
- data/lib/vericred_client/models/medical_plan_benefits.rb +1084 -345
- data/lib/vericred_client/models/medical_plan_update.rb +930 -181
- data/lib/vericred_client/models/medical_plan_update_request.rb +754 -15
- data/lib/vericred_client/models/medicare_advantage_plan.rb +1309 -0
- data/lib/vericred_client/models/medicare_advantage_plan_benefits.rb +2535 -0
- data/lib/vericred_client/models/medicare_advantage_plan_search_request.rb +1175 -0
- data/lib/vericred_client/models/medicare_advantage_plan_search_response.rb +1147 -0
- data/lib/vericred_client/models/medicare_advantage_plan_show_response.rb +1135 -0
- data/lib/vericred_client/models/member_create.rb +1227 -0
- data/lib/vericred_client/models/member_rate_show.rb +1185 -0
- data/lib/vericred_client/models/member_rate_show_request.rb +1155 -0
- data/lib/vericred_client/models/member_rates_show_response.rb +1147 -0
- data/lib/vericred_client/models/member_show.rb +1237 -0
- data/lib/vericred_client/models/members_create_request.rb +1147 -0
- data/lib/vericred_client/models/members_create_response.rb +1137 -0
- data/lib/vericred_client/models/members_show_response.rb +1137 -0
- data/lib/vericred_client/models/meta.rb +754 -15
- data/lib/vericred_client/models/meta_plan_search_response.rb +768 -29
- data/lib/vericred_client/models/network.rb +754 -15
- data/lib/vericred_client/models/network_comparison.rb +754 -15
- data/lib/vericred_client/models/network_comparison_request.rb +754 -15
- data/lib/vericred_client/models/network_comparison_response.rb +770 -31
- data/lib/vericred_client/models/network_details.rb +770 -31
- data/lib/vericred_client/models/network_details_response.rb +754 -15
- data/lib/vericred_client/models/network_search_response.rb +754 -15
- data/lib/vericred_client/models/network_size.rb +765 -26
- data/lib/vericred_client/models/notification_subscription.rb +754 -15
- data/lib/vericred_client/models/notification_subscription_response.rb +754 -15
- data/lib/vericred_client/models/plan.rb +754 -15
- data/lib/vericred_client/models/plan_county.rb +768 -29
- data/lib/vericred_client/models/plan_county_bulk.rb +768 -29
- data/lib/vericred_client/models/plan_deleted.rb +754 -15
- data/lib/vericred_client/models/plan_identifier.rb +754 -15
- data/lib/vericred_client/models/plan_medicare.rb +768 -29
- data/lib/vericred_client/models/plan_medicare_bulk.rb +775 -36
- data/lib/vericred_client/models/plan_pricing_medicare.rb +782 -43
- data/lib/vericred_client/models/plan_search_response.rb +765 -26
- data/lib/vericred_client/models/plan_show_response.rb +754 -15
- data/lib/vericred_client/models/plans_bulk_aca2018.rb +1135 -0
- data/lib/vericred_client/models/plans_bulk_aca_pre2018.rb +1135 -0
- data/lib/vericred_client/models/plans_bulk_base.rb +1125 -0
- data/lib/vericred_client/models/plans_bulk_dental.rb +1125 -0
- data/lib/vericred_client/models/plans_bulk_vision.rb +1125 -0
- data/lib/vericred_client/models/provider.rb +780 -41
- data/lib/vericred_client/models/provider_details.rb +813 -50
- data/lib/vericred_client/models/provider_geocode.rb +754 -15
- data/lib/vericred_client/models/provider_network_event_notification.rb +790 -51
- data/lib/vericred_client/models/provider_networks.rb +1165 -0
- data/lib/vericred_client/models/provider_show_response.rb +755 -16
- data/lib/vericred_client/models/providers_geocode_response.rb +754 -15
- data/lib/vericred_client/models/providers_search_response.rb +754 -15
- data/lib/vericred_client/models/quote_create.rb +1207 -0
- data/lib/vericred_client/models/quote_create_request.rb +1135 -0
- data/lib/vericred_client/models/quote_create_response.rb +1135 -0
- data/lib/vericred_client/models/quote_show.rb +1227 -0
- data/lib/vericred_client/models/quote_show_response.rb +1135 -0
- data/lib/vericred_client/models/rate_request.rb +990 -251
- data/lib/vericred_client/models/rate_search.rb +978 -189
- data/lib/vericred_client/models/rate_show.rb +1175 -0
- data/lib/vericred_client/models/rate_show_request.rb +1155 -0
- data/lib/vericred_client/models/rates_show_response.rb +1147 -0
- data/lib/vericred_client/models/rating_area.rb +754 -15
- data/lib/vericred_client/models/request_plan_find.rb +777 -38
- data/lib/vericred_client/models/request_plan_find_applicant.rb +754 -15
- data/lib/vericred_client/models/request_plan_find_carrier_verification.rb +792 -53
- data/lib/vericred_client/models/request_plan_find_drug_package.rb +754 -15
- data/lib/vericred_client/models/request_plan_find_provider.rb +754 -15
- data/lib/vericred_client/models/request_provider_notification_subscription.rb +768 -29
- data/lib/vericred_client/models/request_providers_search.rb +767 -26
- data/lib/vericred_client/models/request_rates_search.rb +768 -29
- data/lib/vericred_client/models/response_rates_search.rb +754 -15
- data/lib/vericred_client/models/rx_cui_identifier.rb +765 -26
- data/lib/vericred_client/models/rx_cui_identifier_search_response.rb +768 -29
- data/lib/vericred_client/models/service_area.rb +754 -15
- data/lib/vericred_client/models/service_area_zip_county.rb +754 -15
- data/lib/vericred_client/models/state.rb +778 -39
- data/lib/vericred_client/models/state_network_size_request.rb +754 -15
- data/lib/vericred_client/models/state_network_size_response.rb +754 -15
- data/lib/vericred_client/models/supplemental_options.rb +1187 -0
- data/lib/vericred_client/models/v7_network.rb +1155 -0
- data/lib/vericred_client/models/v7_network_comparison_response.rb +1149 -0
- data/lib/vericred_client/models/v7_network_details.rb +1167 -0
- data/lib/vericred_client/models/v7_network_details_response.rb +1135 -0
- data/lib/vericred_client/models/v7_network_search_response.rb +1147 -0
- data/lib/vericred_client/models/v7_provider_details.rb +1395 -0
- data/lib/vericred_client/models/v7_provider_networks.rb +1175 -0
- data/lib/vericred_client/models/vision_plan.rb +825 -86
- data/lib/vericred_client/models/vision_plan_benefits.rb +937 -128
- data/lib/vericred_client/models/vision_plan_search_applicant.rb +754 -15
- data/lib/vericred_client/models/vision_plan_search_request.rb +768 -39
- data/lib/vericred_client/models/vision_plan_search_response.rb +754 -15
- data/lib/vericred_client/models/vision_plan_show_response.rb +754 -15
- data/lib/vericred_client/models/vision_plan_update.rb +804 -65
- data/lib/vericred_client/models/vision_plan_update_request.rb +754 -15
- data/lib/vericred_client/models/zip_code.rb +754 -15
- data/lib/vericred_client/models/zip_counties_response.rb +770 -31
- data/lib/vericred_client/models/zip_county.rb +754 -15
- data/lib/vericred_client/models/zip_county_bulk.rb +765 -26
- data/lib/vericred_client/models/zip_county_response.rb +754 -15
- data/lib/vericred_client/version.rb +755 -16
- data/lib/vericred_client.rb +809 -15
- data/spec/api/carrier_groups_api_spec.rb +754 -15
- data/spec/api/carrier_verification_dental_plans_api_spec.rb +993 -0
- data/spec/api/carrier_verification_medical_plans_api_spec.rb +993 -0
- data/spec/api/carrier_verification_plans_api_spec.rb +754 -15
- data/spec/api/carrier_verification_vision_plans_api_spec.rb +993 -0
- data/spec/api/carriers_api_spec.rb +754 -15
- data/spec/api/dental_plans_api_spec.rb +780 -16
- data/spec/api/drug_coverages_api_spec.rb +754 -15
- data/spec/api/drug_packages_api_spec.rb +754 -15
- data/spec/api/drugs_api_spec.rb +754 -15
- data/spec/api/embargoes_api_spec.rb +754 -15
- data/spec/api/formularies_api_spec.rb +754 -15
- data/spec/api/issuers_api_spec.rb +754 -15
- data/spec/api/major_medical_plans_api_spec.rb +1006 -0
- data/spec/api/medical_plans_api_spec.rb +754 -40
- data/spec/api/network_sizes_api_spec.rb +754 -15
- data/spec/api/networks_api_spec.rb +760 -18
- data/spec/api/plans_api_spec.rb +754 -52
- data/spec/api/provider_notification_subscriptions_api_spec.rb +754 -15
- data/spec/api/providers_api_spec.rb +755 -28
- data/spec/api/quoting_api_spec.rb +1055 -0
- data/spec/api/rates_api_spec.rb +754 -15
- data/spec/api/vision_plans_api_spec.rb +779 -15
- data/spec/api/zip_counties_api_spec.rb +754 -15
- data/spec/api_client_spec.rb +754 -15
- data/spec/configuration_spec.rb +754 -15
- data/spec/models/aca_plan2018_search_response_spec.rb +756 -17
- data/spec/models/aca_plan2018_search_result_spec.rb +839 -100
- data/spec/models/aca_plan2018_show_response_spec.rb +754 -15
- data/spec/models/aca_plan2018_spec.rb +843 -104
- data/spec/models/aca_plan_pre2018_search_response_spec.rb +756 -17
- data/spec/models/aca_plan_pre2018_search_result_spec.rb +839 -100
- data/spec/models/aca_plan_pre2018_show_response_spec.rb +754 -15
- data/spec/models/aca_plan_pre2018_spec.rb +837 -98
- data/spec/models/aca_plan_spec.rb +837 -98
- data/spec/models/address_spec.rb +1024 -0
- data/spec/models/ancillary_plan_identifier_spec.rb +994 -0
- data/spec/models/base_plan_search_response_spec.rb +756 -17
- data/spec/models/base_spec.rb +754 -15
- data/spec/models/carrier_group_request_spec.rb +756 -17
- data/spec/models/carrier_request_spec.rb +756 -17
- data/spec/models/carrier_spec.rb +754 -15
- data/spec/models/carrier_subsidiary_spec.rb +758 -19
- data/spec/models/county_bulk_spec.rb +757 -18
- data/spec/models/county_spec.rb +756 -17
- data/spec/models/dental_plan_benefits_spec.rb +782 -43
- data/spec/models/dental_plan_search_applicant_spec.rb +754 -15
- data/spec/models/dental_plan_search_request_spec.rb +758 -25
- data/spec/models/dental_plan_search_response_spec.rb +754 -15
- data/spec/models/dental_plan_show_response_spec.rb +754 -15
- data/spec/models/dental_plan_spec.rb +767 -28
- data/spec/models/dental_plan_update_request_spec.rb +754 -15
- data/spec/models/dental_plan_update_spec.rb +763 -24
- data/spec/models/dependent_create_request_spec.rb +1012 -0
- data/spec/models/dependent_create_spec.rb +1012 -0
- data/spec/models/dependent_show_spec.rb +1012 -0
- data/spec/models/drug_coverage_response_spec.rb +756 -17
- data/spec/models/drug_coverage_spec.rb +758 -19
- data/spec/models/drug_package_spec.rb +756 -17
- data/spec/models/drug_search_response_spec.rb +756 -17
- data/spec/models/drug_spec.rb +758 -19
- data/spec/models/embargo_request_spec.rb +766 -21
- data/spec/models/formulary_drug_package_response_spec.rb +754 -15
- data/spec/models/formulary_response_spec.rb +756 -17
- data/spec/models/formulary_spec.rb +754 -15
- data/spec/models/group_create_request_spec.rb +994 -0
- data/spec/models/group_create_response_spec.rb +994 -0
- data/spec/models/group_create_spec.rb +1024 -0
- data/spec/models/group_show_response_spec.rb +994 -0
- data/spec/models/group_show_spec.rb +1030 -0
- data/spec/models/group_update_request_spec.rb +994 -0
- data/spec/models/group_update_spec.rb +1024 -0
- data/spec/models/issuer_request_spec.rb +765 -26
- data/spec/models/location_create_spec.rb +1018 -0
- data/spec/models/location_show_spec.rb +1024 -0
- data/spec/models/location_update_spec.rb +1024 -0
- data/spec/models/medical_plan_benefits_spec.rb +801 -62
- data/spec/models/medical_plan_update_request_spec.rb +754 -15
- data/spec/models/medical_plan_update_spec.rb +792 -47
- data/spec/models/medicare_advantage_plan_benefits_spec.rb +1828 -0
- data/spec/models/medicare_advantage_plan_search_request_spec.rb +1012 -0
- data/spec/models/medicare_advantage_plan_search_response_spec.rb +994 -0
- data/spec/models/medicare_advantage_plan_show_response_spec.rb +988 -0
- data/spec/models/medicare_advantage_plan_spec.rb +1090 -0
- data/spec/models/member_create_spec.rb +1042 -0
- data/spec/models/member_rate_show_request_spec.rb +1000 -0
- data/spec/models/member_rate_show_spec.rb +1018 -0
- data/spec/models/member_rates_show_response_spec.rb +994 -0
- data/spec/models/member_show_spec.rb +1048 -0
- data/spec/models/members_create_request_spec.rb +994 -0
- data/spec/models/members_create_response_spec.rb +988 -0
- data/spec/models/members_show_response_spec.rb +988 -0
- data/spec/models/meta_plan_search_response_spec.rb +757 -18
- data/spec/models/meta_spec.rb +754 -15
- data/spec/models/network_comparison_request_spec.rb +754 -15
- data/spec/models/network_comparison_response_spec.rb +756 -17
- data/spec/models/network_comparison_spec.rb +754 -15
- data/spec/models/network_details_response_spec.rb +754 -15
- data/spec/models/network_details_spec.rb +757 -18
- data/spec/models/network_search_response_spec.rb +754 -15
- data/spec/models/network_size_spec.rb +756 -17
- data/spec/models/network_spec.rb +754 -15
- data/spec/models/notification_subscription_response_spec.rb +754 -15
- data/spec/models/notification_subscription_spec.rb +754 -15
- data/spec/models/plan_county_bulk_spec.rb +756 -17
- data/spec/models/plan_county_spec.rb +756 -17
- data/spec/models/plan_deleted_spec.rb +754 -15
- data/spec/models/plan_identifier_spec.rb +754 -15
- data/spec/models/plan_medicare_bulk_spec.rb +763 -24
- data/spec/models/plan_medicare_spec.rb +760 -21
- data/spec/models/plan_pricing_medicare_spec.rb +761 -22
- data/spec/models/plan_search_response_spec.rb +756 -17
- data/spec/models/plan_show_response_spec.rb +754 -15
- data/spec/models/plan_spec.rb +754 -15
- data/spec/models/plans_bulk_aca2018_spec.rb +988 -0
- data/spec/models/plans_bulk_aca_pre2018_spec.rb +988 -0
- data/spec/models/plans_bulk_base_spec.rb +982 -0
- data/spec/models/plans_bulk_dental_spec.rb +982 -0
- data/spec/models/plans_bulk_vision_spec.rb +982 -0
- data/spec/models/provider_details_spec.rb +779 -28
- data/spec/models/provider_geocode_spec.rb +754 -15
- data/spec/models/provider_network_event_notification_spec.rb +760 -21
- data/spec/models/provider_networks_spec.rb +1006 -0
- data/spec/models/provider_show_response_spec.rb +754 -15
- data/spec/models/provider_spec.rb +762 -23
- data/spec/models/providers_geocode_response_spec.rb +754 -15
- data/spec/models/providers_search_response_spec.rb +754 -15
- data/spec/models/quote_create_request_spec.rb +988 -0
- data/spec/models/quote_create_response_spec.rb +988 -0
- data/spec/models/quote_create_spec.rb +1030 -0
- data/spec/models/quote_show_response_spec.rb +988 -0
- data/spec/models/quote_show_spec.rb +1042 -0
- data/spec/models/rate_request_spec.rb +884 -145
- data/spec/models/rate_search_spec.rb +886 -117
- data/spec/models/rate_show_request_spec.rb +1000 -0
- data/spec/models/rate_show_spec.rb +1012 -0
- data/spec/models/rates_show_response_spec.rb +994 -0
- data/spec/models/rating_area_spec.rb +754 -15
- data/spec/models/request_plan_find_applicant_spec.rb +754 -15
- data/spec/models/request_plan_find_carrier_verification_spec.rb +761 -22
- data/spec/models/request_plan_find_drug_package_spec.rb +754 -15
- data/spec/models/request_plan_find_provider_spec.rb +754 -15
- data/spec/models/request_plan_find_spec.rb +759 -20
- data/spec/models/request_provider_notification_subscription_spec.rb +757 -18
- data/spec/models/request_providers_search_spec.rb +758 -19
- data/spec/models/request_rates_search_spec.rb +756 -17
- data/spec/models/response_rates_search_spec.rb +754 -15
- data/spec/models/rx_cui_identifier_search_response_spec.rb +756 -17
- data/spec/models/rx_cui_identifier_spec.rb +756 -17
- data/spec/models/service_area_spec.rb +754 -15
- data/spec/models/service_area_zip_county_spec.rb +754 -15
- data/spec/models/state_network_size_request_spec.rb +754 -15
- data/spec/models/state_network_size_response_spec.rb +754 -15
- data/spec/models/state_spec.rb +762 -23
- data/spec/models/supplemental_options_spec.rb +1018 -0
- data/spec/models/v7_network_comparison_response_spec.rb +994 -0
- data/spec/models/v7_network_details_response_spec.rb +988 -0
- data/spec/models/v7_network_details_spec.rb +1006 -0
- data/spec/models/v7_network_search_response_spec.rb +994 -0
- data/spec/models/v7_network_spec.rb +1000 -0
- data/spec/models/v7_provider_details_spec.rb +1138 -0
- data/spec/models/v7_provider_networks_spec.rb +1012 -0
- data/spec/models/vision_plan_benefits_spec.rb +813 -32
- data/spec/models/vision_plan_search_applicant_spec.rb +754 -15
- data/spec/models/vision_plan_search_request_spec.rb +758 -25
- data/spec/models/vision_plan_search_response_spec.rb +754 -15
- data/spec/models/vision_plan_show_response_spec.rb +754 -15
- data/spec/models/vision_plan_spec.rb +767 -28
- data/spec/models/vision_plan_update_request_spec.rb +754 -15
- data/spec/models/vision_plan_update_spec.rb +763 -24
- data/spec/models/zip_code_spec.rb +754 -15
- data/spec/models/zip_counties_response_spec.rb +756 -17
- data/spec/models/zip_county_bulk_spec.rb +757 -18
- data/spec/models/zip_county_response_spec.rb +754 -15
- data/spec/models/zip_county_spec.rb +754 -15
- data/spec/spec_helper.rb +754 -15
- data/vericred_client.gemspec +754 -15
- metadata +315 -95
@@ -0,0 +1,1227 @@
|
|
1
|
+
=begin
|
2
|
+
#Vericred API
|
3
|
+
|
4
|
+
## Getting Started
|
5
|
+
|
6
|
+
## Signing Up
|
7
|
+
|
8
|
+
Visit our [Developer Portal](https://developers.vericred.com) to
|
9
|
+
create an account.
|
10
|
+
|
11
|
+
Once you have created an account, you can create one Application for your
|
12
|
+
Production environment and another for a Sandbox (select the appropriate Plan when you create the Application).
|
13
|
+
|
14
|
+
## SDKs
|
15
|
+
|
16
|
+
Our API follows standard REST conventions, so you can use any HTTP client
|
17
|
+
to integrate with us. You will likely find it easier to use one of our
|
18
|
+
[autogenerated SDKs](https://github.com/vericred/?query=vericred-),
|
19
|
+
which we make available for several common programming languages.
|
20
|
+
|
21
|
+
## Authentication
|
22
|
+
|
23
|
+
To authenticate, pass the API Key you created in the Developer Portal as
|
24
|
+
a `Vericred-Api-Key` header.
|
25
|
+
|
26
|
+
`curl -H 'Vericred-Api-Key: YOUR_KEY' "https://api.vericred.com/providers?search_term=Foo&zip_code=11215"`
|
27
|
+
|
28
|
+
## Versioning
|
29
|
+
|
30
|
+
Vericred's API default to the latest version. However, if you need a specific
|
31
|
+
version, you can request it with an `Accept-Version` header.
|
32
|
+
|
33
|
+
The current version is `v4`. We also support `v2` and `v3`
|
34
|
+
|
35
|
+
`curl -H 'Vericred-Api-Key: YOUR_KEY' -H 'Accept-Version: v3' "https://api.vericred.com/providers?search_term=Foo&zip_code=11215"`
|
36
|
+
|
37
|
+
## Pagination
|
38
|
+
|
39
|
+
Endpoints that accept `page` and `per_page` parameters are paginated. They expose
|
40
|
+
four additional fields that contain data about your position in the response,
|
41
|
+
namely `Total`, `Per-Page`, `Link`, and `Page` as described in [RFC-5988](https://tools.ietf.org/html/rfc5988).
|
42
|
+
|
43
|
+
For example, to display 5 results per page and view the second page of a
|
44
|
+
`GET` to `/networks`, your final request would be `GET /networks?....page=2&per_page=5`.
|
45
|
+
|
46
|
+
## Sideloading
|
47
|
+
|
48
|
+
When we return multiple levels of an object graph (e.g. `Provider`s and their
|
49
|
+
`State`s we typically the associated data. In this example, we would
|
50
|
+
provide an Array of `State`s and a `state_id` for each provider. This is
|
51
|
+
done primarily to reduce the payload size since many of the `Provider`s
|
52
|
+
will share a `State`
|
53
|
+
|
54
|
+
### Simplified Example
|
55
|
+
```
|
56
|
+
{
|
57
|
+
providers: [{ id: 1, state_id: 1}, { id: 2, state_id: 1 }],
|
58
|
+
states: [{ id: 1, code: 'NY' }]
|
59
|
+
}
|
60
|
+
```
|
61
|
+
|
62
|
+
If you need the second level of the object graph, you can just match the
|
63
|
+
corresponding id.
|
64
|
+
|
65
|
+
## Selecting specific data
|
66
|
+
|
67
|
+
All endpoints allow you to specify which fields you would like to return.
|
68
|
+
This allows you to limit the response to contain only the data you need.
|
69
|
+
|
70
|
+
For example, let's take a request that returns the following JSON by default
|
71
|
+
|
72
|
+
```
|
73
|
+
{
|
74
|
+
provider: {
|
75
|
+
id: 1,
|
76
|
+
name: 'John',
|
77
|
+
phone: '1234567890',
|
78
|
+
field_we_dont_care_about: 'value_we_dont_care_about'
|
79
|
+
},
|
80
|
+
states: [{
|
81
|
+
id: 1,
|
82
|
+
name: 'New York',
|
83
|
+
code: 'NY',
|
84
|
+
field_we_dont_care_about: 'value_we_dont_care_about'
|
85
|
+
}]
|
86
|
+
}
|
87
|
+
```
|
88
|
+
|
89
|
+
To limit our results to only return the fields we care about, we specify the
|
90
|
+
`select` in the query string for a `GET` or the body for a `POST`.
|
91
|
+
|
92
|
+
In this case, we want to select `name` and `phone` from the `provider` key,
|
93
|
+
so we would add the parameters `select=provider.name,provider.phone`.
|
94
|
+
We also want the `name` and `code` from the `states` key, so we would
|
95
|
+
add the parameters `select=states.name,states.code`. The id field of
|
96
|
+
each document is always returned whether or not it is requested.
|
97
|
+
|
98
|
+
Our final request would be `GET /providers/12345?select=provider.name,provider.phone,states.name,states.code`
|
99
|
+
|
100
|
+
The response would be
|
101
|
+
|
102
|
+
```
|
103
|
+
{
|
104
|
+
provider: {
|
105
|
+
id: 1,
|
106
|
+
name: 'John',
|
107
|
+
phone: '1234567890'
|
108
|
+
},
|
109
|
+
states: [{
|
110
|
+
id: 1,
|
111
|
+
name: 'New York',
|
112
|
+
code: 'NY'
|
113
|
+
}]
|
114
|
+
}
|
115
|
+
```
|
116
|
+
|
117
|
+
# Plan and Rate Data
|
118
|
+
|
119
|
+
Vericred's Plan and Rate Data let you search and quote Major Medical and Ancillary Insurance Plans in a given area for a particular family in the Individual Market or a group of families in the Small Group Market. Vericred provides the relevant data via this API and via our Bulk Format (documented [below](#Bulk Plan and Rate Data))
|
120
|
+
|
121
|
+
## Plans
|
122
|
+
|
123
|
+
A Plan defines a set of Benefits available to its purchaser. For example, a Major Medical Plan would specify cost-share Benefits for services like a Primary Care Provider visit, a Specialist visit or an Emergency Room visit. A Dental Plan might specify Benefits for Periodontics and Fluroride Treatments. The Benefits for each Product type ([Major Medical](#header-major-medical), [Dental](#header-dental), and [Vision](#header-vision)) are documented below.
|
124
|
+
|
125
|
+
### Benefits Format
|
126
|
+
|
127
|
+
Benefits for Plans can be quite complex. With the goals of capturing and standardizing the complexity while retaining a human-readable format, we have developed a [Bakus-Naur Form](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)(BNF) context-free grammar, with which we present Benefits.
|
128
|
+
|
129
|
+
Benefit cost-share strings are formatted to capture:
|
130
|
+
* Network tiers
|
131
|
+
* Compound or conditional cost-share
|
132
|
+
* Limits on the cost-share
|
133
|
+
* Benefit-specific maximum out-of-pocket costs
|
134
|
+
|
135
|
+
**Example #1**
|
136
|
+
As an example, we would represent [this Summary of Benefits & Coverage](https://s3.amazonaws.com/vericred-data/SBC/2017/33602TX0780032.pdf) as:
|
137
|
+
|
138
|
+
* **Hospital stay facility fees**:
|
139
|
+
- Network Provider: `$400 copay/admit plus 20% coinsurance`
|
140
|
+
- Out-of-Network Provider: `$1,500 copay/admit plus 50% coinsurance`
|
141
|
+
- Vericred's format for this benefit: `In-Network: $400 before deductible then 20% after deductible / Out-of-Network: $1,500 before deductible then 50% after deductible`
|
142
|
+
|
143
|
+
* **Rehabilitation services:**
|
144
|
+
- Network Provider: `20% coinsurance`
|
145
|
+
- Out-of-Network Provider: `50% coinsurance`
|
146
|
+
- Limitations & Exceptions: `35 visit maximum per benefit period combined with Chiropractic care.`
|
147
|
+
- Vericred's format for this benefit: `In-Network: 20% after deductible / Out-of-Network: 50% after deductible | limit: 35 visit(s) per Benefit Period`
|
148
|
+
|
149
|
+
**Example #2**
|
150
|
+
In [this other Summary of Benefits & Coverage](https://s3.amazonaws.com/vericred-data/SBC/2017/40733CA0110568.pdf), the **specialty_drugs** cost-share has a maximum out-of-pocket for in-network pharmacies.
|
151
|
+
* **Specialty drugs:**
|
152
|
+
- Network Provider: `40% coinsurance up to a $500 maximum for up to a 30 day supply`
|
153
|
+
- Out-of-Network Provider `Not covered`
|
154
|
+
- Vericred's format for this benefit: `In-Network: 40% after deductible, up to $500 per script / Out-of-Network: 100%`
|
155
|
+
|
156
|
+
**BNF**
|
157
|
+
|
158
|
+
Here's a description of the benefits summary string, represented as a context-free grammar:
|
159
|
+
|
160
|
+
```
|
161
|
+
root ::= coverage
|
162
|
+
|
163
|
+
coverage ::= (simple_coverage | tiered_coverage) (space pipe space coverage_modifier)?
|
164
|
+
tiered_coverage ::= tier (space slash space tier)*
|
165
|
+
tier ::= tier_name colon space (tier_coverage | not_applicable)
|
166
|
+
tier_coverage ::= simple_coverage (space (then | or | and) space simple_coverage)* tier_limitation?
|
167
|
+
simple_coverage ::= (pre_coverage_limitation space)? coverage_amount (space post_coverage_limitation)? (comma? space coverage_condition)?
|
168
|
+
coverage_modifier ::= limit_condition colon space (((simple_coverage | simple_limitation) (semicolon space see_carrier_documentation)?) | see_carrier_documentation | waived_if_admitted | shared_across_tiers)
|
169
|
+
waived_if_admitted ::= ("copay" space)? "waived if admitted"
|
170
|
+
simple_limitation ::= pre_coverage_limitation space "copay applies"
|
171
|
+
tier_name ::= "In-Network-Tier-2" | "Out-of-Network" | "In-Network"
|
172
|
+
limit_condition ::= "limit" | "condition"
|
173
|
+
tier_limitation ::= comma space "up to" space (currency | (integer space time_unit plural?)) (space post_coverage_limitation)?
|
174
|
+
coverage_amount ::= currency | unlimited | included | unknown | percentage | (digits space (treatment_unit | time_unit) plural?)
|
175
|
+
pre_coverage_limitation ::= first space digits space time_unit plural?
|
176
|
+
post_coverage_limitation ::= (((then space currency) | "per condition") space)? "per" space (treatment_unit | (integer space time_unit) | time_unit) plural?
|
177
|
+
coverage_condition ::= ("before deductible" | "after deductible" | "penalty" | allowance | "in-state" | "out-of-state") (space allowance)?
|
178
|
+
allowance ::= upto_allowance | after_allowance
|
179
|
+
upto_allowance ::= "up to" space (currency space)? "allowance"
|
180
|
+
after_allowance ::= "after" space (currency space)? "allowance"
|
181
|
+
see_carrier_documentation ::= "see carrier documentation for more information"
|
182
|
+
shared_across_tiers ::= "shared across all tiers"
|
183
|
+
unknown ::= "unknown"
|
184
|
+
unlimited ::= /[uU]nlimited/
|
185
|
+
included ::= /[iI]ncluded in [mM]edical/
|
186
|
+
time_unit ::= /[hH]our/ | (((/[cC]alendar/ | /[cC]ontract/) space)? /[yY]ear/) | /[mM]onth/ | /[dD]ay/ | /[wW]eek/ | /[vV]isit/ | /[lL]ifetime/ | ((((/[bB]enefit/ plural?) | /[eE]ligibility/) space)? /[pP]eriod/)
|
187
|
+
treatment_unit ::= /[pP]erson/ | /[gG]roup/ | /[cC]ondition/ | /[sS]cript/ | /[vV]isit/ | /[eE]xam/ | /[iI]tem/ | /[sS]tay/ | /[tT]reatment/ | /[aA]dmission/ | /[eE]pisode/
|
188
|
+
comma ::= ","
|
189
|
+
colon ::= ":"
|
190
|
+
semicolon ::= ";"
|
191
|
+
pipe ::= "|"
|
192
|
+
slash ::= "/"
|
193
|
+
plural ::= "(s)" | "s"
|
194
|
+
then ::= "then" | ("," space) | space
|
195
|
+
or ::= "or"
|
196
|
+
and ::= "and"
|
197
|
+
not_applicable ::= "Not Applicable" | "N/A" | "NA"
|
198
|
+
first ::= "first"
|
199
|
+
currency ::= "$" number
|
200
|
+
percentage ::= number "%"
|
201
|
+
number ::= float | integer
|
202
|
+
float ::= digits "." digits
|
203
|
+
integer ::= /[0-9]/+ (comma_int | under_int)*
|
204
|
+
comma_int ::= ("," /[0-9]/*3) !"_"
|
205
|
+
under_int ::= ("_" /[0-9]/*3) !","
|
206
|
+
digits ::= /[0-9]/+ ("_" /[0-9]/+)*
|
207
|
+
space ::= /[ \t]/+
|
208
|
+
```
|
209
|
+
|
210
|
+
|
211
|
+
### Major Medical
|
212
|
+
|
213
|
+
Vericred's data covers all Major Medical Plans available in the Individual and Small Groups (2-50 or 2-100) Markets in the US. These Plans are governed by CMS and are ACA-compliant. We do not include certain Plans that fall outside of the ACA, for example, Faith-Based Plans or Short-Term Medical Plans
|
214
|
+
|
215
|
+
We support the following Benefits Fields for Major Medical Plans. These represent the vast majority of fields available on a [Summary of Benefits and Coverage](https://www.healthcare.gov/health-care-law-protections/summary-of-benefits-and-coverage/)
|
216
|
+
|
217
|
+
The following are the appropriate Benefit Fields for Major Medical:
|
218
|
+
|
219
|
+
- ambulance
|
220
|
+
- child\_eye\_exam
|
221
|
+
- child\_eyewear
|
222
|
+
- chiropractic\_services
|
223
|
+
- diagnostic\_test
|
224
|
+
- durable\_medical\_equipment
|
225
|
+
- emergency\_room
|
226
|
+
- family\_drug\_deductible
|
227
|
+
- family\_drug\_moop
|
228
|
+
- family\_medical\_deductible
|
229
|
+
- family\_medical\_moop
|
230
|
+
- generic\_drugs
|
231
|
+
- habilitation\_services
|
232
|
+
- home\_health\_care
|
233
|
+
- hospice\_service
|
234
|
+
- imaging\_center
|
235
|
+
- imaging\_physician
|
236
|
+
- individual\_drug\_deductible
|
237
|
+
- individual\_drug\_moop
|
238
|
+
- individual\_medical\_deductible
|
239
|
+
- individual\_medical\_moop
|
240
|
+
- inpatient\_birth
|
241
|
+
- inpatient\_facility
|
242
|
+
- inpatient\_mental\_health
|
243
|
+
- inpatient\_physician
|
244
|
+
- inpatient\_substance
|
245
|
+
- lab\_test
|
246
|
+
- non\_preferred\_brand\_drugs
|
247
|
+
- nonpreferred\_generic\_drug\_share
|
248
|
+
- nonpreferred\_specialty\_drug\_share
|
249
|
+
- outpatient\_ambulatory\_care\_center
|
250
|
+
- outpatient\_facility
|
251
|
+
- outpatient\_mental\_health
|
252
|
+
- outpatient\_physician
|
253
|
+
- outpatient\_substance
|
254
|
+
- postnatal\_care
|
255
|
+
- preferred\_brand\_drugs
|
256
|
+
- prenatal\_care
|
257
|
+
- preventative\_care
|
258
|
+
- primary\_care\_physician
|
259
|
+
- rehabilitation\_services
|
260
|
+
- skilled\_nursing
|
261
|
+
- specialist
|
262
|
+
- specialty\_drugs
|
263
|
+
- urgent\_care
|
264
|
+
|
265
|
+
### Dental
|
266
|
+
|
267
|
+
Dental benefits are less standardized than [Major Medical](#header-major-medical). Because of this, we have captured benefits for the most commonly specified services and procedures. If a Plan only specifies cost-share for "Major", "Minor", "Elective", etc, we determine the category for each of the benefits that we support and display the appropriate value for its category.
|
268
|
+
|
269
|
+
To view the technical documentation, [click here](#dental-plans).
|
270
|
+
|
271
|
+
The following are the supported Benefit Fields for Dental:
|
272
|
+
|
273
|
+
- bridges
|
274
|
+
- crowns
|
275
|
+
- denture\_relines\_rebases
|
276
|
+
- denture\_repair\_and\_adjustments
|
277
|
+
- dentures
|
278
|
+
- emergency\_treatment
|
279
|
+
- endodontics
|
280
|
+
- family\_annual\_max
|
281
|
+
- family\_deductible
|
282
|
+
- fluoride\_treatment
|
283
|
+
- implants
|
284
|
+
- individual\_annual\_max
|
285
|
+
- individual\_deductible
|
286
|
+
- inlays
|
287
|
+
- onlays
|
288
|
+
- oral\_exam
|
289
|
+
- oral\_surgery
|
290
|
+
- orthodontics\_adult
|
291
|
+
- orthodontics\_child
|
292
|
+
- periodontal\_maintenance
|
293
|
+
- periodontics
|
294
|
+
- prophylaxis\_cleaning
|
295
|
+
- radiograph\_bitewings
|
296
|
+
- radiograph\_other
|
297
|
+
- restoration\_fillings
|
298
|
+
- sealant
|
299
|
+
- simple\_extraction
|
300
|
+
- space\_maintainers
|
301
|
+
|
302
|
+
### Vision
|
303
|
+
|
304
|
+
Vision benefits are similar in structure to [Dental](#header-dental). Again, when benefits are broken out by category, we determine the appropriate category for each service or procedure and display the approprate value for its category.
|
305
|
+
|
306
|
+
To view the technical documentation, [click here](#vision-plans).
|
307
|
+
|
308
|
+
The following are the supported Benefit Fields for Vision:
|
309
|
+
|
310
|
+
- eye\_exam
|
311
|
+
- retinal\_imaging
|
312
|
+
- frame
|
313
|
+
- eyeglass\_lenses\_single\_vision
|
314
|
+
- eyeglass\_lenses\_bifocal
|
315
|
+
- eyeglass\_lenses\_trifocal
|
316
|
+
- eyeglass\_lenses\_lenticular
|
317
|
+
- uv\_coating
|
318
|
+
- tint
|
319
|
+
- standard\_antireflective\_coating
|
320
|
+
- premium\_antireflective\_coating
|
321
|
+
- standard\_polycarbonate\_lenses\_child
|
322
|
+
- standard\_polycarbonate\_lenses\_adult
|
323
|
+
- standard\_progressive\_lenses
|
324
|
+
- premium\_progressive\_lenses
|
325
|
+
- standard\_scratch\_resistance
|
326
|
+
- polarized\_lenses
|
327
|
+
- photochromatic\_lenses
|
328
|
+
- standard\_contact\_lens\_fit\_and\_follow\_up
|
329
|
+
- premium\_contact\_lens\_fit\_and\_follow\_up
|
330
|
+
- contact\_lenses\_conventional
|
331
|
+
- contact\_lenses\_disposable
|
332
|
+
- contact\_lenses\_medically\_necessary
|
333
|
+
- laser\_vision\_correction
|
334
|
+
- additional\_pairs\_of\_eyeglasses
|
335
|
+
|
336
|
+
## Rates
|
337
|
+
|
338
|
+
Rates are returned from the API as a part of [Quoting](#header-quoting). We calculate Rates in one of two ways.
|
339
|
+
|
340
|
+
### Sheet Rates
|
341
|
+
When a Carrier supplies us with Sheet Rates, we display *exactly* the value provided to us. For example, in the Major Medical market, most Carriers provide a single rate for each combination of Applicant age and tobacco status in a given [Rating Area](#header-rating-areas). For example, in Austin, TX, a 21-year-old non-tobacco-user may be $312.41 per month while a 22-year-old tobacco-user may be $401.75 per month. Certain Vision and Dental Carriers supply Sheet Rates as well, though it is less common.
|
342
|
+
|
343
|
+
### Rate Factors
|
344
|
+
Certain [Major Medical](#header-major-medical) Carriers and most [Vision](#header-vision) and [Dental](#header-dental) Carriers supply Rate Factors. The attributes on which the factors are based are the same as [Sheet Rates](#header-sheet-rates) for the [Major Medical](#header-major-medical) market (due to restrictions on what factors may be used in ACA Plans, which limit the possible factors to age and tobacco status).
|
345
|
+
|
346
|
+
In [Dental](#header-dental) and [Vision](#header-vision), the types of [Rate Factors](#header-rate-factors) are more varied. For example, SIC Code and Group size in the Group market and Gender in the Individual Market are commonly used [Rate Factors](#header-rate-factors)
|
347
|
+
|
348
|
+
Other common [Rate Factors](#header-rate-factors) for [Dental](#header-dental) and [Vision](#header-vision) products are Geographic and "Trend" (enrollment date) Factors. In [Major Medical](#header-major-medical), these types of variance are handled by CMS-defined [Rating Areas](#header-rating-areas).
|
349
|
+
|
350
|
+
In order to calculate a Rate using [Rate Factors](#header-rate-factors), the following methodology is applied:
|
351
|
+
|
352
|
+
```
|
353
|
+
B = Base Rate
|
354
|
+
f = Rate Factor Function 1
|
355
|
+
f' = Rate Factor Function 2
|
356
|
+
|
357
|
+
B * f(x) * f'(y) [* f''(z)] ... = n
|
358
|
+
```
|
359
|
+
|
360
|
+
## Rating Areas
|
361
|
+
For [Major Medical](#header-major-medical) products, [CMS](https://www.cms.gov/) defines [Rating Areas](https://www.cms.gov/cciio/programs-and-initiatives/health-insurance-market-reforms/state-gra.html). Under the ACA, *all* [Rate Factors](#header-rate-factors) in a Rating Area must be identical for a given time period. E.g. in Arizona, the rate for a 21-year-old non-tobacco user must be identical in all counties contained in Rating Area 1 (Mohave, Coconino, Apache, and Navajo), but *may* be different than the rate for a 21-year-old non-tobacco user in all counties Rating Area 2 (Yavapai county only) for a given year in the Individual Market and a given quartern in the Small Group market.
|
362
|
+
|
363
|
+
[Rating Areas](#header-rating-areas) are defined either by County, Zip Code or both, depending on the State. Because of this variance, all API endpoints that require a [Location](#header-specifying-the-location) require both `zip_code` and `fips_code` (a county code). [Bulk Data](#bulkplanandratedata) for [Rating Areas](#bulkratingareas) and [Service Areas](#bulkserviceareas) also specifies locations using both `zip_code` and `fips_code`.
|
364
|
+
|
365
|
+
*Rating Areas do not apply to products other than [Major Medical](#header-major-medical)*
|
366
|
+
|
367
|
+
## Service Areas
|
368
|
+
CMS mandates that [Major Medical](#header-major-medical) Rates be defined by [Rating Areas](#header-rating-areas), which themselves define a geography in which Plans are offered. Carriers often choose *not* to offer a Plan in and entire [Rating Area](#header-rating-areas) due to network coverage or other factors. Instead, the Carrier would define a [Service Area](#header-service-areas) that specifies where a given Plan is offered.
|
369
|
+
|
370
|
+
Each Plan is available in a single [Service Area](#header-service-areas) and each [Service Area](#header-service-areas) is defined by either County, Zip Code, or both, depending on the Carrier. Because of this variance, all API endpoints that require a [Location](#header-specifying-the-location) require both `zip_code` and `fips_code` (a county code). [Bulk Data](#bulkplanandratedata) for [Rating Areas](#bulkratingareas) and [Service Areas](#bulkserviceareas) also specifies locations using both `zip_code` and `fips_code`.
|
371
|
+
|
372
|
+
In [Dental](#header-dental) and [Vision](#header-vision) plans, we use a [Service Area](#header-service-areas) to define availability as well, although it typically mirrors a Geographic [Rate Factor](#header-rate-factors).
|
373
|
+
|
374
|
+
# Quoting
|
375
|
+
|
376
|
+
One of the primary use-cases for the Vericred API is to run Quotes to determine the Rate for a given family (in the Individual Market) or group (in the Small Group Market). We support quoting across [Major Medical](#header-major-medical), [Vision](#header-vision), and [Dental](#header-dental). In both cases, the process of generating a Quote is broken out into several steps:
|
377
|
+
|
378
|
+
1. Find all available [Plans](#header-plans) in the relevent [Service Areas](#header-service-areas) for the family or group.
|
379
|
+
1. Using [Business Rules](#header-business-rules) for each [Plan](#header-plans), determine if the family or group is eligible for that [Plan](#header-plans).
|
380
|
+
1. Using [Business Rules](#header-business-rules) for each [Plan](#header-plans), determine which members of the family or which members of each family in the group should be considered for Rating.
|
381
|
+
1. Using the [Sheet Rates](#header-sheet-rates) or [Rate Factors](#header-rate-factors) for each [Plan](#header-plans), determine the Rate the family, or for each family in the group.
|
382
|
+
1. If running a [Composite](#compositerates) quote, determine the portion of the total Rate that each family will pay.
|
383
|
+
|
384
|
+
## Individual Quotes
|
385
|
+
An Individual Quote is one for Plans that are available to a particular family, outside the context of their Employer. In the [Major Medical](#header-major-medical) market, many of these Plans are available on [Healthcare.gov](https://www.healthcare.gov) or the State-Based Exchange for non-Healthcare.gov states. The API supports both on-market and off-market Plans.
|
386
|
+
|
387
|
+
For details on Major Medical Quoting API calls see [below](#medicalplans-medicalplans-post)
|
388
|
+
|
389
|
+
### Specifying the Location
|
390
|
+
In order to determine which plans are [available](#header-service-areas) and the [rate](#header-rating-areas) for each Plan, you must specify a location. When creating a [Quote](#header-quoting) for the Individual Market, that information is contained in the `POST` body of the request:
|
391
|
+
```
|
392
|
+
POST /plans/medical/search
|
393
|
+
{
|
394
|
+
...
|
395
|
+
"zip_code": "11201",
|
396
|
+
"fips_code": "36047"
|
397
|
+
...
|
398
|
+
}
|
399
|
+
|
400
|
+
```
|
401
|
+
|
402
|
+
### Specifying Applicants
|
403
|
+
Applicants are the members of the family being quoted and are specified in the `POST` body of the request.
|
404
|
+
```
|
405
|
+
POST /plans/medical/search
|
406
|
+
{
|
407
|
+
...
|
408
|
+
"applicants": [
|
409
|
+
{
|
410
|
+
"age": 34,
|
411
|
+
"smoker": true,
|
412
|
+
"child": false
|
413
|
+
},
|
414
|
+
{
|
415
|
+
"age": 32,
|
416
|
+
"smoker": false,
|
417
|
+
"child": false
|
418
|
+
},
|
419
|
+
{
|
420
|
+
"age": 4,
|
421
|
+
"smoker": false,
|
422
|
+
"child": true
|
423
|
+
}
|
424
|
+
]
|
425
|
+
...
|
426
|
+
}
|
427
|
+
```
|
428
|
+
|
429
|
+
### Specifying Enrollment Date
|
430
|
+
The `enrollment_date` determines which [Plans](#header-plans) and [Rates](#header-rates) are returned. Specifying an `enrollment_date` in the past allows you to calculate historical data as far back as 2014.
|
431
|
+
|
432
|
+
### Plan Benefits
|
433
|
+
Plan Benefits are returned in the response for [Individual Quotes](#individualquotes)
|
434
|
+
```
|
435
|
+
POST /plans/medical/search
|
436
|
+
{
|
437
|
+
...
|
438
|
+
}
|
439
|
+
|
440
|
+
Response:
|
441
|
+
{
|
442
|
+
"plans": [
|
443
|
+
{
|
444
|
+
...
|
445
|
+
"individual_medical_deductible": "$5,000",
|
446
|
+
"family_medical_deductible": "$10,000"
|
447
|
+
...
|
448
|
+
}
|
449
|
+
|
450
|
+
]
|
451
|
+
}
|
452
|
+
|
453
|
+
```
|
454
|
+
|
455
|
+
### Premiums
|
456
|
+
The value for the family being quoted is returned in the `premium` field. If no [Applicants](#specifyingapplicants) are provided, the `premium` field will be `0`
|
457
|
+
|
458
|
+
### Major Medical Quotes
|
459
|
+
In order to [Quote](#header-quoting) [Major Medical](#header-major-medical) Plans, send a `POST` to `/plans/medical/search`. In addition, the `age`, `smoker` and `child` attributes of each Applicant must be present.
|
460
|
+
|
461
|
+
#### Subsidies
|
462
|
+
On-market ([Healthcare.gov](https://www.healthcare.gov) and State-Based Exchange) [Major Medical](#header-major-medical) Plans are eligible for government subsidies. The subsidy calculation is based on the percentage of the family's income that the IRS has designated as "affordable" for that family and the Second Lowest-Cost Silver Plan available to that family.
|
463
|
+
|
464
|
+
In order to calculate subsidies for a family the following parameters must be supplied:
|
465
|
+
```
|
466
|
+
POST /plans/medical/search
|
467
|
+
{
|
468
|
+
...
|
469
|
+
"household_size": 4,
|
470
|
+
"household_income": 40000
|
471
|
+
...
|
472
|
+
}
|
473
|
+
```
|
474
|
+
|
475
|
+
The amount that the family will pay after subsidy is returned in the `premium_subsidized` field for each plan.
|
476
|
+
|
477
|
+
##### Subsidy Calculation
|
478
|
+
Here is how subsidies are calculated. This is fully handled by the Vericred API, but the steps are enumerated below for clarity.
|
479
|
+
|
480
|
+
1. Determine the percentage of the [Federal Poverty Level](https://aspe.hhs.gov/poverty-guidelines) for the family based on the household size and income.
|
481
|
+
1. Reference the [CMS table](https://www.irs.gov/pub/irs-drop/rp-17-36.pdf) to determine the appropriate percentage of income for the family to spend on healthcare.
|
482
|
+
1. Multiply that value by the family's income. This is the total amount that the family can spend on healthcare for the year, after the subsidy.
|
483
|
+
1. Find the cost of the Second Least-Expensive Silver Plan available to the family, accounting for the percentage of premium that goes to [Essential Health Benefits](https://www.healthcare.gov/glossary/essential-health-benefits/)
|
484
|
+
1. Calculate the difference in price between the amount the family should spend on healthcare and the Second Least-Expensive Silver Plan's premium. This is the subsidy.
|
485
|
+
1. Apply the subsidy to all on-market Plans available to the family. The subsidized premium can never be below $0 (for example, a low-cost Bronze Plan may be less expensive than the subsidy)
|
486
|
+
|
487
|
+
#### Cost Sharing Reduction Plans
|
488
|
+
[Cost Sharing Reduction (CSR)](https://www.healthcare.gov/glossary/cost-sharing-reduction/) Plans are available to lower income families and offer enhanced benefits for certain Silver Plans at the same cost as the non-CSR Plans available to higher-income families.
|
489
|
+
|
490
|
+
If a family is eligible for CSR Plans, the Vericred API will return the relevant Plan in place of the non-CSR version.
|
491
|
+
|
492
|
+
In order to include CSR Plans where applicable, the following parameters must be supplied:
|
493
|
+
```
|
494
|
+
POST /plans/medical/search
|
495
|
+
{
|
496
|
+
...
|
497
|
+
"household_size": 4,
|
498
|
+
"household_income": 40000
|
499
|
+
...
|
500
|
+
}
|
501
|
+
```
|
502
|
+
|
503
|
+
#### The Children's Health Insurance Program (CHIP)
|
504
|
+
[The Children's Health Insurance Program (CHIP)](https://www.healthcare.gov/medicaid-chip/childrens-health-insurance-program/) provides low-cost health coverage to children in families that earn too much money to qualify for Medicaid.
|
505
|
+
|
506
|
+
If a family is eligible for CHIP, the Vericred API will include the subsidy in the returned premiums. In order to include CHIP subsidies in premium calculations, the following parameters must be supplied:
|
507
|
+
```
|
508
|
+
POST /plans/medical/search
|
509
|
+
{
|
510
|
+
...
|
511
|
+
"applicants": [
|
512
|
+
{
|
513
|
+
"age": 34,
|
514
|
+
"smoker": true,
|
515
|
+
"child": false
|
516
|
+
},
|
517
|
+
{
|
518
|
+
"age": 32,
|
519
|
+
"smoker": false,
|
520
|
+
"child": false
|
521
|
+
},
|
522
|
+
{
|
523
|
+
"age": 4,
|
524
|
+
"smoker": false,
|
525
|
+
"child": true
|
526
|
+
},
|
527
|
+
{
|
528
|
+
"age": 4,
|
529
|
+
"smoker": false,
|
530
|
+
"child": true
|
531
|
+
}
|
532
|
+
],
|
533
|
+
"household_size": 4,
|
534
|
+
"household_income": 40000
|
535
|
+
...
|
536
|
+
}
|
537
|
+
```
|
538
|
+
|
539
|
+
CHIP eligibility is displayed within the meta-tag in the response as `eligible_for_chip_medicaid`:
|
540
|
+
```
|
541
|
+
{
|
542
|
+
"meta": {
|
543
|
+
"total": 150,
|
544
|
+
"eligible_for_chip_medicaid": true,
|
545
|
+
"premium_tax_credit": 500.20
|
546
|
+
},
|
547
|
+
"coverages": [],
|
548
|
+
"plans": [...]
|
549
|
+
}
|
550
|
+
```
|
551
|
+
|
552
|
+
If you do not want CHIP subsidies to be included in the premiums, simply do not include the `household_income` parameter in the request.
|
553
|
+
|
554
|
+
### Dental Quotes
|
555
|
+
Quoting [Dental](#header-dental) Plans for a family requires slightly different parameters for [Applicants](#specifyingapplicants), due to the method with which Plans are [rated](#header-rate-factors). The folloiwng example contains the require parameters:
|
556
|
+
```
|
557
|
+
POST /plans/dental/search
|
558
|
+
{
|
559
|
+
...
|
560
|
+
"applicants": [
|
561
|
+
{
|
562
|
+
"age": 34,
|
563
|
+
"gender": "M",
|
564
|
+
"child": false
|
565
|
+
},
|
566
|
+
{
|
567
|
+
"age": 32,
|
568
|
+
"gender": "F",
|
569
|
+
"child": false
|
570
|
+
},
|
571
|
+
{
|
572
|
+
"age": 4,
|
573
|
+
"gender": "M",
|
574
|
+
"child": true
|
575
|
+
}
|
576
|
+
]
|
577
|
+
...
|
578
|
+
}
|
579
|
+
```
|
580
|
+
|
581
|
+
Note that in contrast to [Major Medical Quotes](#majormedicalquotes), [Dental Quotes](#dentalquotes) require `gender`, but *do not* require `smoker`.
|
582
|
+
|
583
|
+
Also note that [Subsidies](#subsidies) and [Cost Sharing Reduction](#costsharingreductionplans) are *not* relevant for [Dental Quotes](#dentalquotes).
|
584
|
+
|
585
|
+
### Vision Quotes
|
586
|
+
|
587
|
+
Quoting [Vision](#header-vision) Plans for a family requires slightly different parameters for [Applicants](#specifyingapplicants), due to the method with which Plans are [rated](#header-rate-factors). The folloiwng example contains the require parameters:
|
588
|
+
```
|
589
|
+
POST /plans/vision/search
|
590
|
+
{
|
591
|
+
...
|
592
|
+
"applicants": [
|
593
|
+
{
|
594
|
+
"age": 34,
|
595
|
+
"gender": "M",
|
596
|
+
"child": false
|
597
|
+
},
|
598
|
+
{
|
599
|
+
"age": 32,
|
600
|
+
"gender": "F",
|
601
|
+
"child": false
|
602
|
+
},
|
603
|
+
{
|
604
|
+
"age": 4,
|
605
|
+
"gender": "M",
|
606
|
+
"child": true
|
607
|
+
}
|
608
|
+
]
|
609
|
+
...
|
610
|
+
}
|
611
|
+
```
|
612
|
+
|
613
|
+
Note that in contrast to [Major Medical Quotes](#majormedicalquotes), [Vision Quotes](#visionquotes) require `gender`, but *do not* require `smoker`.
|
614
|
+
|
615
|
+
Also note that [Subsidies](#subsidies) and [Cost Sharing Reduction](#costsharingreductionplans) are *not* relevant for [Vision Quotes](#visionquotes).
|
616
|
+
|
617
|
+
## Quotes for Groups
|
618
|
+
A Group Quote finds [Plans](#header-plans) and [Rates](#header-rates) for a group of employees for a small business. Different [Plans](#header-plans) are available to small groups than are available in [Individual Quoting](#individualquotes). In addition, [Business Rules](#header-business-rules) that apply across multiple families or based upon employer attributes such as [SIC](https://en.wikipedia.org/wiki/Standard_Industrial_Classification) code factor into rates and availability.
|
619
|
+
|
620
|
+
In addition, due to performance requirements and for enhanced auditing, [Group Quotes](#groupquotes) are persisted across requests. This means that a given [Quote](#groupquotes) can be retrieved after it has been created.
|
621
|
+
|
622
|
+
### Identifiers
|
623
|
+
In order to make it easier to cross-reference local copies of data with [Quotes](#header-creating-a-quote) and other data in the Vericred API, most entities allow for the specification of an `external_id` field. You can use this to store a primary or natural key from your system in order to easily match records returned from the API with records in your system.
|
624
|
+
|
625
|
+
### Specifying the Group
|
626
|
+
Creating a group is the first step in [Group Quoting](#groupquoting). The API requires that certain information such as `sic_code`, and `chamber_association` be provided and returns a the attributes and `id` for the newly created `Group`
|
627
|
+
|
628
|
+
Full documentation is available [below](#groupscreate)
|
629
|
+
|
630
|
+
### Specifying the Locations
|
631
|
+
When creating a `Group`, you must also specify one or more `Location`s. Of those `Location`s specified, one must be `primary`. That `Location` is used to calculate Plan eligibility using the relevant [Service Areas](#header-service-areas). Some Carriers use secondary `Location`s to determine eligibility as well, which is why those must be specified as well.
|
632
|
+
|
633
|
+
```
|
634
|
+
POST /groups
|
635
|
+
{
|
636
|
+
"group": {
|
637
|
+
...
|
638
|
+
},
|
639
|
+
"locations": [
|
640
|
+
{
|
641
|
+
...
|
642
|
+
"zip_code": "11201",
|
643
|
+
"fips_code": "36047",
|
644
|
+
"primary": true
|
645
|
+
...
|
646
|
+
}
|
647
|
+
]
|
648
|
+
}
|
649
|
+
```
|
650
|
+
|
651
|
+
### Specifying the Census
|
652
|
+
A Census is the collection of `Member`s contained in the `Group`. The attributes of each `Member` and his or her `Dependent`s determine the [Rate](#header-rates) for the `Group` as a whole. Certain attributes of the `Member` are important for calculating [Rates](#header-rates) and applying [Business Rules](#header-business-rules). For example, the `Member`'s home address and in which office he or she works are relevant for certain [Business Rules](#header-business-rules).
|
653
|
+
|
654
|
+
#### Dependent Relationships
|
655
|
+
The `Dependent`s for a given `Member` also factor into the [Rates](#header-rates) and application of [Business Rules](#header-business-rules). For example, certain [Plans](#header-plans) cover only `Dependent`s of particular types and/or only `Dependent`s of a particular type who live in the same household as the primary `Member`
|
656
|
+
|
657
|
+
Valid Dependent Relationships:
|
658
|
+
- `adopted_child`
|
659
|
+
- `child`
|
660
|
+
- `court_appointed_guardian`
|
661
|
+
- `dependent_of_dependent`
|
662
|
+
- `ex_spouse`
|
663
|
+
- `foster_child`
|
664
|
+
- `grand_child`
|
665
|
+
- `guardian`
|
666
|
+
- `life_partner`
|
667
|
+
- `other`
|
668
|
+
- `sibling`
|
669
|
+
- `sponsored_dependent`
|
670
|
+
- `spouse`
|
671
|
+
- `step_child`
|
672
|
+
- `ward`
|
673
|
+
|
674
|
+
```
|
675
|
+
POST
|
676
|
+
|
677
|
+
/groups/{id}/members
|
678
|
+
{
|
679
|
+
"members": [
|
680
|
+
...
|
681
|
+
{
|
682
|
+
"cobra": false,
|
683
|
+
"date_of_birth": "1980-01-01",
|
684
|
+
"fips_code": "36047"
|
685
|
+
"gender": "M",
|
686
|
+
"last_used_tobacco": "2017-01-01",
|
687
|
+
"location_id": :location_id
|
688
|
+
"retiree": false,
|
689
|
+
"zip_code": "11201",
|
690
|
+
"dependents": [
|
691
|
+
...
|
692
|
+
{
|
693
|
+
"relationship": "child",
|
694
|
+
"same_household": true
|
695
|
+
}
|
696
|
+
...
|
697
|
+
]
|
698
|
+
}
|
699
|
+
...
|
700
|
+
]
|
701
|
+
}
|
702
|
+
|
703
|
+
```
|
704
|
+
|
705
|
+
### Creating a Quote
|
706
|
+
Once the [Census](#header-specifying-the-census) has been created, we can generate a `Quote` for the `Group`.
|
707
|
+
|
708
|
+
#### Major Medical Quotes
|
709
|
+
To generate a [Major Medical](#header-major-medical) Quote, specify the `product_line` of `Quote` as `medical`
|
710
|
+
|
711
|
+
```
|
712
|
+
POST /groups/{id}/quotes
|
713
|
+
{
|
714
|
+
...
|
715
|
+
"product_line": "medical"
|
716
|
+
...
|
717
|
+
}
|
718
|
+
```
|
719
|
+
|
720
|
+
#### Dental Quotes
|
721
|
+
To generate a [Dental](#header-dental) Quote, specify the `product_line` of `Quote` as `dental`
|
722
|
+
|
723
|
+
```
|
724
|
+
POST /groups/{id}/quotes
|
725
|
+
{
|
726
|
+
...
|
727
|
+
"product_line": "dental"
|
728
|
+
...
|
729
|
+
}
|
730
|
+
```
|
731
|
+
|
732
|
+
#### Vision Quotes
|
733
|
+
To generate a [Vision](#header-vision) Quote, specify the `product_line` of `Quote` as `vision`
|
734
|
+
|
735
|
+
```
|
736
|
+
POST /groups/{id}/quotes
|
737
|
+
{
|
738
|
+
...
|
739
|
+
"product_line": "vision"
|
740
|
+
...
|
741
|
+
}
|
742
|
+
```
|
743
|
+
|
744
|
+
### Retrieving Aggregate Rates
|
745
|
+
Once you have created a [Quote](#header-creating-a-quote), you can retrieve its aggregate [Rates](#header-rates). [Rates](#header-rates) are broken down by `Member` and `Dependent`, so that you can show the final cost in different scenarios where an employer might cover a different percentage of `Member` and `Dependent` costs.
|
746
|
+
|
747
|
+
```
|
748
|
+
GET /quotes/{id}/rates
|
749
|
+
|
750
|
+
Response
|
751
|
+
{
|
752
|
+
"rates": [
|
753
|
+
...
|
754
|
+
{
|
755
|
+
"plan_id": "12345NY6789012",
|
756
|
+
"total_premium": 2800.0,
|
757
|
+
"member_premium": 1000.0,
|
758
|
+
"dependent_premium": 1800.0,
|
759
|
+
"id": "123abc"
|
760
|
+
}
|
761
|
+
...
|
762
|
+
]
|
763
|
+
}
|
764
|
+
```
|
765
|
+
|
766
|
+
|
767
|
+
#### Loading Plan Data
|
768
|
+
Aggregate [Rates](#header-rates) responses *do not* include [Plan](#header-plans) details in order to keep the payload small. [Plan](#header-plans) data can be retrieved in one of two ways:
|
769
|
+
|
770
|
+
Loading the [Plan](#header-plans) from the API:
|
771
|
+
```
|
772
|
+
GET /plans/{id}
|
773
|
+
|
774
|
+
Response:
|
775
|
+
{
|
776
|
+
"plans": [
|
777
|
+
...
|
778
|
+
{
|
779
|
+
...
|
780
|
+
"individual_medical_deductible": "$5,000",
|
781
|
+
"family_medical_deductible": "$10,000",
|
782
|
+
...
|
783
|
+
}
|
784
|
+
...
|
785
|
+
|
786
|
+
]
|
787
|
+
}
|
788
|
+
```
|
789
|
+
Pulling in [Bulk Plan Data](#bulkplans) and matching up [Plans](#header-plans) by their `id`.
|
790
|
+
|
791
|
+
### Retrieving Member-Level Rates
|
792
|
+
In order to retrieve the exact [Rate](#header-rates) for each `Member` and their `Dependents` for given [Plan](#header-plans), you can load Member-Level `Rates`.
|
793
|
+
|
794
|
+
```
|
795
|
+
GET /rates/{id}/member_rates
|
796
|
+
|
797
|
+
Response
|
798
|
+
{
|
799
|
+
"member_rates": [
|
800
|
+
...
|
801
|
+
{
|
802
|
+
"id": "123abc",
|
803
|
+
"member_id": "234def",
|
804
|
+
"member_external_id": "externally-supplied-id",
|
805
|
+
"member_premium": 500.0,
|
806
|
+
"dependent_premium": 600.0,
|
807
|
+
"total_premium": 1100.0,
|
808
|
+
}
|
809
|
+
...
|
810
|
+
]
|
811
|
+
}
|
812
|
+
|
813
|
+
```
|
814
|
+
|
815
|
+
Note that *all* `MemberRate`s are for one particular [Plan](#header-plans) - the one referenced by the parent [Rate](#header-rates).
|
816
|
+
|
817
|
+
### Business Rules
|
818
|
+
Vericred works with our Carrier partners to acquire and apply Business Rules that can affect either [Plan](#header-plans) availability or the way in which `Member`s and `Dependent`s are rated. For example, one Carrier's Business Rules might specify that `Member`s and `Dependent`s who have used tobacco in the past 4 months are considered "tobacco-users", while another's may specify that period to be 1 year.
|
819
|
+
|
820
|
+
These rules are applied transparently during the [Quoting](#header-quoting) process and *do not* require any additional action or input on your part.
|
821
|
+
|
822
|
+
For a full accounting of Business Rules and a list of Carriers whose Business Rules are applied, please contact support@vericred.com
|
823
|
+
|
824
|
+
### Composite Rates
|
825
|
+
Composite Rates are commonly used in [Major Medical](#header-major-medical), [Dental](#header-dental), and [Vision](#header-vision) [Plans](#header-plans) to simplify operations by charging each family the weighted average of the `Group`'s total premium. The most common methodology is as follows:
|
826
|
+
|
827
|
+
1. Calculate the [Rates](#header-rates) for the entire `Group` using [Sheet Rates](#header-sheet-rates) or [Rate Factors](#header-rate-factors) as appropriate
|
828
|
+
1. Categorize each Family within the Group. The categorization differs depending on whether the Composite Rate is 2, 3, or 4-tier
|
829
|
+
1. Multiply the number of Families in each category by the constant for that category. These constants are provided to Vericred by the Carrier. This determines the total number of "Rating Units"
|
830
|
+
1. Divide the total premium calculated in Step 1 by the total number of Rating Units to get the price per Rating Unit
|
831
|
+
1. The [Rate](#header-rates) each Family pays is the constant for that Family's category multiplied by the price per Rating Unit.
|
832
|
+
|
833
|
+
You can request that a [Quote](#header-quoting) be calculated using Composite Rates when creating it:
|
834
|
+
```
|
835
|
+
POST /quotes
|
836
|
+
{
|
837
|
+
...
|
838
|
+
"rating_method": "4_tier_composite"
|
839
|
+
...
|
840
|
+
}
|
841
|
+
```
|
842
|
+
If no Composite Rates methodology is available, the Vericred API will return standard age-banded Rates.
|
843
|
+
|
844
|
+
# Network and Provider Data
|
845
|
+
|
846
|
+
A `Provider` is an individual or organization in the medical profession. For example, an individual doctor is a `Provider` as are certain clinics and hospitals.
|
847
|
+
|
848
|
+
`Provider`s are related to `Network`s. A `Network` is a collection of `Provider`s that are under a particular contract with a given `Carrier`. A given `Carrier` will often have multiple `Network`s. For example, there may be a large national `Network` as well as several smaller regional `Network`s.
|
849
|
+
|
850
|
+
Each `Plan` has a `Network`. A consumer who visits a `Provider` typically incurs fewer costs when visiting a `Provider` in the `Network` covered by his or her `Plan`. The `premium` for a `Plan` is often proportional to the size of its `Network`
|
851
|
+
|
852
|
+
## Finding Providers
|
853
|
+
In order to determine if a particular `Plan` covers a given `Provider`, you must first identify the `Provider`. To do so, use the [Provider Search API endpoint](#providers-providers-post) and specify some search criteria:
|
854
|
+
|
855
|
+
```
|
856
|
+
POST /providers/search
|
857
|
+
{
|
858
|
+
"search_term": "foo",
|
859
|
+
"zip_code": "11201"
|
860
|
+
}
|
861
|
+
```
|
862
|
+
|
863
|
+
The API will return an ordered list of `Provider`s who match the query along with their names, addresses, and other demographic data. The `id` field returned refers to the `Provider`'s [NPI number](https://www.cms.gov/Regulations-and-Guidance/Administrative-Simplification/NationalProvIdentStand/). This is the key that is used to identify the `Provider` across different API endpoints.
|
864
|
+
|
865
|
+
## Finding Networks
|
866
|
+
|
867
|
+
A `Network` is a collection of `Provider`s that are under a particular contract with a given `Carrier`. A given `Carrier` will often have multiple `Network`s. For example, there may be a large national `Network` as well as several smaller regional `Network`s.
|
868
|
+
|
869
|
+
The API supports searching for `Networks` by Carrier, market and state. For more details view the [endpoint documentation](#networks-networks-get)
|
870
|
+
|
871
|
+
## Matching Providers to Networks
|
872
|
+
In order to determine if a `Provider` is covered by a user's `Plan`, you will need to map the `Provider` to a `Network`. There are several methods to do this using the API
|
873
|
+
|
874
|
+
### Using Plan Search
|
875
|
+
You can specify one or more `npi` values in the [`plan` search](#majormedicalplans-majormedicalplans-post). To do so, include a list of `providers` in the request
|
876
|
+
```
|
877
|
+
POST /plans/medical/search
|
878
|
+
{
|
879
|
+
...
|
880
|
+
"providers": [
|
881
|
+
{ "npi": 1234567890 },
|
882
|
+
{ "npi": 2345678901 }
|
883
|
+
]
|
884
|
+
...
|
885
|
+
}
|
886
|
+
|
887
|
+
The response will then return a list of `in_network_ids` and `out_of_network_ids` for each `Plan`
|
888
|
+
|
889
|
+
```
|
890
|
+
{
|
891
|
+
"plans": [
|
892
|
+
...
|
893
|
+
{
|
894
|
+
...
|
895
|
+
"id": "12345NY1234567",
|
896
|
+
"in_network_ids": [1234567890],
|
897
|
+
"out_of_network_ids": [1234567890]
|
898
|
+
...
|
899
|
+
},
|
900
|
+
{
|
901
|
+
...
|
902
|
+
"id": "12345NY2345678",
|
903
|
+
"in_network_ids": [1234567890, 1234567890],
|
904
|
+
"out_of_network_ids": []
|
905
|
+
...
|
906
|
+
}
|
907
|
+
...
|
908
|
+
]
|
909
|
+
}
|
910
|
+
|
911
|
+
Simply reference the `Provider` in question by its `id` for each `Plan` to see if that `Provider` is in-network for the `Plan`.
|
912
|
+
|
913
|
+
### Matching by Plan ID
|
914
|
+
Given a `Provider`'s `id`, you can retrieve all of his or her `hios_ids`
|
915
|
+
|
916
|
+
For more details see the [endpoint documentation](#providers-providers-get)
|
917
|
+
|
918
|
+
```
|
919
|
+
GET /providers/1234567890
|
920
|
+
{
|
921
|
+
"provider": {
|
922
|
+
...
|
923
|
+
"hios_ids": [
|
924
|
+
...
|
925
|
+
"12345NY1234567"
|
926
|
+
...
|
927
|
+
]
|
928
|
+
...
|
929
|
+
}
|
930
|
+
}
|
931
|
+
```
|
932
|
+
|
933
|
+
The returned `hios_ids` can be used to cross-reference a `Plan`
|
934
|
+
|
935
|
+
### Matching by Network
|
936
|
+
Once you have an ID returned from the [`Network` search endpoint](#networks-networks-get), you can cross-reference it with the `network_ids` returned from both the [`Provider` search](#providers-providers-post) and [`Provider` details](#providers-providers-get) endpoints.
|
937
|
+
|
938
|
+
This is useful for large group data or when you are not dealing with `Plan`s directly, but rather at the `Network` level.
|
939
|
+
|
940
|
+
|
941
|
+
OpenAPI spec version: 1.0.0
|
942
|
+
|
943
|
+
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
944
|
+
|
945
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
946
|
+
you may not use this file except in compliance with the License.
|
947
|
+
You may obtain a copy of the License at
|
948
|
+
|
949
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
950
|
+
|
951
|
+
Unless required by applicable law or agreed to in writing, software
|
952
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
953
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
954
|
+
See the License for the specific language governing permissions and
|
955
|
+
limitations under the License.
|
956
|
+
|
957
|
+
=end
|
958
|
+
|
959
|
+
require 'date'
|
960
|
+
|
961
|
+
module VericredClient
|
962
|
+
|
963
|
+
class QuoteShow
|
964
|
+
# null
|
965
|
+
attr_accessor :carrier_ids
|
966
|
+
|
967
|
+
# null
|
968
|
+
attr_accessor :contribution_percentage
|
969
|
+
|
970
|
+
# null
|
971
|
+
attr_accessor :created_at
|
972
|
+
|
973
|
+
# null
|
974
|
+
attr_accessor :effective_date
|
975
|
+
|
976
|
+
# null
|
977
|
+
attr_accessor :id
|
978
|
+
|
979
|
+
# null
|
980
|
+
attr_accessor :npn
|
981
|
+
|
982
|
+
# null
|
983
|
+
attr_accessor :participation_percentage
|
984
|
+
|
985
|
+
# null
|
986
|
+
attr_accessor :product_line
|
987
|
+
|
988
|
+
# null
|
989
|
+
attr_accessor :rating_method
|
990
|
+
|
991
|
+
# null
|
992
|
+
attr_accessor :voluntary
|
993
|
+
|
994
|
+
|
995
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
996
|
+
def self.attribute_map
|
997
|
+
{
|
998
|
+
:'carrier_ids' => :'carrier_ids',
|
999
|
+
:'contribution_percentage' => :'contribution_percentage',
|
1000
|
+
:'created_at' => :'created_at',
|
1001
|
+
:'effective_date' => :'effective_date',
|
1002
|
+
:'id' => :'id',
|
1003
|
+
:'npn' => :'npn',
|
1004
|
+
:'participation_percentage' => :'participation_percentage',
|
1005
|
+
:'product_line' => :'product_line',
|
1006
|
+
:'rating_method' => :'rating_method',
|
1007
|
+
:'voluntary' => :'voluntary'
|
1008
|
+
}
|
1009
|
+
end
|
1010
|
+
|
1011
|
+
# Attribute type mapping.
|
1012
|
+
def self.swagger_types
|
1013
|
+
{
|
1014
|
+
:'carrier_ids' => :'Array<String>',
|
1015
|
+
:'contribution_percentage' => :'Integer',
|
1016
|
+
:'created_at' => :'Date',
|
1017
|
+
:'effective_date' => :'Date',
|
1018
|
+
:'id' => :'String',
|
1019
|
+
:'npn' => :'String',
|
1020
|
+
:'participation_percentage' => :'Integer',
|
1021
|
+
:'product_line' => :'String',
|
1022
|
+
:'rating_method' => :'String',
|
1023
|
+
:'voluntary' => :'BOOLEAN'
|
1024
|
+
}
|
1025
|
+
end
|
1026
|
+
|
1027
|
+
# Initializes the object
|
1028
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
1029
|
+
def initialize(attributes = {})
|
1030
|
+
return unless attributes.is_a?(Hash)
|
1031
|
+
|
1032
|
+
# convert string to symbol for hash key
|
1033
|
+
attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
|
1034
|
+
|
1035
|
+
if attributes.has_key?(:'carrier_ids')
|
1036
|
+
if (value = attributes[:'carrier_ids']).is_a?(Array)
|
1037
|
+
self.carrier_ids = value
|
1038
|
+
end
|
1039
|
+
end
|
1040
|
+
|
1041
|
+
if attributes.has_key?(:'contribution_percentage')
|
1042
|
+
self.contribution_percentage = attributes[:'contribution_percentage']
|
1043
|
+
end
|
1044
|
+
|
1045
|
+
if attributes.has_key?(:'created_at')
|
1046
|
+
self.created_at = attributes[:'created_at']
|
1047
|
+
end
|
1048
|
+
|
1049
|
+
if attributes.has_key?(:'effective_date')
|
1050
|
+
self.effective_date = attributes[:'effective_date']
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
if attributes.has_key?(:'id')
|
1054
|
+
self.id = attributes[:'id']
|
1055
|
+
end
|
1056
|
+
|
1057
|
+
if attributes.has_key?(:'npn')
|
1058
|
+
self.npn = attributes[:'npn']
|
1059
|
+
end
|
1060
|
+
|
1061
|
+
if attributes.has_key?(:'participation_percentage')
|
1062
|
+
self.participation_percentage = attributes[:'participation_percentage']
|
1063
|
+
end
|
1064
|
+
|
1065
|
+
if attributes.has_key?(:'product_line')
|
1066
|
+
self.product_line = attributes[:'product_line']
|
1067
|
+
end
|
1068
|
+
|
1069
|
+
if attributes.has_key?(:'rating_method')
|
1070
|
+
self.rating_method = attributes[:'rating_method']
|
1071
|
+
end
|
1072
|
+
|
1073
|
+
if attributes.has_key?(:'voluntary')
|
1074
|
+
self.voluntary = attributes[:'voluntary']
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
1080
|
+
# @return Array for valid properies with the reasons
|
1081
|
+
def list_invalid_properties
|
1082
|
+
invalid_properties = Array.new
|
1083
|
+
return invalid_properties
|
1084
|
+
end
|
1085
|
+
|
1086
|
+
# Check to see if the all the properties in the model are valid
|
1087
|
+
# @return true if the model is valid
|
1088
|
+
def valid?
|
1089
|
+
return true
|
1090
|
+
end
|
1091
|
+
|
1092
|
+
# Checks equality by comparing each attribute.
|
1093
|
+
# @param [Object] Object to be compared
|
1094
|
+
def ==(o)
|
1095
|
+
return true if self.equal?(o)
|
1096
|
+
self.class == o.class &&
|
1097
|
+
carrier_ids == o.carrier_ids &&
|
1098
|
+
contribution_percentage == o.contribution_percentage &&
|
1099
|
+
created_at == o.created_at &&
|
1100
|
+
effective_date == o.effective_date &&
|
1101
|
+
id == o.id &&
|
1102
|
+
npn == o.npn &&
|
1103
|
+
participation_percentage == o.participation_percentage &&
|
1104
|
+
product_line == o.product_line &&
|
1105
|
+
rating_method == o.rating_method &&
|
1106
|
+
voluntary == o.voluntary
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
# @see the `==` method
|
1110
|
+
# @param [Object] Object to be compared
|
1111
|
+
def eql?(o)
|
1112
|
+
self == o
|
1113
|
+
end
|
1114
|
+
|
1115
|
+
# Calculates hash code according to all attributes.
|
1116
|
+
# @return [Fixnum] Hash code
|
1117
|
+
def hash
|
1118
|
+
[carrier_ids, contribution_percentage, created_at, effective_date, id, npn, participation_percentage, product_line, rating_method, voluntary].hash
|
1119
|
+
end
|
1120
|
+
|
1121
|
+
# Builds the object from hash
|
1122
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
1123
|
+
# @return [Object] Returns the model itself
|
1124
|
+
def build_from_hash(attributes)
|
1125
|
+
return nil unless attributes.is_a?(Hash)
|
1126
|
+
self.class.swagger_types.each_pair do |key, type|
|
1127
|
+
if type =~ /\AArray<(.*)>/i
|
1128
|
+
# check to ensure the input is an array given that the the attribute
|
1129
|
+
# is documented as an array but the input is not
|
1130
|
+
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
1131
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
|
1132
|
+
end
|
1133
|
+
elsif !attributes[self.class.attribute_map[key]].nil?
|
1134
|
+
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
1135
|
+
end # or else data not found in attributes(hash), not an issue as the data can be optional
|
1136
|
+
end
|
1137
|
+
|
1138
|
+
self
|
1139
|
+
end
|
1140
|
+
|
1141
|
+
# Deserializes the data based on type
|
1142
|
+
# @param string type Data type
|
1143
|
+
# @param string value Value to be deserialized
|
1144
|
+
# @return [Object] Deserialized data
|
1145
|
+
def _deserialize(type, value)
|
1146
|
+
case type.to_sym
|
1147
|
+
when :DateTime
|
1148
|
+
DateTime.parse(value)
|
1149
|
+
when :Date
|
1150
|
+
Date.parse(value)
|
1151
|
+
when :String
|
1152
|
+
value.to_s
|
1153
|
+
when :Integer
|
1154
|
+
value.to_i
|
1155
|
+
when :Float
|
1156
|
+
value.to_f
|
1157
|
+
when :BOOLEAN
|
1158
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
1159
|
+
true
|
1160
|
+
else
|
1161
|
+
false
|
1162
|
+
end
|
1163
|
+
when :Object
|
1164
|
+
# generic object (usually a Hash), return directly
|
1165
|
+
value
|
1166
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
1167
|
+
inner_type = Regexp.last_match[:inner_type]
|
1168
|
+
value.map { |v| _deserialize(inner_type, v) }
|
1169
|
+
when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
|
1170
|
+
k_type = Regexp.last_match[:k_type]
|
1171
|
+
v_type = Regexp.last_match[:v_type]
|
1172
|
+
{}.tap do |hash|
|
1173
|
+
value.each do |k, v|
|
1174
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
1175
|
+
end
|
1176
|
+
end
|
1177
|
+
else # model
|
1178
|
+
temp_model = VericredClient.const_get(type).new
|
1179
|
+
temp_model.build_from_hash(value)
|
1180
|
+
end
|
1181
|
+
end
|
1182
|
+
|
1183
|
+
# Returns the string representation of the object
|
1184
|
+
# @return [String] String presentation of the object
|
1185
|
+
def to_s
|
1186
|
+
to_hash.to_s
|
1187
|
+
end
|
1188
|
+
|
1189
|
+
# to_body is an alias to to_hash (backward compatibility)
|
1190
|
+
# @return [Hash] Returns the object in the form of hash
|
1191
|
+
def to_body
|
1192
|
+
to_hash
|
1193
|
+
end
|
1194
|
+
|
1195
|
+
# Returns the object in the form of hash
|
1196
|
+
# @return [Hash] Returns the object in the form of hash
|
1197
|
+
def to_hash
|
1198
|
+
hash = {}
|
1199
|
+
self.class.attribute_map.each_pair do |attr, param|
|
1200
|
+
value = self.send(attr)
|
1201
|
+
next if value.nil?
|
1202
|
+
hash[param] = _to_hash(value)
|
1203
|
+
end
|
1204
|
+
hash
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
# Outputs non-array value in the form of hash
|
1208
|
+
# For object, use to_hash. Otherwise, just return the value
|
1209
|
+
# @param [Object] value Any valid value
|
1210
|
+
# @return [Hash] Returns the value in the form of hash
|
1211
|
+
def _to_hash(value)
|
1212
|
+
if value.is_a?(Array)
|
1213
|
+
value.compact.map{ |v| _to_hash(v) }
|
1214
|
+
elsif value.is_a?(Hash)
|
1215
|
+
{}.tap do |hash|
|
1216
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
1217
|
+
end
|
1218
|
+
elsif value.respond_to? :to_hash
|
1219
|
+
value.to_hash
|
1220
|
+
else
|
1221
|
+
value
|
1222
|
+
end
|
1223
|
+
end
|
1224
|
+
|
1225
|
+
end
|
1226
|
+
|
1227
|
+
end
|