Module: Sunnyside

Included in:
EdiPayment, Ledger, LedgerReport, ManualPayment, Query, Reporter
Defined in:
lib/sunnyside/query/query.rb,
lib/sunnyside.rb,
lib/sunnyside/ftp.rb,
lib/sunnyside/menu.rb,
lib/sunnyside/version.rb,
lib/sunnyside/advanced.rb,
lib/sunnyside/ledger/edi.rb,
lib/sunnyside/expiring_auth.rb,
lib/sunnyside/ledger/ledger.rb,
lib/sunnyside/ledger/private.rb,
lib/sunnyside/reports/report.rb,
lib/sunnyside/models/db_setup.rb,
lib/sunnyside/reports/private.rb,
lib/sunnyside/reports/mco_mltc.rb,
lib/sunnyside/ledger/auth_report.rb,
lib/sunnyside/reports/pdf_report.rb,
lib/sunnyside/models/sequel_classes.rb,
lib/sunnyside/cash_receipts/cash_receipt.rb

Overview

definitely a work in progress.

Defined Under Namespace

Classes: Auth, AuthReport, CashReceipt, Charge, Claim, ClaimEOP, ClaimEntry, ClaimParser, Client, ClientData, Denial, EdiPayment, EdiReader, EditService, ExpiringAuth, Filelib, IncomingFiles, Invoice, InvoiceDetail, InvoiceParse, Ledger, LedgerReport, Login, ManualPayment, Menu, OutgoingFiles, PageData, ParseInvoice, Payment, PrivateClient, Provider, Query, ReportMCO, Reporter, Service, ServiceEntry, ServiceLine, ServiceParser, SunnyFTP, Visit

Constant Summary collapse

DRIVE =
ENV["HOMEDRIVE"]
DB =
Sequel.connect("sqlite://sunnyside.db")
VERSION =

stupid, no-good, lousy rubygems not letting me yank my bad install. grumble grumble…

"0.1.2"
PRIVATE_CLIENTS =
['TABICKMAN', 'JIBAJA', 'SUNNYSIDE COMMUNITY', 'BARROW', 'JENSEN']

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.access_ftpObject



5
6
7
8
9
10
11
12
# File 'lib/sunnyside/ftp.rb', line 5

def self.access_ftp
  Login.all.each do ||
    access = SunnyFTP.new(site: .site, username: .username, password: .password, provider: .provider)
    access.log_on
    puts "Logged into #{access.name}..."
    access.check_for_new_files
  end
end

.add_denial_dataObject



143
144
145
# File 'lib/sunnyside/models/db_setup.rb', line 143

def add_denial_data
  # CSV.foreach('examples/denial_data.csv', 'r') { |row| DB[:denials].insert(denial_code: row[0], denial_explanation: row[1]) }
end

.add_provider_to_ftpObject



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
# File 'lib/sunnyside/advanced.rb', line 52

def self.add_provider_to_ftp
  Provider.all.each { |prov| puts "#{prov.id}: #{prov.name}"}
  print "Type in the corresponding ID Number for the provider you would like to add to FTP: "
  
  provider = Provider[gets.chomp].abbreviation
  
  puts "You've selected #{provider}"

  print "Type in the ftp address now: "
  site = gets.chomp

  print "Type in the username now: "
  username = gets.chomp

  print "Type in the password now: "
  password = gets.chomp

  review = "-------Provider: #{provider}, Site: #{site}, Username: #{username}, Password: #{password}--------------"
  puts "Please review the following information: "
  puts '-' * review.length
  puts review
  puts '-' * review.length

  puts "Is this correct? Type Y or N."
  if gets.chomp.downcase == 'y'
    Login.insert(site: site, username: username, password: password, provider: provider)
    Dir.mkdir("#{DRIVE}/sunnyside-files/ftp/835/#{provider}")
    Dir.mkdir("#{DRIVE}/sunnyside-files/ftp/837/#{provider}")
  else
    puts 'Please try again.'
    Sunnyside.add_provider_to_ftp
  end
end

.add_providersObject



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/sunnyside/models/db_setup.rb', line 147

