ORPRS06 ; slc/dcm - Driving Miss ChartCopy ;7/28/06  15:55
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,99,215,260**;Dec 17, 1997;Build 26
 ;
 ; DBIA 3869   GETPLIST^SDAMA202   ^TMP($J,"SDAMA202")
 ;
MAIN ; Control module
 N %,%H,%I,%T,ORDT,ORNOW,OREARLY,ORLATE,ORHPRM,ORLOC,X,X1,X2
 N ORSC,ORSSC,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK,ORPCCS,ORPCCP,ORCONTX
 D NOW^%DTC
 S ORDT=$P(%,"."),ORNOW=$P(%,".",2)
 I $E(ORNOW,1,2)>14 S OREARLY=ORDT
 E  S X1=ORDT,X2=-1 D C^%DTC S OREARLY=X
 S X1=OREARLY,X2=1
 D C^%DTC
 S ORLATE=X,ORCONTX=21
 D ENVAL^XPAR(.ORPCCS,"ORPF PRINT CHART COPY SUMMARY")
 D ENVAL^XPAR(.ORPCCP,"ORPF CHART COPY PRINT DEVICE")
 S ORSC="" F  S ORSC=$O(ORPCCS(ORSC)) Q:ORSC=""  I ORPCCS(ORSC,1),$G(ORPCCP(ORSC,1)) D
 . S ORHPRM=ORPCCP(ORSC,1),ORSSC=+ORSC,ORLOC=$S(+$G(^SC(ORSSC,42)):$P($G(^DIC(42,+$G(^SC(ORSSC,42)),0)),U),1:$P($G(^SC(ORSSC,0)),U)_"^"_1)
 . S ZTRTN=$S($L(ORLOC,U)=2:"CLINIC^ORPRS06",1:"WARD^ORPRS06"),ZTDTH=$H
 . S ZTIO="`"_+ORHPRM,ZTSAVE("OR*")=""
 . S ZTDESC="Chart copy of orders for "_ORLOC
 . D ^%ZTLOAD
 Q
WARD ; Gets list of patients for a specified non-clinic ward
 N DFN,ORDLRJ,X,Y
 I $S('$L(ORLOC):1,'$O(^DPT("CN",ORLOC,0)):1,1:0) Q
 S ORDLRJ=$J,DFN=0
 F  S DFN=$O(^DPT("CN",ORLOC,DFN)) Q:'DFN  D PATIENT(DFN,OREARLY,ORLATE,ORHPRM,$G(ORCONTX),$G(ORSSC))
 D ^%ZISC
 I $D(ZTSK) D KILL^%ZTLOAD K ZTSK
 Q
CLINIC ; Sets up call for clinic patients
 N ORAPT,ORERR,ORI
 K ^TMP($J,"SDAMA202","GETPLIST")
 D GETPLIST^SDAMA202(ORSSC,"1;4","",9999999-OREARLY,9999999-ORLATE)  ;DBIA 3869
 S ORERR=$$CLINERR^ORQRY01
 I $L(ORERR) D  Q
 . N XMDUZ,XMSUB,XMTEXT,XMY K XMY,^TMP("OR SCHED DB ERROR",$J)
 . S XMDUZ=.5
 . S XMY(.5)=""
 . S XMSUB=ORERR
 . S XMTEXT="^TMP(""OR SCHED DB ERROR"",$J,0,"
 . S ^TMP("OR SCHED DB ERROR",$J,0,1,0)=ORERR
 . S ^TMP("OR SCHED DB ERROR",$J,0,2,0)=""
 . D ^XMD
 . K ^TMP("OR SCHED DB ERROR",$J)
 S ORI=0
 F  S ORI=$O(^TMP($J,"SDAMA202","GETPLIST",ORI)) Q:ORI<1  D
 . S ORAPT=+$G(^TMP($J,"SDAMA202","GETPLIST",ORI,1))
 . S DFN=+$G(^TMP($J,"SDAMA202","GETPLIST",ORI,4))
 . I ORAPT,DFN D PATIENT(DFN,OREARLY,ORLATE,ORHPRM,$G(ORCONTX),$G(ORSSC))
 K ^TMP($J,"SDAMA202","GETPLIST")
 D ^%ZISC
 I $D(ZTSK) D KILL^%ZTLOAD K ZTSK
 Q
