You are on page 1of 5

/* Formatted on 2020/02/05 13:17 (Formatter Plus v4.8.

7) */
WITH doc AS
(
SELECT a.companycd, c.employeecd, a.doctorcd, a.doctorname,
b.departmentname
FROM doctor0 a JOIN departmentm b
ON ( a.companycd = b.companycd
AND a.departmentcd = b.departmentcd
)
LEFT JOIN userm c
ON (a.companycd = c.companycd AND a.doctorcd = c.userid)
),
op AS
(
SELECT companycd, doctorcd, SUM (op_gross) AS op_gross,
SUM (op_netamount) AS op_netamount
FROM (SELECT a.companycd, a.consdoctorcd AS doctorcd,
SUM (registrationfee) AS op_gross,
SUM (NVL (registrationfee, 0) - NVL (concession, 0)
) AS op_netamount
FROM hmregistration0 a
WHERE TRUNC (registrationdt) BETWEEN '01-JAN-2020'
AND '31-JAN-2020'
AND status = 'A'
GROUP BY companycd, consdoctorcd
UNION ALL
SELECT a.companycd, a.consdoctorcd AS doctorcd,
SUM (consultationfee) AS op_gross,
SUM ( NVL (consultationfee, 0)
- (NVL (concession, 0) + NVL (postdiscount, 0)
)
) AS op_netamount
FROM hmopconsultation0 a
WHERE TRUNC (consultationdt) BETWEEN '01-JAN-2020'
AND '31-JAN-2020'
AND status = 'A'
AND consultationtype <> 'P'
GROUP BY companycd, consdoctorcd
UNION ALL
SELECT companycd, doctorcd,
SUM (NVL (grossamount, 0)) op_gross,
SUM ( NVL (grossamount, 0)
- ( NVL (totaldiscount, 0)
+ NVL (cancelamount, 0)
)
) AS op_netamount
FROM hmopbill0
WHERE TRUNC (billdt) BETWEEN '01-JAN-2020' AND '31-JAN-2020'
AND status = 'A'
GROUP BY companycd, doctorcd)
GROUP BY companycd, doctorcd),
ip AS
(
SELECT a.companycd, a.doctorcd doctorcd,
SUM (a.grossamount) ip_gross,
SUM
(CASE
WHEN a.billtype = 'G'
THEN NVL (a.grossamount, 0)
- NVL (a.concession, 0)
- NVL (a.postdiscount, 0)
WHEN a.billtype = 'P'
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
)
WHEN a.billtype NOT IN ('G', 'P')
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
+ NVL (disallowenceamount, 0)
)
END
) ip_netamount,
SUM
(CASE
WHEN d.isaarogyasri = 'Y'
THEN (CASE
WHEN a.billtype = 'G'
THEN NVL (a.grossamount, 0)
- NVL (a.concession, 0)
- NVL (a.postdiscount, 0)
WHEN a.billtype = 'P'
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
)
WHEN a.billtype NOT IN ('G', 'P')
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
+ NVL (disallowenceamount, 0)
)
END
)
ELSE 0
END
) AS aarogyasri_rev,
SUM
(CASE
WHEN d.organizationtype = 'I'
THEN (CASE
WHEN a.billtype = 'G'
THEN NVL (a.grossamount, 0)
- NVL (a.concession, 0)
- NVL (a.postdiscount, 0)
WHEN a.billtype = 'P'
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
)
WHEN a.billtype NOT IN ('G', 'P')
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
+ NVL (disallowenceamount, 0)
)
END
)
ELSE 0
END
) AS ip_insurance_rev,
SUM
(CASE
WHEN d.organizationtype = 'C'
THEN (CASE
WHEN a.billtype = 'G'
THEN NVL (a.grossamount, 0)
- NVL (a.concession, 0)
- NVL (a.postdiscount, 0)
WHEN a.billtype = 'P'
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
)
WHEN a.billtype NOT IN ('G', 'P')
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
+ NVL (disallowenceamount, 0)
)
END
)
ELSE 0
END
) AS ip_corporate_rev,
SUM
(CASE
WHEN NVL (d.organizationtype, 'CASH') NOT IN
('C', 'I')
AND NVL (d.isaarogyasri, 'CASH') NOT IN ('Y')
THEN (CASE
WHEN a.billtype = 'G'
THEN NVL (a.grossamount, 0)
- NVL (a.concession, 0)
- NVL (a.postdiscount, 0)
WHEN a.billtype = 'P'
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
)
WHEN a.billtype NOT IN ('G', 'P')
THEN NVL (a.corpgrossamount, 0)
- ( NVL (a.orgconcession, 0)
+ NVL (a.postdiscount, 0)
+ NVL (a.concession, 0)
+ NVL (disallowenceamount, 0)
)
END
)
ELSE 0
END
) AS ip_cash
FROM vw_ipfinalbill0_details a LEFT JOIN organizationm d
ON (a.orgcd = d.organizationcd AND a.companycd = d.companycd
)
WHERE TRUNC (billdt) BETWEEN '01-JAN-2020' AND '31-JAN-2020'
AND status = 'A'
GROUP BY a.companycd, a.doctorcd),
adm AS
(
SELECT a.companycd, a.consdoctorcd doctorcd, COUNT (*) AS admn_cnt,
SUM (CASE
WHEN d.isaarogyasri = 'Y'
THEN 1
ELSE 0
END
) AS aarogyasri_cnt,
SUM (CASE
WHEN d.organizationtype = 'I'
THEN 1
ELSE 0
END
) AS ip_insurance_cnt,
SUM (CASE
WHEN d.organizationtype = 'C'
THEN 1
ELSE 0
END
) AS ip_corporate_cnt,
SUM
(CASE
WHEN NVL (d.organizationtype, 'CASH') NOT IN
('C', 'I')
AND NVL (d.isaarogyasri, 'CASH') NOT IN ('Y')
THEN 1
ELSE 0
END
) AS ip_cash_cnt
FROM hmipadmission0 a LEFT JOIN organizationm d
ON ( a.paymentcd = d.organizationcd
AND a.companycd = d.companycd
)
WHERE TRUNC (admissiondt) BETWEEN '01-JAN-2020' AND '31-JAN-2020'
AND a.status = 'A'
GROUP BY a.companycd, a.consdoctorcd),
cons AS
(
SELECT companycd, consdoctorcd doctorcd, COUNT (*) AS cons_cnt
FROM hmopconsultation0
WHERE TRUNC (consultationdt) BETWEEN '01-JAN-2020' AND '31-JAN-2020'
AND status = 'A'
GROUP BY companycd, consdoctorcd),
phar AS
(SELECT companycd, doctorcd, SUM (consumables) AS consumables
FROM (SELECT b.companycd, a.doctorcd,
SUM (b.purcvalue) consumables
FROM vwst_stsdbp1wr b JOIN vwst_stsdbp0 a
ON ( a.companycd = b.companycd
AND a.locationcd = b.locationcd
AND a.billno = b.trnno
AND a.stpointcd = b.stpointcd
AND a.itemlevel0 = b.itemlevel0
AND a.status = b.status
AND billtype = 'I'
)
WHERE TRUNC (billdt) BETWEEN '01-JAN-2020' AND '31-JAN-2020'
GROUP BY b.companycd, a.doctorcd)
GROUP BY companycd, doctorcd)
SELECT 'FEB' AS mon_year, doc.companycd, doc.doctorcd, doc.doctorname,
doc.departmentname, NVL (op_gross, 0) AS op_gross,
NVL (op_netamount, 0) op_netamount, NVL (ip_gross, 0) ip_gross,
NVL (ip_netamount, 0) ip_netamount,
(aarogyasri_rev) AS aarogyasri__rev, ip_insurance_rev,
ip_corporate_rev, ip_cash,
NVL (op_gross, 0) + NVL (ip_gross, 0) total_gross,
NVL (op_netamount, 0) + NVL (ip_netamount, 0) total_netamount,
NVL (cons_cnt, 0) op_consultations_cnt,
NVL (admn_cnt, 0) AS admissions_cnt, aarogyasri_cnt,
ip_insurance_cnt, ip_corporate_cnt, ip_cash_cnt,
NVL (consumables, 0) AS ip_consumables
FROM doc LEFT JOIN op
ON (doc.companycd = op.companycd AND doc.doctorcd = op.doctorcd)
LEFT JOIN ip
ON (doc.companycd = ip.companycd AND doc.doctorcd = ip.doctorcd)
LEFT JOIN cons
ON (doc.companycd = cons.companycd AND doc.doctorcd = cons.doctorcd)
LEFT JOIN phar
ON (doc.companycd = phar.companycd AND doc.doctorcd = phar.doctorcd)
LEFT JOIN adm
ON (doc.companycd = adm.companycd AND doc.doctorcd = adm.doctorcd)
ORDER BY total_netamount DESC, 4;

You might also like