VistA-WorldVistAEHR/r/CLINICAL_CASE_REGISTRIES-ROR/RORX009.m

168 lines
5.0 KiB
Mathematica

RORX009 ;HCIOFO/SG - PHARMACY PRESCRIPTION UTILIZATION ; 11/16/05 10:49am
;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
;
Q
;
;***** OUTPUTS THE REPORT HEADER
;
; PARTAG Reference (IEN) to the parent tag
;
; Return Values:
; <0 Error code
; >0 IEN of the HEADER element
;
HEADER(PARTAG) ;
;;DOSES(NP,IPNRX)^I $$PARAM^RORTSK01("PATIENTS","INPATIENT")
;;DRUGS_DOSES(#,NAME,NP,IPNRX,MAXNRPP,MAXNP)
;;DRUGS_FILLS(#,NAME,NP,OPNRX,MAXNRPP,MAXNP)
;;FILLS(NP,OPNRX)^I $$PARAM^RORTSK01("PATIENTS","OUTPATIENT")
;;HU_DOSES(#,NAME,LAST4,DOD,IPNRX,ND)^I $$PARAM^RORTSK01("PATIENTS","INPATIENT")
;;HU_FILLS(#,NAME,LAST4,DOD,OPNRX,ND)^I $$PARAM^RORTSK01("PATIENTS","OUTPATIENT")
;;HU_NRX(#,NAME,LAST4,DOD,OPNRX,IPNRX,ND)^I $$PARAM^RORTSK01("PATIENTS","OUTPATIENT"),$$PARAM^RORTSK01("PATIENTS","INPATIENT")
;
N HEADER,RC
S HEADER=$$HEADER^RORXU002(.RORTSK,PARTAG)
Q:HEADER<0 HEADER
S RC=$$TBLDEF^RORXU002("HEADER^RORX009",HEADER)
Q $S(RC<0:RC,1:HEADER)
;
;***** OUTPUTS THE PARAMETERS TO THE REPORT
;
; PARTAG Reference (IEN) to the parent tag
;
; [.STDT] Start and end dates of the report
; [.ENDT] are returned via these parameters
;
; [.FLAGS] Flags for the $$SKIP^RORXU005 are
; returned via this parameter
;
; Return Values:
; <0 Error code
; >0 IEN of the PARAMETERS element
;
PARAMS(PARTAG,STDT,ENDT,FLAGS) ;
N PARAMS,TMP
S PARAMS=$$PARAMS^RORXU002(.RORTSK,PARTAG,.STDT,.ENDT,.FLAGS)
Q:PARAMS<0 PARAMS
;--- Process the drug list and options
S TMP=$$DRUGLST^RORXU007(.RORTSK,PARAMS,.RORXL,.RORXGRP)
Q:TMP<0 TMP
;--- Additional parameters
F NAME="MAXUTNUM" D
. S TMP=$$PARAM^RORTSK01(NAME)
. D:TMP'="" ADDVAL^RORTSK11(RORTSK,NAME,TMP,PARAMS)
;---
Q PARAMS
;
;***** COMPILES THE "PHARMACY PRESCRIPTION UTILIZATION" REPORT
; REPORT CODE: 009
;
; .RORTSK Task number and task parameters
;
; The ^TMP("RORX009",$J) global node is used by this function.
;
; ^TMP("RORX009",$J,
;
; "IP", Number of inpatients
; DFN, Patient's data
; ^01: Last 4 digits of SSN
; ^02: Name
; ^03: Date of Death
; ^04: Total number of doses
; ^05: Number of different drugs
; "D",
; DrugIEN) Quantity
;
; "IPD", Number of different drugs
; DrugIEN, Drug Name
; "D") Number of doses
; "M") Maximum
; ^01: Maximum number of doses
; ^02: Number of patients
; "P") Number of patients
; "B",
; NumOfDoses,
; DrugName,
; DrugIEN) ""
;
; "IPRX", Total number of doses
; NumOfDoses, Number of patients
; PatientName,
; DFN) ""
;
; "OP", Number of outpatients
; DFN, Patient's data
; ^01: Last 4 digits of SSN
; ^02: Name
; ^03: Date of Death
; ^04: Total number of fills
; ^05: Number of different drugs
; "D",
; DrugIEN) Quantity
;
; "OPD", Number of different drugs
; DrugIEN, Drug Name
; "D") Number of fills
; "M") Maximum
; ^01: Maximum number of fills
; ^02: Number of patients
; "P") Number of patients
; "B",
; NumOfFills,
; DrugName,
; DrugIEN) ""
;
; "OPRX", Total number of fills
; NumOfFills, Number of patients
; PatientName,
; DFN) ""
;
; "SUMRX",
; NumberOfRX, Number of patients
; PatientName,
; DFN, Number of different drugs
; "IP")
; "OP")
;
; Return Values:
; <0 Error code
; 0 Ok
;
RXUTIL(RORTSK) ;
N ROREDT ; End date
N RORREG ; Registry IEN
N RORSDT ; Start date
N RORXGRP ; List of drug groups
N RORXL ; List of drugs for the pharmacy search API
;
N ECNT,RC,REPORT,SFLAGS,TMP
S RORXL="",(ECNT,RC)=0
K ^TMP("RORX009",$J)
;--- Root node of the report
S REPORT=$$ADDVAL^RORTSK11(RORTSK,"REPORT")
Q:REPORT<0 REPORT
;
D
. ;--- Get and prepare the report parameters
. S RORREG=$$PARAM^RORTSK01("REGIEN")
. S RC=$$PARAMS(REPORT,.RORSDT,.ROREDT,.SFLAGS) Q:RC<0
. ;--- Report header
. S RC=$$HEADER(REPORT) Q:RC<0
. ;--- Query the registry
. D TPPSETUP^RORTSK01(80)
. S RC=$$QUERY^RORX009A(SFLAGS)
. I RC Q:RC<0 S ECNT=ECNT+RC
. ;--- Sort the data
. D TPPSETUP^RORTSK01(10)
. S RC=$$SORT^RORX009A()
. I RC Q:RC<0 S ECNT=ECNT+RC
. ;--- Store the results
. D TPPSETUP^RORTSK01(10)
. S RC=$$STORE^RORX009C(REPORT)
. I RC Q:RC<0 S ECNT=ECNT+RC
;
;--- Cleanup
K ^TMP("RORX009",$J)
D FREE^RORTMP(RORXL)
Q $S(RC<0:RC,ECNT>0:-43,1:0)