PATIENT(DFN,EARLY,LATE,DEVICE,CONTEXT,LOC44) ; Gets orders by patient, date, context
 ;DFN=ptr to file 2
 ;EARLY=Starting date
 ;LATE=Ending date
 ;DEVICE=device to print on.
 ;CONTEXT=context sent to ORQ1 (default=1)
 ;LOC44=ptr to location, file 44
 N ARRAY,ORVP
 S ORVP=DFN_";DPT("
 S:'$G(CONTEXT) CONTEXT=1
 D EN^ORQ1(ORVP,1,CONTEXT,"",LATE,EARLY,0,1)
 I $$GET^XPAR("ALL","ORPF CHART SUMMARY SORT",1,"I") D SORT^ORPRS02
 I '$O(^TMP("ORR",$J,ORLIST,0)) G PATX
 S ARRAY="^TMP(""ORR"",$J,ORLIST)",LOC44=$S($G(LOC44):LOC44_";SC(",1:"")
 D GUI^ORPR02(.ARRAY,DEVICE,"C",LOC44,1)
PATX ;
 K ^TMP("ORR",$J,ORLIST)
 Q
WORK(DFN,EARLY,LATE,DEVICE) ;Gets orders for work copy
 ;Same description as PATIENT()
 N ARRAY,ORVP
 S ORVP=DFN_";DPT("
 D EN^ORQ1(ORVP,1,1,"",LATE,EARLY,0,1)
 I $$GET^XPAR("ALL","ORPF WORK SUMMARY SORT",1,"I") D SORT^ORPRS02
 I '$O(^TMP("ORR",$J,ORLIST,0)) G WRKX
 S ARRAY="^TMP(""ORR"",$J,ORLIST)"
 D GUI^ORPR02(.ARRAY,DEVICE,"W",,1)
WRKX ;
 K ^TMP("ORR",$J,ORLIST)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORPRS06   3247     printed  Sep 23, 2025@20:09:12                                                                                                                                                                                                     Page 2
ORPRS06   ; slc/dcm - Driving Miss ChartCopy ;7/28/06  15:55
 +1       ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,99,215,260**;Dec 17, 1997;Build 26
 +2       ;
 +3       ; DBIA 3869   GETPLIST^SDAMA202   ^TMP($J,"SDAMA202")
 +4       ;
MAIN      ; Control module
 +1        NEW %,%H,%I,%T,ORDT,ORNOW,OREARLY,ORLATE,ORHPRM,ORLOC,X,X1,X2
 +2        NEW ORSC,ORSSC,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK,ORPCCS,ORPCCP,ORCONTX
 +3        DO NOW^%DTC
 +4        SET ORDT=$PIECE(%,".")
           SET ORNOW=$PIECE(%,".",2)
 +5        IF $EXTRACT(ORNOW,1,2)>14
               SET OREARLY=ORDT
 +6       IF '$TEST
               SET X1=ORDT
               SET X2=-1
               DO C^%DTC
               SET OREARLY=X
 +7        SET X1=OREARLY
           SET X2=1
 +8        DO C^%DTC
 +9        SET ORLATE=X
           SET ORCONTX=21
 +10       DO ENVAL^XPAR(.ORPCCS,"ORPF PRINT CHART COPY SUMMARY")
 +11       DO ENVAL^XPAR(.ORPCCP,"ORPF CHART COPY PRINT DEVICE")
 +12       SET ORSC=""
           FOR 
               SET ORSC=$ORDER(ORPCCS(ORSC))
               if ORSC=""
                   QUIT 
               IF ORPCCS(ORSC,1)
                   IF $GET(ORPCCP(ORSC,1))
                       Begin DoDot:1
 +13                       SET ORHPRM=ORPCCP(ORSC,1)
                           SET ORSSC=+ORSC
                           SET ORLOC=$SELECT(+$GET(^SC(ORSSC,42)):$PIECE($GET(^DIC(42,+$GET(^SC(ORSSC,42)),0)),U),1:$PIECE($GET(^SC(ORSSC,0)),U)_"^"_1)
 +14                       SET ZTRTN=$SELECT($LENGTH(ORLOC,U)=2:"CLINIC^ORPRS06",1:"WARD^ORPRS06")
                           SET ZTDTH=$HOROLOG
 +15                       SET ZTIO="`"_+ORHPRM
                           SET ZTSAVE("OR*")=""
 +16                       SET ZTDESC="Chart copy of orders for "_ORLOC
 +17                       DO ^%ZTLOAD
                       End DoDot:1
 +18       QUIT 
WARD      ; Gets list of patients for a specified non-clinic ward
 +1        NEW DFN,ORDLRJ,X,Y
 +2        IF $SELECT('$LENGTH(ORLOC):1,'$ORDER(^DPT("CN",ORLOC,0)):1,1:0)
               QUIT 
 +3        SET ORDLRJ=$JOB
           SET DFN=0
 +4        FOR 
               SET DFN=$ORDER(^DPT("CN",ORLOC,DFN))
               if 'DFN
                   QUIT 
               DO PATIENT(DFN,OREARLY,ORLATE,ORHPRM,$GET(ORCONTX),$GET(ORSSC))
 +5        DO ^%ZISC
 +6        IF $DATA(ZTSK)
               DO KILL^%ZTLOAD
               KILL ZTSK
 +7        QUIT 
