Quantcast
Channel: Ruby – IT Answers
Viewing all articles
Browse latest Browse all 9

Translate Ruby Script to SQL Query?

$
0
0

I need help translating a ruby script to SQL query. I’m a SQL noob. Help please.

[em]here is the script.[/em]

require “rubygems” require “ruport”

SQL = <<-EOS SELECT     tv.ApptDate, tv.PatName, tv.PatFirst, tv.PatLast, tv.Phone, tv.ApptTime, tv.Provlast, tv.ProvFirst, tv.ProvTitle, tv.Clinic, tv.Age, tv.Notes FROM (

 /* SECOND LEVEL, this brings out cliniccode from the main query so we can test for new patients against it in the case statements here */

 SELECT     dt.ApptDate, dt.PATNAME,

  (case    when firstname IS NULL THEN substring(patname, charindex(‘,’, patname) + 2, 99)    else firstname END) AS PatFirst,

  (case   when lastname IS NULL THEN substring(patname, 1, charindex(‘,’, patname) – 1)                                        else lastname END) AS PatLast,

  dt.PHONE, dt.ApptTime, dt.ProvLast, dt.ProvFirst, dt.ProvTitle, dt.Clinic,  pat.MEDALERT,

  (case    when birthdate < GETDATE()-23725 then ’2′ Else ’1′ End) As Age,

  (case    when exists    (select patid, adacode, clinicappliedto     from dbo.ddb_proc_log pl1 inner join dbo.ddb_proc_code pc1 on pl1.proc_codeid = pc1.proc_codeid and pl1.proc_codedb = pc1.proc_codedb     where dt.patid = pl1.patid and substring(pc1.adacode,1,1)=’D’ and pl1.clinicappliedto = dt.cliniccode) then ‘ ‘     when exists    (select patid, adacode     from dbo.ddb_proc_log pl1 inner join dbo.ddb_proc_code pc1 on pl1.proc_codeid = pc1.proc_codeid and pl1.proc_codedb = pc1.proc_codedb     where dt.patid = pl1.patid and substring(pc1.adacode,1,1)=’D’ ) then ‘NClin’    Else ‘New’ END) As Notes

    FROM           /* Core of the query is here. */   (SELECT     CONVERT(char(10), a.APPTDATE, 101) AS ApptDate, a.PATNAME, a.PHONE,          CAST(a.TIME_HOUR AS varchar(2))  + ‘:’ + RIGHT(’00′ + CAST(a.TIME_MINUTE AS varchar(2)), 2) AS ApptTime,          dbo.DDB_RSC_BASE.NAME_LAST AS ProvLast,  dbo.DDB_RSC_BASE.NAME_FIRST AS ProvFirst,          dbo.DDB_RSC_BASE.NAME_TITLE AS ProvTitle, patid,                                                   (SELECT     rscid                                                     FROM          dbo.ddb_rsc_base                                                     WHERE      rsctype = 0 AND urscid =                                                                                (SELECT     defaultclinic                                                                                  FROM          dbo.ddb_rsc_base                                                                                  WHERE      urscid = a.opid AND rsctype = 3)) AS Clinic,                                                   (SELECT     defaultclinic                                                     FROM          dbo.ddb_rsc_base                                                     WHERE      urscid = a.opid AND rsctype = 3) AS ClinicCode   FROM          dbo.DDB_APPT a INNER JOIN dbo.DDB_RSC_BASE ON a.PRPROVID = dbo.DDB_RSC_BASE.URSCID                           WHERE      (a.APPTDATE =CONVERT(varchar, GETDATE()+2, 101) )) dt   /* end of core query — derived table is dt*/

  INNER JOIN dbo.DDB_PAT pat ON pat.PATID = dt.patid) tv

  /* end of second level, using cliniccode from Core query with case statement to make note field; we also join ddb_pat here and bring in firstname, lastname and medalert */   WHERE  not (provlast=patlast and provfirst = patfirst)  and not (provlast = patlast and (patfirst = ‘Dr. ‘+ substring (patfirst,5,len(patfirst)))) and not (provlast+ ‘ D.D.S’ = patlast and patfirst = provfirst) and not (len(isnull(phone,’ ‘))<7) and not (clinic = ‘KB’)

EOS

Ruport::Config.source :default, :dsn => “dbi:odbc:dentrix”, :user => “enterprise”, :password => “d123″

Ruport::Report.new.instance_eval do   @report = Ruport::Query.new(SQL).result.to_csv   @file   = ARGV[0] || “televox.csv”   generate_report end

 

 


Viewing all articles
Browse latest Browse all 9

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>