def add_providers
  DB[:providers].insert(:credit_account=>1206, :fund=>500, :debit_account=>5005, :name=>"AMERIGROUP 2", :abbreviation=>"AMG", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1207, :fund=>300, :debit_account=>5007, :name=>"CHILDREN'S AID SOCIETY", :abbreviation=>"CAS", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1226, :fund=>300, :debit_account=>5026, :name=>"COMPREHENSIVE CARE MANAGEMENT", :abbreviation=>"CCM", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1203, :fund=>300, :debit_account=>5002, :name=>"DOMINICAN SISTERS FAM HLTH", :abbreviation=>"DSF", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1209, :fund=>300, :debit_account=>5009, :name=>"ELDERSERVE HEALTH", :abbreviation=>"ELD", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1212, :fund=>300, :debit_account=>5012, :name=>"EMBLEM HEALTH", :abbreviation=>"EMB", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1201, :fund=>300, :debit_account=>5001, :name=>"GUILDNET", :abbreviation=>"G", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1227, :fund=>500, :debit_account=>5027, :name=>"HEALTH CARE PARTNERS", :abbreviation=>"HCP", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1218, :fund=>500, :debit_account=>5018, :name=>"HEALTH FIRST", :abbreviation=>"HFS", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1216, :fund=>500, :debit_account=>5016, :name=>"HEALTH INSURANCE PLAN OF NY", :abbreviation=>"HIP", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1223, :fund=>300, :debit_account=>5023, :name=>"HHH LONG TERM HOME HLTH CARE", :abbreviation=>"HHH", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1228, :fund=>300, :debit_account=>5028, :name=>"INDEPENDENCE CARE SYSTEMS", :abbreviation=>"ICS", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1217, :fund=>500, :debit_account=>5017, :name=>"METROPLUS HEALTH", :abbreviation=>"MPH", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1219, :fund=>500, :debit_account=>5019, :name=>"NEIGHBORHOOD HEALTH PROVIDERS", :abbreviation=>"NHP", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1221, :fund=>500, :debit_account=>5021, :name=>"NYS CATHOLIC/FIDELIS", :abbreviation=>"FID", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1200, :fund=>300, :debit_account=>5000, :name=>"PRIVATE", :abbreviation=>"P", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1204, :fund=>300, :debit_account=>5004, :name=>"SENIOR HEALTH PARTNERS", :abbreviation=>"SHP", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1202, :fund=>300, :debit_account=>5003, :name=>"SUNNYSIDE COMMUNITY SERVICES", :abbreviation=>"SCS", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1213, :fund=>500, :debit_account=>5013, :name=>"UNITED HEALTH CARE", :abbreviation=>"UHC", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1229, :fund=>500, :debit_account=>5029, :name=>"VNSNY CHOICE SELECT HEALTH", :abbreviation=>"VCS", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1224, :fund=>500, :debit_account=>5024, :name=>"WELCARE OF NEW YORK, INC.", :abbreviation=>"WEL", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1310, :fund=>300, :debit_account=>5030, :name=>"VILLAGE CARE MAX", :abbreviation=>"VIL", :prov_type=>"MLTC")
  DB[:providers].insert(:credit_account=>1222, :fund=>500, :debit_account=>5022, :name=>"AFFINITY HEALTH PLUS", :abbreviation=>"AFF", :prov_type=>"MCO")
  DB[:providers].insert(:credit_account=>1218, :fund=>500, :debit_account=>5018, :name=>"HEALTH PLUS PHSP,INC", :abbreviation=>"HFS", :prov_type=>"MCO")
end

.advanced_optsObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sunnyside/advanced.rb', line 2

def self.advanced_opts
  puts "1.) Add new provider"
  puts "2.) Export A/R denials"

  case gets.chomp
  when '1'
    print "Type in the provider name _EXACTLY_ how it appears on the SanData archive report files (e.g. Guildnet is always GUILDNET): "
    provider = gets.chomp
    print "Now type in the abbreviation (batch initials - e.g. MetroPlus Health is MPH): "
    abbrev   = gets.chomp
    print "Now type in the CREDIT account that is used in FUND EZ: "
    credit = gets.chomp
    print "Now type in the DEBIT account that is used in FUND EZ: "
    debit  = gets.chomp
    print "And finally, type in the FUND number that is used in FUND EZ: "
    fund   = gets.chomp
    review = "--------Name: #{provider}, Credit Account: #{credit}, Debit Account: #{debit}, Fund: #{fund}, Abbreviation: #{abbrev}--------"
    puts "Please review the below information."
    puts '-' * review.length
    puts review
    puts '-' * review.length
    print "Is this correct? (Y for yes, N for No): "
    raise 'You have an empty field! Start over!' if [provider, credit, debit, fund, abbrev].any? { |elem| elem.empty? }
    if gets.chomp.upcase == 'Y'
      provider = Provider.insert(name: provider, credit_account: credit, debit_account: debit, fund: fund, abbreviation: abbrev)
      puts "#{Provider[provider].name} added."
    else
      Sunnyside.advanced_opts
    end
  else
    exit
  end
