ORY377B ;ISP/RFR - ENVIRONMENT CHECK FOR CPRS VERSION 31 ;Jun 20, 2018@11:34
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**377**;Dec 17, 1997;Build 582
ENV ;ENVIRONMENT CHECK SECTION
 ;CHECK EXISTING NOTIFICATION(S)
 N ORENTRY,ORERROR,OROW,ORI,ORCHKSUM
 F ORI=79,84:1:87,90 D  Q:$G(ORERROR)
 .Q:$D(^ORD(100.9,ORI))<10
 .S ORCHKSUM=$$NOTCHKSM(ORI)
 .N ORTMSTMP,ORASK
 .S ORASK=1,ORTMSTMP=0
 .F  S ORTMSTMP=$O(@XPDGREF@("ORCHKSUMS",ORI,ORTMSTMP)) Q:'ORTMSTMP!('ORASK)  D
 ..S:$G(@XPDGREF@("ORCHKSUMS",ORI,ORTMSTMP))=ORCHKSUM ORASK=0
 .S:ORASK ORERROR=$$OW(1,ORI)
 Q:$G(XPDQUIT)=2
 Q
OW(OROW,DA) ;ASK THE USER TO CONTINUE WITH INSTALLATION
 Q:'$G(OROW) 0
 N DIC,DIQ,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
 S DIC="^ORD(100.9,",DIQ(0)="CR"
 D EN^DIQ
 W !,"The above notification will be overwritten.",!
 S DIR(0)="Y^",DIR("A")="Do you wish to proceed with installation of this patch",DIR("B")="NO"
 D ^DIR
 W !
 S:+$G(Y)=0 XPDQUIT=2
 Q:$G(XPDQUIT)=2 1
 Q 0
PRE ; PRE-TRANSPORTATION SECTION
 ;SAVE OE/RR NOTIFICATION CHECKSUMS FOR COMPARE AT SITE
 N ORI,ORNOW
 S ORNOW=$$NOW^XLFDT
 S ^XTMP("ORCHKSUMS",0)=$$FMADD^XLFDT(DT,1095)_U_DT_U_"OE/RR NOTIFICATION CHECKSUMS"
 F ORI=79,84:1:87,90 D
 .N ORTMSTMP,ORCHKSUM,ORSAVE
 .S ORSAVE=1,ORCHKSUM=$$NOTCHKSM(ORI)
 .S ORTMSTMP=0 F  S ORTMSTMP=$O(^XTMP("ORCHKSUMS",ORI,ORTMSTMP)) Q:'ORTMSTMP!('ORSAVE)  D
 ..S:$G(^XTMP("ORCHKSUMS",ORI,ORTMSTMP))=ORCHKSUM ORSAVE=0
 .S:ORSAVE ^XTMP("ORCHKSUMS",ORI,ORNOW)=ORCHKSUM
 M @XPDGREF@("ORCHKSUMS")=^XTMP("ORCHKSUMS")
 K @XPDGREF@("ORCHKSUMS",0)
 Q
NOTCHKSM(ORI) ;CALCULATE OE/RR NOTIFICATION CHECKSUM
 ;INPUT: ORI - IEN IN FILE #100.9
 N ORRET,ADDR,DATA,CHAR
 K ^TMP($J,"ORCHKSUM")
 M ^TMP($J,"ORCHKSUM")=^ORD(100.9,ORI)
 ;STRIP TRAILING CARETS FROM ALL NODES
 S ADDR=$NA(^TMP($J,"ORCHKSUM")) F  S ADDR=$Q(@ADDR) Q:ADDR=""  D
 .S DATA=$G(@ADDR)
 .F CHAR=$L(DATA):-1:1 Q:$E(DATA,CHAR)'=U  S DATA=$E(DATA,1,($L(DATA)-1))
 .S @ADDR=DATA
 I $P($G(^TMP($J,"ORCHKSUM",6)),U,2)?1.N D
 .S $P(^TMP($J,"ORCHKSUM",6),U,2)=$$EXTERNAL^DILFD(100.9,6.2,"",$P(^TMP($J,"ORCHKSUM",6),U,2))
 I $P($G(^TMP($J,"ORCHKSUM",6)),U,4)?1.N D
 .S $P(^TMP($J,"ORCHKSUM",6),U,4)=$$EXTERNAL^DILFD(100.9,6.4,"",$P(^TMP($J,"ORCHKSUM",6),U,4))
 I $P($G(^TMP($J,"ORCHKSUM",6)),U,5)?1.N D
 .S $P(^TMP($J,"ORCHKSUM",6),U,5)=$$EXTERNAL^DILFD(100.9,7,"",$P(^TMP($J,"ORCHKSUM",6),U,5))
 S ORRET=$$CHKSUM^XUSESIG1($NA(^TMP($J,"ORCHKSUM")))
 K ^TMP($J,"ORCHKSUM")
 Q ORRET
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORY377B   2454     printed  Sep 23, 2025@20:17:54                                                                                                                                                                                                     Page 2
ORY377B   ;ISP/RFR - ENVIRONMENT CHECK FOR CPRS VERSION 31 ;Jun 20, 2018@11:34
 +1       ;;3.0;ORDER ENTRY/RESULTS REPORTING;**377**;Dec 17, 1997;Build 582