CLINIC    ; Sets up call for clinic patients
 +1        NEW ORAPT,ORERR,ORI
 +2        KILL ^TMP($JOB,"SDAMA202","GETPLIST")
 +3       ;DBIA 3869
           DO GETPLIST^SDAMA202(ORSSC,"1;4","",9999999-OREARLY,9999999-ORLATE)
 +4        SET ORERR=$$CLINERR^ORQRY01
 +5        IF $LENGTH(ORERR)
               Begin DoDot:1
 +6                NEW XMDUZ,XMSUB,XMTEXT,XMY
                   KILL XMY,^TMP("OR SCHED DB ERROR",$JOB)
 +7                SET XMDUZ=.5
 +8                SET XMY(.5)=""
 +9                SET XMSUB=ORERR
 +10               SET XMTEXT="^TMP(""OR SCHED DB ERROR"",$J,0,"
 +11               SET ^TMP("OR SCHED DB ERROR",$JOB,0,1,0)=ORERR
 +12               SET ^TMP("OR SCHED DB ERROR",$JOB,0,2,0)=""
 +13               DO ^XMD
 +14               KILL ^TMP("OR SCHED DB ERROR",$JOB)
               End DoDot:1
               QUIT 
 +15       SET ORI=0
 +16       FOR 
               SET ORI=$ORDER(^TMP($JOB,"SDAMA202","GETPLIST",ORI))
               if ORI<1
                   QUIT 
               Begin DoDot:1
 +17               SET ORAPT=+$GET(^TMP($JOB,"SDAMA202","GETPLIST",ORI,1))
 +18               SET DFN=+$GET(^TMP($JOB,"SDAMA202","GETPLIST",ORI,4))
 +19               IF ORAPT
                       IF DFN
                           DO PATIENT(DFN,OREARLY,ORLATE,ORHPRM,$GET(ORCONTX),$GET(ORSSC))
               End DoDot:1
 +20       KILL ^TMP($JOB,"SDAMA202","GETPLIST")
 +21       DO ^%ZISC
 +22       IF $DATA(ZTSK)
               DO KILL^%ZTLOAD
               KILL ZTSK
 +23       QUIT 
PATIENT(DFN,EARLY,LATE,DEVICE,CONTEXT,LOC44) ; Gets orders by patient, date, context
 +1       ;DFN=ptr to file 2
 +2       ;EARLY=Starting date
 +3       ;LATE=Ending date
 +4       ;DEVICE=device to print on.
 +5       ;CONTEXT=context sent to ORQ1 (default=1)
 +6       ;LOC44=ptr to location, file 44
 +7        NEW ARRAY,ORVP
 +8        SET ORVP=DFN_";DPT("
 +9        if '$GET(CONTEXT)
               SET CONTEXT=1
 +10       DO EN^ORQ1(ORVP,1,CONTEXT,"",LATE,EARLY,0,1)
 +11       IF $$GET^XPAR("ALL","ORPF CHART SUMMARY SORT",1,"I")
               DO SORT^ORPRS02
 +12       IF '$ORDER(^TMP("ORR",$JOB,ORLIST,0))
               GOTO PATX
 +13       SET ARRAY="^TMP(""ORR"",$J,ORLIST)"
           SET LOC44=$SELECT($GET(LOC44):LOC44_";SC(",1:"")
 +14       DO GUI^ORPR02(.ARRAY,DEVICE,"C",LOC44,1)
PATX      ;
 +1        KILL ^TMP("ORR",$JOB,ORLIST)
 +2        QUIT 
WORK(DFN,EARLY,LATE,DEVICE) ;Gets orders for work copy
 +1       ;Same description as PATIENT()
 +2        NEW ARRAY,ORVP
 +3        SET ORVP=DFN_";DPT("
 +4        DO EN^ORQ1(ORVP,1,1,"",LATE,EARLY,0,1)
 +5        IF $$GET^XPAR("ALL","ORPF WORK SUMMARY SORT",1,"I")
               DO SORT^ORPRS02
 +6        IF '$ORDER(^TMP("ORR",$JOB,ORLIST,0))
               GOTO WRKX
 +7        SET ARRAY="^TMP(""ORR"",$J,ORLIST)"
 +8        DO GUI^ORPR02(.ARRAY,DEVICE,"W",,1)
WRKX      ;
 +1        KILL ^TMP("ORR",$JOB,ORLIST)
 +2        QUIT