end

.cash_receiptObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/sunnyside/cash_receipts/cash_receipt.rb', line 3

def self.cash_receipt
  puts "1.) EDI PAYMENT"
  puts "2.) MANUAL PAYMENT"
  puts "3.) RESET A/R SPREADSHEET"
  case gets.chomp
  when '1'
    cash_receipt = CashReceipt.new(:electronic)
  when '2'
    cash_receipt = CashReceipt.new(:manual)
  when '3'
    CSV.open("#{DRIVE}/sunnyside-files/cash_receipts/EDI-citywide-import.csv", "w") { |row| 
      row << ['Seq','Receipt','post_date','other id','invoice','header memo','batch','doc date','detail memo','fund','account','cc1','cc2','cc3','debit','credit']
    }
  end
  cash_receipt.collate if cash_receipt
end

.check_promptObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/sunnyside/reports/report.rb', line 93

def self.check_prompt

  Provider.all.each { |prov| puts "#{prov.id}: #{prov.name}"}
  print "Type in the Provider ID: "

  provider = Provider[gets.chomp]

  Payment.where(provider_id: provider.id).all.each { |check| puts "#{check.id}: Number - #{check.check_number} Amount - #{check.check_total}"}
  print "Type in the Check ID: "

  payments = gets.chomp.split.map { |chk| Payment[chk] }

  # For ICS checks, since for some reason the check number doesn't match the EDI TRN field.

  payments.each do |payment|
    if payment.provider_id == 12
      print "type in the correct ICS check #: "
      payment.update(:check_number => gets.chomp)
    end

    yield payment 
  end
end

.create_foldersObject



4
5
6
7
8
9
10
11
# File 'lib/sunnyside/models/db_setup.rb', line 4

def create_folders
  folders     = ['db', '835', '837', 'summary', 'cash_receipts', 'new-ledger', 'private', 'private/archive', 
                 'summary/archive', '837/archive', '835/archive', 'ftp', 'ftp/837', 'ftp/837/GUILDNET', 'ftp/837/CPHL', 'ftp/837/ELDERSERVE',
                 'ftp/835', 'ftp/835/GUILDNET', 'ftp/835/CPHL', 'ftp/835/ELDERSERVE', 'pdf-reports'
                ]
  Dir.mkdir("#{DRIVE}/sunnyside-files")
  folders.each { |folder| Dir.mkdir("#{DRIVE}/sunnyside-files/#{folder}") }
end

.create_tablesObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/sunnyside/models/db_setup.rb', line 13

