lib/mindee/product/us/healthcare_card/healthcare_card_v1_document.rb
# frozen_string_literal: true require_relative '../../../parsing' require_relative 'healthcare_card_v1_copays' module Mindee module Product module US module HealthcareCard # Healthcare Card API version 1.2 document data. class HealthcareCardV1Document < Mindee::Parsing::Common::Prediction include Mindee::Parsing::Standard # The name of the company that provides the healthcare plan. # @return [Mindee::Parsing::Standard::StringField] attr_reader :company_name # Is a fixed amount for a covered service. # @return [Mindee::Product::US::HealthcareCard::HealthcareCardV1Copays] attr_reader :copays # The list of dependents covered by the healthcare plan. # @return [Array<Mindee::Parsing::Standard::StringField>] attr_reader :dependents # The date when the member enrolled in the healthcare plan. # @return [Mindee::Parsing::Standard::DateField] attr_reader :enrollment_date # The group number associated with the healthcare plan. # @return [Mindee::Parsing::Standard::StringField] attr_reader :group_number # The organization that issued the healthcare plan. # @return [Mindee::Parsing::Standard::StringField] attr_reader :issuer80840 # The unique identifier for the member in the healthcare system. # @return [Mindee::Parsing::Standard::StringField] attr_reader :member_id # The name of the member covered by the healthcare plan. # @return [Mindee::Parsing::Standard::StringField] attr_reader :member_name # The unique identifier for the payer in the healthcare system. # @return [Mindee::Parsing::Standard::StringField] attr_reader :payer_id # The BIN number for prescription drug coverage. # @return [Mindee::Parsing::Standard::StringField] attr_reader :rx_bin # The group number for prescription drug coverage. # @return [Mindee::Parsing::Standard::StringField] attr_reader :rx_grp # The ID number for prescription drug coverage. # @return [Mindee::Parsing::Standard::StringField] attr_reader :rx_id # The PCN number for prescription drug coverage. # @return [Mindee::Parsing::Standard::StringField] attr_reader :rx_pcn # @param prediction [Hash] # @param page_id [Integer, nil] def initialize(prediction, page_id) super @company_name = Parsing::Standard::StringField.new( prediction['company_name'], page_id ) @copays = Product::US::HealthcareCard::HealthcareCardV1Copays.new(prediction['copays'], page_id) @dependents = [] # : Array[Parsing::Standard::StringField] prediction['dependents'].each do |item| @dependents.push(Parsing::Standard::StringField.new(item, page_id)) end @enrollment_date = Parsing::Standard::DateField.new( prediction['enrollment_date'], page_id ) @group_number = Parsing::Standard::StringField.new( prediction['group_number'], page_id ) @issuer80840 = Parsing::Standard::StringField.new( prediction['issuer_80840'], page_id ) @member_id = Parsing::Standard::StringField.new( prediction['member_id'], page_id ) @member_name = Parsing::Standard::StringField.new( prediction['member_name'], page_id ) @payer_id = Parsing::Standard::StringField.new( prediction['payer_id'], page_id ) @rx_bin = Parsing::Standard::StringField.new( prediction['rx_bin'], page_id ) @rx_grp = Parsing::Standard::StringField.new( prediction['rx_grp'], page_id ) @rx_id = Parsing::Standard::StringField.new(prediction['rx_id'], page_id) @rx_pcn = Parsing::Standard::StringField.new( prediction['rx_pcn'], page_id ) end # @return [String] def to_s dependents = @dependents.join("\n #{' ' * 12}") copays = copays_to_s out_str = String.new out_str << "\n:Company Name: #{@company_name}".rstrip out_str << "\n:Member Name: #{@member_name}".rstrip out_str << "\n:Member ID: #{@member_id}".rstrip out_str << "\n:Issuer 80840: #{@issuer80840}".rstrip out_str << "\n:Dependents: #{dependents}".rstrip out_str << "\n:Group Number: #{@group_number}".rstrip out_str << "\n:Payer ID: #{@payer_id}".rstrip out_str << "\n:RX BIN: #{@rx_bin}".rstrip out_str << "\n:RX ID: #{@rx_id}".rstrip out_str << "\n:RX GRP: #{@rx_grp}".rstrip out_str << "\n:RX PCN: #{@rx_pcn}".rstrip out_str << "\n:copays:" out_str << copays out_str << "\n:Enrollment Date: #{@enrollment_date}".rstrip out_str[1..].to_s end private # @param char [String] # @return [String] def copays_separator(char) out_str = String.new out_str << ' ' out_str << "+#{char * 14}" out_str << "+#{char * 22}" out_str << '+' out_str end # @return [String] def copays_to_s return '' if @copays.empty? line_items = @copays.map(&:to_table_line).join("\n#{copays_separator('-')}\n ") out_str = String.new out_str << "\n#{copays_separator('-')}" out_str << "\n |" out_str << ' Service Fees |' out_str << ' Service Name |' out_str << "\n#{copays_separator('=')}" out_str << "\n #{line_items}" out_str << "\n#{copays_separator('-')}" out_str end end end end end end