ENV       ;ENVIRONMENT CHECK SECTION
 +1       ;CHECK EXISTING NOTIFICATION(S)
 +2        NEW ORENTRY,ORERROR,OROW,ORI,ORCHKSUM
 +3        FOR ORI=79,84:1:87,90
               Begin DoDot:1
 +4                if $DATA(^ORD(100.9,ORI))<10
                       QUIT 
 +5                SET ORCHKSUM=$$NOTCHKSM(ORI)
 +6                NEW ORTMSTMP,ORASK
 +7                SET ORASK=1
                   SET ORTMSTMP=0
 +8                FOR 
                       SET ORTMSTMP=$ORDER(@XPDGREF@("ORCHKSUMS",ORI,ORTMSTMP))
                       if 'ORTMSTMP!('ORASK)
                           QUIT 
                       Begin DoDot:2
 +9                        if $GET(@XPDGREF@("ORCHKSUMS",ORI,ORTMSTMP))=ORCHKSUM
                               SET ORASK=0
                       End DoDot:2
 +10               if ORASK
                       SET ORERROR=$$OW(1,ORI)
               End DoDot:1
               if $GET(ORERROR)
                   QUIT 
 +11       if $GET(XPDQUIT)=2
               QUIT 
 +12       QUIT 
OW(OROW,DA) ;ASK THE USER TO CONTINUE WITH INSTALLATION
 +1        if '$GET(OROW)
               QUIT 0
 +2        NEW DIC,DIQ,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
 +3        SET DIC="^ORD(100.9,"
           SET DIQ(0)="CR"
 +4        DO EN^DIQ
 +5        WRITE !,"The above notification will be overwritten.",!
 +6        SET DIR(0)="Y^"
           SET DIR("A")="Do you wish to proceed with installation of this patch"
           SET DIR("B")="NO"
 +7        DO ^DIR
 +8        WRITE !
 +9        if +$GET(Y)=0
               SET XPDQUIT=2
 +10       if $GET(XPDQUIT)=2
               QUIT 1
 +11       QUIT 0
PRE       ; PRE-TRANSPORTATION SECTION
 +1       ;SAVE OE/RR NOTIFICATION CHECKSUMS FOR COMPARE AT SITE
 +2        NEW ORI,ORNOW
 +3        SET ORNOW=$$NOW^XLFDT
 +4        SET ^XTMP("ORCHKSUMS",0)=$$FMADD^XLFDT(DT,1095)_U_DT_U_"OE/RR NOTIFICATION CHECKSUMS"
 +5        FOR ORI=79,84:1:87,90
               Begin DoDot:1
 +6                NEW ORTMSTMP,ORCHKSUM,ORSAVE
 +7                SET ORSAVE=1
                   SET ORCHKSUM=$$NOTCHKSM(ORI)
 +8                SET ORTMSTMP=0
                   FOR 
                       SET ORTMSTMP=$ORDER(^XTMP("ORCHKSUMS",ORI,ORTMSTMP))
                       if 'ORTMSTMP!('ORSAVE)
                           QUIT 
                       Begin DoDot:2
 +9                        if $GET(^XTMP("ORCHKSUMS",ORI,ORTMSTMP))=ORCHKSUM
                               SET ORSAVE=0
                       End DoDot:2
 +10               if ORSAVE
                       SET ^XTMP("ORCHKSUMS",ORI,ORNOW)=ORCHKSUM
               End DoDot:1
 +11       MERGE @XPDGREF@("ORCHKSUMS")=^XTMP("ORCHKSUMS")
 +12       KILL @XPDGREF@("ORCHKSUMS",0)
 +13       QUIT 
NOTCHKSM(ORI) ;CALCULATE OE/RR NOTIFICATION CHECKSUM
 +1       ;INPUT: ORI - IEN IN FILE #100.9
 +2        NEW ORRET,ADDR,DATA,CHAR
 +3        KILL ^TMP($JOB,"ORCHKSUM")
 +4        MERGE ^TMP($JOB,"ORCHKSUM")=^ORD(100.9,ORI)
 +5       ;STRIP TRAILING CARETS FROM ALL NODES
 +6        SET ADDR=$NAME(^TMP($JOB,"ORCHKSUM"))
           FOR 
               SET ADDR=$QUERY(@ADDR)
               if ADDR=""
                   QUIT 
               Begin DoDot:1
 +7                SET DATA=$GET(@ADDR)
 +8                FOR CHAR=$LENGTH(DATA):-1:1
                       if $EXTRACT(DATA,CHAR)'=U
                           QUIT 
                       SET DATA=$EXTRACT(DATA,1,($LENGTH(DATA)-1))
 +9                SET @ADDR=DATA
               End DoDot:1
 +10       IF $PIECE($GET(^TMP($JOB,"ORCHKSUM",6)),U,2)?1.N
               Begin DoDot:1
 +11               SET $PIECE(^TMP($JOB,"ORCHKSUM",6),U,2)=$$EXTERNAL^DILFD(100.9,6.2,"",$PIECE(^TMP($JOB,"ORCHKSUM",6),U,2))
               End DoDot:1
 +12       IF $PIECE($GET(^TMP($JOB,"ORCHKSUM",6)),U,4)?1.N
               Begin DoDot:1
 +13               SET $PIECE(^TMP($JOB,"ORCHKSUM",6),U,4)=$$EXTERNAL^DILFD(100.9,6.4,"",$PIECE(^TMP($JOB,"ORCHKSUM",6),U,4))
               End DoDot:1
 +14       IF $PIECE($GET(^TMP($JOB,"ORCHKSUM",6)),U,5)?1.N
               Begin DoDot:1
 +15               SET $PIECE(^TMP($JOB,"ORCHKSUM",6),U,5)=$$EXTERNAL^DILFD(100.9,7,"",$PIECE(^TMP($JOB,"ORCHKSUM",6),U,5))
               End DoDot:1
 +16       SET ORRET=$$CHKSUM^XUSESIG1($NAME(^TMP($JOB,"ORCHKSUM")))
 +17       KILL ^TMP($JOB,"ORCHKSUM")
 +18       QUIT ORRET