def create_tables
  DB.create_table :logins do 
    primary_key :id
    String      :site
    String      :username
    String      :password
    String      :provider
  end

  DB.create_table :charges do 
    primary_key   :id
    foreign_key   :invoice_id, :invoices
    foreign_key   :provider_id, :providers
    Date          :dos
    Float         :amount
    Float         :units
    String        :service_code
    String        :filename
  end

  DB.create_table :invoices do 
    Integer       :invoice_number, :primary_key=>true
    index         :invoice_number
    Float         :amount
    Date          :post_date, :default=>Date.today
    foreign_key   :client_id, :clients
    foreign_key   :provider_id, :providers
    foreign_key   :filelib_id, :filelibs
    Integer       :service_number
    String        :auth
    String        :client_name
    Float         :rate
    Float         :hours
    String        :recipient_id
  end

  DB.create_table :payments do 
    primary_key   :id 
    foreign_key   :provider_id, :providers
    foreign_key   :filelib_id, :filelibs
    Float         :check_total
    Date          :post_date, :default=>Date.today
    String        :status
    Integer       :check_number
  end

  DB.create_table :claims do 
    primary_key   :id
    index         :id
    String        :control_number
    foreign_key   :payment_id, :payments
    foreign_key   :invoice_id, :invoices
    foreign_key   :client_id, :clients
    Float         :paid 
    Float         :billed
    String        :status
    String        :recipient_id
    foreign_key   :provider_id, :providers
    Date          :post_date
  end

  DB.create_table :services do 
    primary_key   :id
    foreign_key   :claim_id, :claims
    foreign_key   :payment_id, :payments
    foreign_key   :invoice_id, :invoices
    foreign_key   :client_id, :clients
    String        :service_code
    Float         :paid
    Float         :billed
    String        :denial_reason
    Float         :units
    Date          :dos
  end

  DB.create_table :clients do
    Integer       :client_number, :primary_key=>true
    String        :client_name
    String        :fund_id
    String        :recipient_id
    foreign_key   :provider_id, :providers
    String        :prov_type, :default=>'MLTC'
    Date          :dob
  end

  DB.create_table :providers do 
    primary_key   :id
    Integer       :credit_account
    Integer       :fund 
    Integer       :debit_account
    String        :name
    String        :abbreviation
    String        :prov_type
    String        :edi_identifier
  end

  DB.create_table :filelibs do
    primary_key   :id
    String        :filename
    String        :purpose
    String        :file_type
    Time          :created_at
  end

  DB.create_table :visits do 
    primary_key :id
    String      :service_code
    String      :modifier
    foreign_key :invoice_id, :invoices
    foreign_key :client_id, :clients
    Float       :amount
    Float       :units
    Date        :dos
  end

  DB.create_table :denials do 
    primary_key :denial_code, :primary_key=>true
    String      :denial_explanation
  end
  
  DB.create_table :authorizations do 
    primary_key :id
    String      :auth
    foreign_key :client_id, :clients
    Integer     :service_id
    Date        :start_date
    Date        :end_date
  end
end

.determine_browserObject



44
45
46
47
48
49
50
# File 'lib/sunnyside/advanced.rb', line 44

def self.determine_browser
  if Dir.exist?("#{DRIVE}/Program Files (x86)")
    Dir.chdir("#{DRIVE}/Program Files (x86)/Mozilla Firefox")
  else
    Dir.chdir("#{DRIVE}/Program Files/Mozilla Firefox")
  end
end

.edi_parserObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sunnyside/ledger/edi.rb', line 2

def self.edi_parser
  print "checking for new files...\n"
  Dir["#{DRIVE}/sunnyside-files/835/*.txt"].each do |file|
    
    if Filelib.where(filename: file).count > 0
      puts "This file has been processed already. File removed."
      File.delete(file) 
    else
      print "processing #{file}...\n"
      file_data = File.open(file)
      data = file_data.read
      # Detect to see if the EDI file already has new lines inserted. If so, the newlines are removed before the file gets processed.

      data.gsub!(/\n/, '')

      data     = data.split(/~CLP\*/)

      edi_file = EdiReader.new(data)
      edi_file.parse_claims
      Filelib.insert(filename: File.basename(file), purpose: '835')
      file_data.close
      FileUtils.mv(file, "#{DRIVE}/sunnyside-files/835/archive/#{File.basename(file)}")  
    end
  end
end

.expiring_authObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sunnyside/expiring_auth.rb', line 2

def self.expiring_auth
  Dir["data/exp auth/*.txt"].each do |file|
    file = File.open(file)
    data = file.read.split("\n").reject { |line| line =~ /\f/}
    data.each { |line| 
      if line =~ /^.{27}\d{7}\s+\d{7}\s/
        client = line.slice!(0..26)
        line   = line.split(' ').keep_if { |elem| elem.length >= 4 }
        data   = ExpiringAuth.new(file, client, line)
        print "#{line}\n"
      end
    }
    file.close
    FileUtils.mv(file, "data/exp auth/previous/#{File.basename(file)}")
  end
  clients = Authorization.map(:client_number).uniq
  clients.each { |client| 
    most_recent_auth = Authorization.where(client_number: client).exclude(auth: 'Blanket').order(:end_date).last
    # that gets the most recent auth that isnt a blanket.
    # visits           = Visit.where(member_id: client).where('dos > ?', most_recent_auth.end_date) if !most_recent_auth.nil?
    # puts "#{client} #{visits.count}" if !visits.nil?
  #   that gets all the visits that has that particular client number that is also GREATER than the most_recent_auth's end date
    # client.each { |x| puts x.client }
    auth_data = Authorization.where(client_number: client)
    auth      = auth_data.order(:end_date).all.last
    AuthReport.new(auth_data, auth).create_csv
  }
end

.ledger_fileObject

