- RORUTL14 ;HCIOFO/BH,SG - PHARMACY DATA SEARCH ; 12/13/05 2:16pm
- ;;1.5;CLINICAL CASE REGISTRIES;**28**;Feb 17, 2006;Build 66
- ;
- ;
- ;******************************************************************************
- ;PKG/PATCH DATE DEVELOPER MODIFICATION
- ;----------- ---------- ----------- ----------------------------------------
- ;ROR*1.5*28 APR 2016 T KOPP Document DAA/in house parameter.
- ;******************************************************************************
- Q
- ;
- ;***** SEARCHES THE PHARMACY DATA
- ;
- ; PATIEN IEN of the patient (DFN)
- ;
- ; ROR8RXS Closed root of a variable, which contains a list
- ; of drugs of interest (in the same format as
- ; the list returned by the $$DRUGLIST^RORUTL16).
- ;
- ; If the "*" is passed via this parameter then all
- ; pharmacy orders tests are considered.
- ;
- ; If this parameter has a pure numeric value then
- ; it is considered as registry IEN and the default
- ; list of registry specific drugs is automatically
- ; compiled by the $$DRUGLIST^RORUTL16 function.
- ;
- ; [[.]ROR8DST] Closed root of an array where the data will be
- ; returned (the ^TMP("RORUTL14",$J), by default).
- ; The data will be stored into the destination
- ; array in following format:
- ;
- ; @ROR8DST@(i, Additional drug information
- ; ^01: Order number
- ; ^02: Flags describing the order:
- ; I Inpatient dose
- ; O Outpatient fill
- ; P Pending
- ; V IV
- ; ^03: Generic drug IEN (file #50.6)
- ; ^04: Generic drug name
- ; ^05: Drug class IEN (file #50.605)
- ; ^06: Drug class code
- ; 0) Detailed information on pharmacy
- ; "RXN",0) order loaded by the OEL^PSOORRL
- ; ...
- ;
- ; Example:
- ; S RORDST=$NA(^TMP("RORTMP",$J))
- ; S RC=$$RXSEARCH^RORUTL14(DFN,REGIEN,RORDST)
- ;
- ; If this parameter is passed by reference, you can
- ; provide a full name ($$TAG^ROUTINE) of the callback
- ; function, which will process and store the results,
- ; as the value of the "RORCB" node.
- ;
- ; Any additional nodes created in this variable will
- ; be accessible in the callback function. The following
- ; nodes are created automatically:
- ;
- ; "RORDFN" IEN of the registry patient (DFN)
- ;
- ; "ROREDT" End date
- ;
- ; "RORFLAGS" Value of parameter of the same name
- ;
- ; "RORSDT" Start date
- ;
- ; "RORXGEN" Generic drug
- ; ^01: Drug IEN in file #50.6
- ; ^02: Generic drug name
- ;
- ; "RORXVCL" VA Drug class
- ; ^01: Class IEN in file #50.605
- ; ^02: Class code
- ;
- ; The callback function must accept 5 parameters:
- ;
- ; .ROR8DST Reference to the ROR8DST parameter
- ; passed into the $$RXSEARCH function.
- ;
- ; ORDER Order number (from condensed list)
- ;
- ; FLAGS Flags describing the order to be
- ; processed.
- ;
- ; DRUG Dispensed drug
- ; ^01: Drug IEN in file #50
- ; ^02: Drug name
- ;
- ; DATE Order date (issue date for outpatient
- ; drugs or start date for inpatient)
- ;
- ; The ^TMP("PS",$J) global node contains the data
- ; returned by the OEL^PSOORRL procedure (see the
- ; DBIA #2400 for details).
- ;
- ; The callback function is called for each additive
- ; included in the IV order; the ^TMP("PS",$J) is
- ; loaded once and stays the same for all of them.
- ;
- ; The function should return the following values:
- ;
- ; <0 Error code (the search will be aborted)
- ; 0 Ok
- ; 1 Skip this pharmacy order
- ; 2 Skip this and all remaining orders
- ;
- ; Example:
- ; S RORDST=$NA(^TMP("RORBUF",$J))
- ; S RORDST("RORPTR")=+$O(@RORDST@(""),-1)
- ; S RORDST("RORCB")="$$RXCB^RORUT999"
- ; S RC=$$RXSEARCH^RORUTL14(DFN,REGIEN,.RORDST)
- ;
- ; [RORFLAGS] Flags to control processing:
- ; E Load external values for additional fields
- ; stored into the output array or passed to
- ; the callback function. Affected fields
- ; have the (E) marker.
- ; I Include inpatient doses
- ; O Include outpatient fills
- ; P Include pending orders
- ; V Include IV
- ; C Include only DAA Drug (remarks contains CHOICE)
- ; H Include only In-house drug (remarks doesn't contain CHOICE)
- ;
- ; If this parameter has no value ($G(RORFLAGS)="")
- ; then the default set of flags is used: "IO".
- ;
- ; RORSDT Start date (FileMan)
- ; [ROREDT] End date (FileMan)
- ;
- ; The search is performed exactly between provided
- ; boundaries (the time parts are considered).
- ;
- ; The following global nodes are used by the function:
- ;
- ; ^TMP("PS",$J) The OCL^PSOORRL and OEL^PSOORRL procedures
- ; return the results into this node.
- ;
- ; ^TMP("RORUTL14",$J) If the name of the destination array is
- ; not provided via the ROR8DST parameter
- ; then the $$RXSEARCH returns the results
- ; under this node.
- ;
- ; ^TMP("RORUTL14L",$J) If the ROR8RXS parameter is undefined
- ; then a temporary list of registry specific
- ; drugs is compiled under this node.
- ;
- ; Return Values:
- ; <0 Error code
- ; 0 No ordes have been found
- ; >0 Number of pharmacy orders
- ;
- RXSEARCH(PATIEN,ROR8RXS,ROR8DST,RORFLAGS,RORSDT,ROREDT) ;
- N RC,ROR8SET,RORXLST,TMP
- S:$G(ROR8DST)="" ROR8DST=$NA(^TMP("RORUTL14",$J))
- S RORFLAGS=$S($G(RORFLAGS)'="":RORFLAGS,1:"IO")
- Q:$TR(RORFLAGS,"IO")=RORFLAGS 0 ; Neither Inpatient nor Outpatient
- Q:$G(ROR8RXS)="" 0 ; No drugs to search for
- ;---
- S:$G(ROREDT)'>0 ROREDT=DT
- S RORXLST=$$ALLOC^RORTMP(),RC=0
- ;
- D
- . ;--- Prepare the list of drugs of interest
- . I (+ROR8RXS)=ROR8RXS D Q:RC'>0
- . . S TMP=ROR8RXS,ROR8RXS=$$ALLOC^RORTMP()
- . . S RC=$$DRUGLIST^RORUTL16(ROR8RXS,TMP)
- . I ROR8RXS'="*",$D(@ROR8RXS)<10 S RC=0 Q
- . ;--- Preselect pharmacy orders
- . S RC=$$QUERY^RORUTL15(PATIEN,RORFLAGS,RORSDT,ROREDT,RORXLST)
- . Q:RC'>0
- . ;--- Process selected orders
- . S RC=$$PROCESS^RORUTL15(PATIEN,RORFLAGS,RORXLST)
- . Q:RC'>0
- ;
- ;--- Cleanup
- D POP^RORTMP(RORXLST)
- Q RC
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRORUTL14 7736 printed Jan 18, 2025@02:45:19 Page 2
- RORUTL14 ;HCIOFO/BH,SG - PHARMACY DATA SEARCH ; 12/13/05 2:16pm
- +1 ;;1.5;CLINICAL CASE REGISTRIES;**28**;Feb 17, 2006;Build 66
- +2 ;
- +3 ;
- +4 ;******************************************************************************
- +5 ;PKG/PATCH DATE DEVELOPER MODIFICATION
- +6 ;----------- ---------- ----------- ----------------------------------------
- +7 ;ROR*1.5*28 APR 2016 T KOPP Document DAA/in house parameter.
- +8 ;******************************************************************************
- +9 QUIT
- +10 ;
- +11 ;***** SEARCHES THE PHARMACY DATA
- +12 ;
- +13 ; PATIEN IEN of the patient (DFN)
- +14 ;
- +15 ; ROR8RXS Closed root of a variable, which contains a list
- +16 ; of drugs of interest (in the same format as
- +17 ; the list returned by the $$DRUGLIST^RORUTL16).
- +18 ;
- +19 ; If the "*" is passed via this parameter then all
- +20 ; pharmacy orders tests are considered.
- +21 ;
- +22 ; If this parameter has a pure numeric value then
- +23 ; it is considered as registry IEN and the default
- +24 ; list of registry specific drugs is automatically
- +25 ; compiled by the $$DRUGLIST^RORUTL16 function.
- +26 ;
- +27 ; [[.]ROR8DST] Closed root of an array where the data will be
- +28 ; returned (the ^TMP("RORUTL14",$J), by default).
- +29 ; The data will be stored into the destination
- +30 ; array in following format:
- +31 ;
- +32 ; @ROR8DST@(i, Additional drug information
- +33 ; ^01: Order number
- +34 ; ^02: Flags describing the order:
- +35 ; I Inpatient dose
- +36 ; O Outpatient fill
- +37 ; P Pending
- +38 ; V IV
- +39 ; ^03: Generic drug IEN (file #50.6)
- +40 ; ^04: Generic drug name
- +41 ; ^05: Drug class IEN (file #50.605)
- +42 ; ^06: Drug class code
- +43 ; 0) Detailed information on pharmacy
- +44 ; "RXN",0) order loaded by the OEL^PSOORRL
- +45 ; ...
- +46 ;
- +47 ; Example:
- +48 ; S RORDST=$NA(^TMP("RORTMP",$J))
- +49 ; S RC=$$RXSEARCH^RORUTL14(DFN,REGIEN,RORDST)
- +50 ;
- +51 ; If this parameter is passed by reference, you can
- +52 ; provide a full name ($$TAG^ROUTINE) of the callback
- +53 ; function, which will process and store the results,
- +54 ; as the value of the "RORCB" node.
- +55 ;
- +56 ; Any additional nodes created in this variable will
- +57 ; be accessible in the callback function. The following
- +58 ; nodes are created automatically:
- +59 ;
- +60 ; "RORDFN" IEN of the registry patient (DFN)
- +61 ;
- +62 ; "ROREDT" End date
- +63 ;
- +64 ; "RORFLAGS" Value of parameter of the same name
- +65 ;
- +66 ; "RORSDT" Start date
- +67 ;
- +68 ; "RORXGEN" Generic drug
- +69 ; ^01: Drug IEN in file #50.6
- +70 ; ^02: Generic drug name
- +71 ;
- +72 ; "RORXVCL" VA Drug class
- +73 ; ^01: Class IEN in file #50.605
- +74 ; ^02: Class code
- +75 ;
- +76 ; The callback function must accept 5 parameters:
- +77 ;
- +78 ; .ROR8DST Reference to the ROR8DST parameter
- +79 ; passed into the $$RXSEARCH function.
- +80 ;
- +81 ; ORDER Order number (from condensed list)
- +82 ;
- +83 ; FLAGS Flags describing the order to be
- +84 ; processed.
- +85 ;
- +86 ; DRUG Dispensed drug
- +87 ; ^01: Drug IEN in file #50
- +88 ; ^02: Drug name
- +89 ;
- +90 ; DATE Order date (issue date for outpatient
- +91 ; drugs or start date for inpatient)
- +92 ;
- +93 ; The ^TMP("PS",$J) global node contains the data
- +94 ; returned by the OEL^PSOORRL procedure (see the
- +95 ; DBIA #2400 for details).
- +96 ;
- +97 ; The callback function is called for each additive
- +98 ; included in the IV order; the ^TMP("PS",$J) is
- +99 ; loaded once and stays the same for all of them.
- +100 ;
- +101 ; The function should return the following values:
- +102 ;
- +103 ; <0 Error code (the search will be aborted)
- +104 ; 0 Ok
- +105 ; 1 Skip this pharmacy order
- +106 ; 2 Skip this and all remaining orders
- +107 ;
- +108 ; Example:
- +109 ; S RORDST=$NA(^TMP("RORBUF",$J))
- +110 ; S RORDST("RORPTR")=+$O(@RORDST@(""),-1)
- +111 ; S RORDST("RORCB")="$$RXCB^RORUT999"
- +112 ; S RC=$$RXSEARCH^RORUTL14(DFN,REGIEN,.RORDST)
- +113 ;
- +114 ; [RORFLAGS] Flags to control processing:
- +115 ; E Load external values for additional fields
- +116 ; stored into the output array or passed to
- +117 ; the callback function. Affected fields
- +118 ; have the (E) marker.
- +119 ; I Include inpatient doses
- +120 ; O Include outpatient fills
- +121 ; P Include pending orders
- +122 ; V Include IV
- +123 ; C Include only DAA Drug (remarks contains CHOICE)
- +124 ; H Include only In-house drug (remarks doesn't contain CHOICE)
- +125 ;
- +126 ; If this parameter has no value ($G(RORFLAGS)="")
- +127 ; then the default set of flags is used: "IO".
- +128 ;
- +129 ; RORSDT Start date (FileMan)
- +130 ; [ROREDT] End date (FileMan)
- +131 ;
- +132 ; The search is performed exactly between provided
- +133 ; boundaries (the time parts are considered).
- +134 ;
- +135 ; The following global nodes are used by the function:
- +136 ;
- +137 ; ^TMP("PS",$J) The OCL^PSOORRL and OEL^PSOORRL procedures
- +138 ; return the results into this node.
- +139 ;
- +140 ; ^TMP("RORUTL14",$J) If the name of the destination array is
- +141 ; not provided via the ROR8DST parameter
- +142 ; then the $$RXSEARCH returns the results
- +143 ; under this node.
- +144 ;
- +145 ; ^TMP("RORUTL14L",$J) If the ROR8RXS parameter is undefined
- +146 ; then a temporary list of registry specific
- +147 ; drugs is compiled under this node.
- +148 ;
- +149 ; Return Values:
- +150 ; <0 Error code
- +151 ; 0 No ordes have been found
- +152 ; >0 Number of pharmacy orders
- +153 ;
- RXSEARCH(PATIEN,ROR8RXS,ROR8DST,RORFLAGS,RORSDT,ROREDT) ;
- +1 NEW RC,ROR8SET,RORXLST,TMP
- +2 if $GET(ROR8DST)=""
- SET ROR8DST=$NAME(^TMP("RORUTL14",$JOB))
- +3 SET RORFLAGS=$SELECT($GET(RORFLAGS)'="":RORFLAGS,1:"IO")
- +4 ; Neither Inpatient nor Outpatient
- if $TRANSLATE(RORFLAGS,"IO")=RORFLAGS
- QUIT 0
- +5 ; No drugs to search for
- if $GET(ROR8RXS)=""
- QUIT 0
- +6 ;---
- +7 if $GET(ROREDT)'>0
- SET ROREDT=DT
- +8 SET RORXLST=$$ALLOC^RORTMP()
- SET RC=0
- +9 ;
- +10 Begin DoDot:1
- +11 ;--- Prepare the list of drugs of interest
- +12 IF (+ROR8RXS)=ROR8RXS
- Begin DoDot:2
- +13 SET TMP=ROR8RXS
- SET ROR8RXS=$$ALLOC^RORTMP()
- +14 SET RC=$$DRUGLIST^RORUTL16(ROR8RXS,TMP)
- End DoDot:2
- if RC'>0
- QUIT
- +15 IF ROR8RXS'="*"
- IF $DATA(@ROR8RXS)<10
- SET RC=0
- QUIT
- +16 ;--- Preselect pharmacy orders
- +17 SET RC=$$QUERY^RORUTL15(PATIEN,RORFLAGS,RORSDT,ROREDT,RORXLST)
- +18 if RC'>0
- QUIT
- +19 ;--- Process selected orders
- +20 SET RC=$$PROCESS^RORUTL15(PATIEN,RORFLAGS,RORXLST)
- +21 if RC'>0
- QUIT
- End DoDot:1
- +22 ;
- +23 ;--- Cleanup
- +24 DO POP^RORTMP(RORXLST)
- +25 QUIT RC