Guest User

Untitled

a guest
Nov 27th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require 'nokogiri'
  4. require 'active_record'
  5. require "sqljdbc4.jar"
  6.  
  7. ActiveRecord::Base.establish_connection(
  8. :adapter => "jdbcmssql",
  9. :driver => "com.microsoft.sqlserver.jdbc.SQLServerDriver",
  10. :url => "jdbc:sqlserver://192.168.0.18;databaseName=oms_db_cod_12",
  11. :username => "secret",
  12. :password => "secret"
  13. )
  14.  
  15. class Lpu < ActiveRecord::Base
  16. set_table_name "oms_LPU"
  17. set_primary_key "LPUID"
  18.  
  19. has_many :doctors
  20. end
  21.  
  22. class Doctor < ActiveRecord::Base
  23. set_table_name "oms_DOCTOR"
  24. set_primary_key "DOCTORID"
  25.  
  26. belongs_to :lpu, :foreign_key => "rf_LPUID"
  27. end
  28.  
  29. @filepath = ARGV[0]
  30. @doc = Nokogiri::XML(File.open(@filepath))
  31.  
  32. def check_mcodes
  33. @mcodes = @doc.xpath('//PHARMACYRECIPE/MCOD/text()').map(&:to_s).uniq
  34. @lpu_counts = @mcodes.select { |mcode| Lpu.where(:MCOD => mcode).count > 1 }
  35. unless @lpu_counts.empty?
  36. puts "DUPLICATED MCODES: #{@lpu_counts.join(', ')}"
  37. end
  38. end
  39.  
  40. def check_pcodes
  41. @recepies = @doc.xpath("//PHARMACYRECIPE")
  42. @codes = @recepies.reduce([]) do |memo, r|
  43. memo << [r.xpath("V_C_OGRN/text()").to_s, r.xpath("PCOD/text()").to_s]
  44. end.uniq
  45. @code_counts = @codes.reduce([]) do |memo, codes|
  46. ogrn = codes[0]
  47. pcod = codes[1]
  48. memo << [codes, Doctor.joins(:lpu).where("oms_DOCTOR.PCOD = ? and oms_LPU.C_OGRN = ?", pcod, ogrn).count]
  49. end.select do |pairs|
  50. pairs[1] > 1
  51. end
  52. @code_counts.each do |pair|
  53. puts "#{pair[1]} for OGRN #{pair[0][0]} and PCOD #{pair[0][1]}"
  54. end
  55. end
  56.  
  57. check_mcodes
  58. check_pcodes
Add Comment
Please, Sign In to add comment