This should be redone.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sunnyside/ledger/ledger.rb', line 4

def self.ledger_file
  files = Dir["#{DRIVE}/sunnyside-files/summary/*.PDF"] 
  files.each do |file| 
    if Filelib.where(filename: file).count == 0 
      puts "processing #{file}..."
      ledger = Ledger.new(file)
      ledger.process_file
      Filelib.insert(filename: file, purpose: 'summary')
      FileUtils.mv(file, "#{DRIVE}/sunnyside-files/summary/archive/#{File.basename(file)}")
      ledger.export_to_csv
    end
  end

  if files.size == 0
    puts "It appears there are no new files to process. Do you wish to create a csv file for a specific post date? (Y or N) "
    if gets.chomp.downcase == 'y'
      print "enter the date (YYYY-MM-DD): "
       = Date.parse(gets.chomp)
      puts "File being created..."
      LedgerReport.new()
    end
  end
end

.parse_pdfObject

REG LOC is the only repeating element that would indicate that there’s a new client being read. So instead of reading the pdf report page by page, it would be best to compress the text from every page into a single string and then parse from there.



6
7
8
9
10
11
12
13
14
15
# File 'lib/sunnyside/ledger/auth_report.rb', line 6

def self.parse_pdf
  files = Dir["#{DRIVE}/sunnyside-files/837/*.PDF"].select { |file| Filelib.where(filename: file).count == 0 }
  files.each do |file|
    puts "processing #{file}..."
    data = PDF::Reader.new(file).pages.map { |page| page.raw_content.gsub(/^\(\s|\)'$/, '') }.join
    data.split(/(?=REG\s+LOC)/).each { |entry| ParseInvoice.new(entry).process } 
    Filelib.insert(filename: file, purpose: '837')
    FileUtils.mv(file, "#{DRIVE}/sunnyside-files/837/archive/#{File.basename(file)}")
  end
end

.private_clientsObject



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/sunnyside/reports/private.rb', line 4

def self.private_clients
  Dir.mkdir("#{DRIVE}/sunnyside-files/pdf-reports/private") if !Dir.exist?("#{DRIVE}/sunnyside-files/pdf-reports/private")

  file      = Dir["#{DRIVE}/sunnyside-files/private/archive/*.PDF"].last 
   = Date.parse(File.basename(file)[0..7])
  Invoice.where(post_date: , provider_id: 16).all.each { |inv| puts "#{inv.client_id} #{Client[inv.client_id].client_name}"}
  puts "Type in the IDs next to the client's name, each separated by a space. "
  clients = gets.chomp.split.map { |client| Client[client].client_name }.push('SUNNYSIDE COMMUNITY')

  private_client = PrivateClient.new(file, )
  clients.each { |client| private_client.create_doc(client) }
end

.process_privateObject



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/sunnyside/ledger/private.rb', line 2

def self.process_private
  Dir["#{DRIVE}/sunnyside-files/private/*.PDF"].each do |file| 
    if Filelib.where(filename: file).count == 0 
      puts "processing #{file}..."
      PDF::Reader.new(file).pages.each { |inv| 
        page  = inv.text.split(/\n/)
        InvoiceParse.new(page).process if page.include?('Remit') 
      }
    end
    Filelib.insert(filename: file, purpose: 'private client visit data')
    FileUtils.mv(file, "#{DRIVE}/sunnyside-files/private/archive/#{File.basename(file)}")
  end
end

.queryObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sunnyside/query/query.rb', line 5

def self.query
  puts "1.) VIEW CLIENTS BY PROVIDER"
  puts "2.) "
  case gets.chomp
  when '1'
    Provder.all.each { |prov| puts "#{prov.id}: #{prov.name}"}
    print "Type in the provider ID number: "
    provider = Provider[gets.chomp]
    query = Query.new(provider)
    query.show_options
    # puts 'Type in post date (YYYY-MM-DD)'
    # date = Date.parse(gets.chomp)
    # if date.is_a?(Date)
    #   Invoice.where(post_date: date).all.each { |invoice| Sunnyside.payable_csv(invoice, date) }
    # end
  end
end

.rails_serverObject



36
37
38
39
40
41
42
# File 'lib/sunnyside/advanced.rb', line 36

def self.rails_server
  puts "Please wait..."

  Dir.chdir("R:/Departments/AR Department/sunnyside-app")

  %x(rails s)
end

.run_mco_mltcObject



2
3
4
5
6
7
8
# File 'lib/sunnyside/reports/mco_mltc.rb', line 2

def self.run_mco_mltc
  print "Type in post date (YYYY-MM-DD): "
   = gets.chomp
  Provider.map(:name).each do |provider|
    ReportMCO.new(provider, ).run
  end
end

.run_reportObject



5
6
7
8
9
10
11
12
13
# File 'lib/sunnyside/reports/pdf_report.rb', line 5

def self.run_report
  print "Type in the post date (YYYY-MM-DD): "
   = Date.parse(gets.chomp)
  self.check_prompt { |payment| 
    provider = Provider[payment.provider_id]
    report   = Reporter.new(payment, , provider) 
    report.check_header
  }
end

Instance Method Details

#payable_csv(inv, post_date) ⇒ Object



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
# File 'lib/sunnyside/reports/report.rb', line 51

def payable_csv(inv, )
  prov    = Provider[inv.provider_id]
  if Client[inv.client_id].fund_id.empty?
    puts "Whoops! It appears #{Client[inv.client_id].client_name} for #{prov.name} doesn't have a fund id. Please retrieve it from FUND EZ and type it in now."
    Client.where(client_number: inv.client_id).update(:fund_id => gets.chomp)
  end

  prov_name = if prov.name == 'AMERIGROUP 2'
                'AMERIGROUP'
              else
                prov.name
              end

  fund_id = Client[inv.client_id].fund_id
  CSV.open("#{DRIVE}/sunnyside-files/new-ledger/#{inv.}-IMPORT-FUND-EZ-LEDGER.csv", "a+") do |row|
    row << [1, 
              inv.invoice_number, 
              .strftime('%m/%d/%y'), 
              fund_id, prov_name, .strftime('%m/%d/%y'), 
              "To Record #{.strftime('%m/%d/%y')} Billing", 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}", 
              .strftime('%m/%d/%y'), 
              "To Rec for W/E #{ - 6} Billing", 
              prov.fund, 
              prov.,          
              '', '',             '',              inv.amount,                   '']
    row << [2, 
              inv.invoice_number, 
              .strftime('%m/%d/%y'), 
              fund_id, 
              prov_name, 
              .strftime('%m/%d/%y'), 
              "To Record #{.strftime('%m/%d/%y')} Billing", 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}", 
              .strftime('%m/%d/%y'), 
              "To Rec for W/E #{ - 6} Billing", 
              prov.fund, 
              prov.,   
              prov.fund, '',      prov.prov_type,                     '',     inv.amount]
  end   
