lib/mindee/product/us/healthcare_card/healthcare_card_v1_document.rb
# frozen_string_literal: true require_relative '../../../parsing' require_relative 'healthcare_card_v1_copay' module Mindee module Product module US module HealthcareCard # Healthcare Card API version 1.0 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 [Array<Mindee::Product::US::HealthcareCard::HealthcareCardV1Copay>] 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 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 = StringField.new(prediction['company_name'], page_id) @copays = [] prediction['copays'].each do |item| @copays.push(HealthcareCardV1Copay.new(item, page_id)) end @dependents = [] prediction['dependents'].each do |item| @dependents.push(StringField.new(item, page_id)) end @enrollment_date = DateField.new(prediction['enrollment_date'], page_id) @group_number = StringField.new(prediction['group_number'], page_id) @issuer80840 = StringField.new(prediction['issuer_80840'], page_id) @member_id = StringField.new(prediction['member_id'], page_id) @member_name = StringField.new(prediction['member_name'], page_id) @payer_id = StringField.new(prediction['payer_id'], page_id) @rx_bin = StringField.new(prediction['rx_bin'], page_id) @rx_grp = StringField.new(prediction['rx_grp'], page_id) @rx_pcn = 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 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 * 14}" 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