Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require 'nokogiri'
- require 'active_record'
- require "sqljdbc4.jar"
- ActiveRecord::Base.establish_connection(
- :adapter => "jdbcmssql",
- :driver => "com.microsoft.sqlserver.jdbc.SQLServerDriver",
- :url => "jdbc:sqlserver://192.168.0.18;databaseName=oms_db_cod_12",
- :username => "secret",
- :password => "secret"
- )
- class Lpu < ActiveRecord::Base
- set_table_name "oms_LPU"
- set_primary_key "LPUID"
- has_many :doctors
- end
- class Doctor < ActiveRecord::Base
- set_table_name "oms_DOCTOR"
- set_primary_key "DOCTORID"
- belongs_to :lpu, :foreign_key => "rf_LPUID"
- end
- @filepath = ARGV[0]
- @doc = Nokogiri::XML(File.open(@filepath))
- def check_mcodes
- @mcodes = @doc.xpath('//PHARMACYRECIPE/MCOD/text()').map(&:to_s).uniq
- @lpu_counts = @mcodes.select { |mcode| Lpu.where(:MCOD => mcode).count > 1 }
- unless @lpu_counts.empty?
- puts "DUPLICATED MCODES: #{@lpu_counts.join(', ')}"
- end
- end
- def check_pcodes
- @recepies = @doc.xpath("//PHARMACYRECIPE")
- @codes = @recepies.reduce([]) do |memo, r|
- memo << [r.xpath("V_C_OGRN/text()").to_s, r.xpath("PCOD/text()").to_s]
- end.uniq
- @code_counts = @codes.reduce([]) do |memo, codes|
- ogrn = codes[0]
- pcod = codes[1]
- memo << [codes, Doctor.joins(:lpu).where("oms_DOCTOR.PCOD = ? and oms_LPU.C_OGRN = ?", pcod, ogrn).count]
- end.select do |pairs|
- pairs[1] > 1
- end
- @code_counts.each do |pair|
- puts "#{pair[1]} for OGRN #{pair[0][0]} and PCOD #{pair[0][1]}"
- end
- end
- check_mcodes
- check_pcodes
Add Comment
Please, Sign In to add comment