end

#receivable_csv(claim, payment, post_date) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/sunnyside/reports/report.rb', line 2

def receivable_csv(claim, payment, )
  total    = claim.paid
  prov     = Provider[claim.provider_id]
  if Client[claim.client_id].fund_id.empty?
    puts "Whoops! It appears #{Client[claim.client_id].client_name} doesn't have a fund id. Please retrieve it from FUND EZ and type it in now."
    Client.where(client_number: claim.client_id).update(:fund_id => gets.chomp)
  end
  fund_id  = Client[claim.client_id].fund_id
  puts "#{total.round(2)} #{Client[claim.client_id].client_name} "
  CSV.open("#{DRIVE}/sunnyside-files/cash_receipts/EDI-citywide-import.csv", "a+") do |row| # #{post_date.gsub(/\//, '-')}-
    row << [1, payment.check_number, 
              , 
              fund_id, 
              claim.invoice_id, 
              claim.invoice_id, 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}", 
              , 
              claim.invoice_id, 
              prov.fund, prov.,'','','', 0,  total]
    row << [2, payment.check_number, 
              , 
              fund_id, 
              claim.invoice_id, 
              claim.invoice_id, 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}",
              , 
              claim.invoice_id, 
              100,         1000,'','','', total,    0]
    row << [3, payment.check_number, 
              , 
              fund_id, 
              claim.invoice_id, 
              claim.invoice_id, 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}",
              , 
              claim.invoice_id, 
              prov.fund,         3990, '', '', '', total, 0]
    row << [4, payment.check_number, 
              , 
              fund_id, 
              claim.invoice_id, 
              claim.invoice_id, 
              "#{.strftime('%m')}/#{.strftime('%y')}#{prov.abbreviation}",
              , 
              claim.invoice_id, 
              100,         3990, '', '', '', 0, total]
  end
end