ORPRS08 ; slc/dcm - Nightly Order Summary Task ;6/10/97  15:45
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69**;Dec 17, 1997
MAIN ; Controls branching
 N ORL,ORI,ORPDOS,ORDOS
 D ENVAL^XPAR(.ORDOS,"ORPF DAILY ORDER SUMMARY DEVC")
 D ENVAL^XPAR(.ORPDOS,"ORPF PRINT DAILY ORDER SUMMARY")
 S ORL=""
 F  S ORL=$O(ORPDOS(ORL)) Q:ORL=""  I $G(ORPDOS(ORL,1)),$G(ORDOS(ORL,1)) D LOC(ORL,ORDOS(ORL,1))
 Q
LOC(ORL,ORDVC) ; Build patient list and task summary for each Inpatient location
 I $S(+ORL'>0:1,ORDVC'>0:1,1:0) G LOCX
 N %,%H,%I,%T,DFN,ORDT,ORPM,ORSHORT,ORSCPAT,ORSSTOP,ORSSTRT,ORTIT,X,ORSCPAT,ORSWDN
 N ORPRES,ORVP,ORX,IOP,Y,ZTIO,ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTSAVE
 S ORSWDN=$P($G(^SC(+ORL,0)),"^")
 D PATARAY(.ORSCPAT,+ORL)
 I '$D(ORSCPAT) G LOCX
 D NOW^%DTC
 S (ORDT,X1)=$P(%,"."),(ORPM,X2)=$S($E($P(%,".",2),1,2)>12:1,1:-1)
 D C^%DTC
 S ORSSTRT=$S(ORPM>0:ORDT,1:X),ORSSTOP=$S(ORPM>0:X,1:ORDT),ORSHORT=$$SHORT^ORPRS02(),ORTIT="DAILY ORDER SUMMARY",ORPRES="DATE"
 S ZTRTN="EN1^ORPRS10",ZTDTH=$H,ZTDESC="Daily Order Summary for "_ORSWDN,ZTIO="`"_ORDVC,ZTSAVE("O*")=""
 D ^%ZTLOAD
LOCX Q
PATARAY(ORSCPAT,LOC) ;Loads patients into ORSCPAT local array
 ;LOC=Location
 ;ORVP=Patient variable pointer
 Q:'$L($G(LOC))
 Q:'$D(^SC(+LOC,42))  Q:'$D(^DIC(42,^(42),0))  S NAME=$P(^(0),"^")
 N X,I
 S I=0
 F  S I=$O(^DPT("CN",NAME,I)) Q:'I  S X=^DPT(I,0),ORSCPAT($P(X,"^")_" "_I)=I
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORPRS08   1397     printed  Sep 23, 2025@20:09:14                                                                                                                                                                                                     Page 2
ORPRS08   ; slc/dcm - Nightly Order Summary Task ;6/10/97  15:45
 +1       ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69**;Dec 17, 1997
MAIN      ; Controls branching
 +1        NEW ORL,ORI,ORPDOS,ORDOS
 +2        DO ENVAL^XPAR(.ORDOS,"ORPF DAILY ORDER SUMMARY DEVC")
 +3        DO ENVAL^XPAR(.ORPDOS,"ORPF PRINT DAILY ORDER SUMMARY")
 +4        SET ORL=""
 +5        FOR 
               SET ORL=$ORDER(ORPDOS(ORL))
               if ORL=""
                   QUIT 
               IF $GET(ORPDOS(ORL,1))
                   IF $GET(ORDOS(ORL,1))
                       DO LOC(ORL,ORDOS(ORL,1))
 +6        QUIT 
LOC(ORL,ORDVC) ; Build patient list and task summary for each Inpatient location
 +1        IF $SELECT(+ORL'>0:1,ORDVC'>0:1,1:0)
               GOTO LOCX
 +2        NEW %,%H,%I,%T,DFN,ORDT,ORPM,ORSHORT,ORSCPAT,ORSSTOP,ORSSTRT,ORTIT,X,ORSCPAT,ORSWDN
 +3        NEW ORPRES,ORVP,ORX,IOP,Y,ZTIO,ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTSAVE
 +4        SET ORSWDN=$PIECE($GET(^SC(+ORL,0)),"^")
 +5        DO PATARAY(.ORSCPAT,+ORL)
 +6        IF '$DATA(ORSCPAT)
               GOTO LOCX
 +7        DO NOW^%DTC
 +8        SET (ORDT,X1)=$PIECE(%,".")
           SET (ORPM,X2)=$SELECT($EXTRACT($PIECE(%,".",2),1,2)>12:1,1:-1)
 +9        DO C^%DTC
 +10       SET ORSSTRT=$SELECT(ORPM>0:ORDT,1:X)
           SET ORSSTOP=$SELECT(ORPM>0:X,1:ORDT)
           SET ORSHORT=$$SHORT^ORPRS02()
           SET ORTIT="DAILY ORDER SUMMARY"
           SET ORPRES="DATE"
 +11       SET ZTRTN="EN1^ORPRS10"
           SET ZTDTH=$HOROLOG
           SET ZTDESC="Daily Order Summary for "_ORSWDN
           SET ZTIO="`"_ORDVC
           SET ZTSAVE("O*")=""
 +12       DO ^%ZTLOAD
LOCX       QUIT 
PATARAY(ORSCPAT,LOC) ;Loads patients into ORSCPAT local array
 +1       ;LOC=Location
 +2       ;ORVP=Patient variable pointer
 +3        if '$LENGTH($GET(LOC))
               QUIT 
 +4        if '$DATA(^SC(+LOC,42))
               QUIT 
           if '$DATA(^DIC(42,^(42),0))
               QUIT 
           SET NAME=$PIECE(^(0),"^")
 +5        NEW X,I
 +6        SET I=0
 +7        FOR 
               SET I=$ORDER(^DPT("CN",NAME,I))
               if 'I
                   QUIT 
               SET X=^DPT(I,0)
               SET ORSCPAT($PIECE(X,"^")_" "_I)=I
 +8        QUIT