LRSCTF1 ;DALOI/JDB - SCT POPULATION/ERT ALERT ;01/16/13  10:02
 ;;5.2;LAB SERVICE;**350,427**;Sep 27, 1994;Build 33
 ;
 ; Reference to LABXCPT^HDISVAP1 supported by DBIA #5026
 Q
 ;
 ;
NOTIFY(LRTXT,LRFILE,LRFIEN,LRSCT,EXCDATA,LRDUPCHK) ;
 ;LABXCPT^HDISVAP1/5026
 ; Private helper method
 ; Handles ERT/Local notification for "Load Exception" errors.
 ; If an SCT load exception occurs and not in ^XTMP alert ERT.
 ; Inputs
 ;    LRTXT: Code text
 ;   LRFILE: Target file #
 ;   LRFIEN: Target file # IEN
 ;    LRSCT: SCT Code <opt>
 ;  EXCDATA:<byref>
 ; LRDUPCHK: Check for duplicate alert <opt>
 ; Outputs
 ;  String indicating success or error.
 ;     On success returns the new ^XTMP IEN
 ;     On failure returns "0^num^msg"
 ;         ie  "0^1^Term is null"
 ;  Returns transaction # in EXCDATA("TNUM")
 ;
 N DATA,LRIN,NOW,STR,STR2,NOTIFY,SITE
 N TNUM,TMPNM,TEXT,I,II,X,Y,LRHDI,LRHDIERR
 S LRTXT=$G(LRTXT)
 I $TR(LRTXT," ","")="" Q "0^1^Term is null"
 S LRFILE=$G(LRFILE),LRFIEN=$G(LRFIEN),LRSCT=$G(LRSCT),LRDUPCHK=$G(LRDUPCHK,1)
 S NOTIFY=1 ;status of this process
 S TMPNM="LRSCTF-STS"
 S NOW=$$NOW^XLFDT()
 S TEXT=$$TRIM^XLFSTR(LRTXT),TEXT=$$UP^XLFSTR(TEXT)
 S STR=$E(TEXT,1,200) ;some terms can be long and wont fit in a node
 ; check if this term has been sent already.
 K LRIN
 S LRIN("FILE")=LRFILE,LRIN("SCT")=LRSCT,LRIN("PREV","SCT")=$$GET1^DIQ(LRFILE,LRFIEN_",",20)
 S X=$$OK2LOG^LRERT(.LRTXT,.LRIN,TMPNM)
 I $G(LRDUPCHK),'X,$P(X,"^",2)'=2 Q "0^2^Notification already sent."
 K DATA,LRHDI,TEXT,STR
 ;
 S TNUM=$$TNUM^LRERT(LRFILE,LRFIEN,NOW,1)
 S EXCDATA("TNUM")=TNUM
 S LRHDI(1,1)=TNUM_"^"_NOW
 S X=$$BLDERTX^LRERT(LRFILE,LRFIEN,"|",.DATA,2,"S")
 S I=0
 F  S I=$O(DATA(I)) Q:'I  S LRHDI(1,1,"SA",I)=DATA(I)
 ; see patch HDI*1.0*7 for array details
 F I=7:1:11  I $G(EXCDATA("SA",I))'="" S LRHDI(1,1,"SA",I)=EXCDATA("SA",I)
 ;
 S LRHDI(1,1,"RD",5)=1
 F I=1:1:6  I $G(EXCDATA("RD",I))'="" S LRHDI(1,1,"RD",I)=EXCDATA("RD",I)
 ;
 S LRHDI(1,1,"TXT")=$G(EXCDATA("TXT"))
 ;
 D LABXCPT^HDISVAP1("LRHDI")
 ; check LRHDI("ERROR")
 K LRHDIERR
 M LRHDIERR("ERROR")=LRHDI("ERROR")
 K LRHDI
 ;
 ; Update ^XTMP
 K LRIN
 S LRIN("TNUM")=TNUM ;trans #
 S LRIN("TDT")=NOW ;trans date/time
 S LRIN("FILE")=LRFILE ; targ file
 S LRIN("FIEN")=LRFIEN ;targ file IEN
 S LRIN("SCT")=LRSCT ;SCT code
 S LRIN("STSEXC")=1 ;STS exception type
 S LRIN("HDIERR")=$S($D(LRHDIERR):1,1:0) ;STS error flag (0 or 1)
 S LRIN("PREV","SCT")=""
 S LRIN("PREV","TEXT")=""
 S X=$$LOGIT^LRERT(.LRTXT,.LRIN,TMPNM)
 I X S EXCDATA("IEN")=X
 I 'X D  ;
 . S Y=$P(X,"^",2)
 . S Y=Y+10 ;new error code group
 . S NOTIFY="0^"_Y_"^$$LOGIT failed: "_$P(X,"^",3)
 I $G(LRHDIERR("ERROR"))'="" S NOTIFY="0^5^LABXCPT failed: "_LRHDIERR("ERROR")
 Q NOTIFY
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRSCTF1   2797     printed  Sep 23, 2025@19:55:57                                                                                                                                                                                                     Page 2
LRSCTF1   ;DALOI/JDB - SCT POPULATION/ERT ALERT ;01/16/13  10:02
 +1       ;;5.2;LAB SERVICE;**350,427**;Sep 27, 1994;Build 33
 +2       ;
 +3       ; Reference to LABXCPT^HDISVAP1 supported by DBIA #5026
 +4        QUIT 
 +5       ;
 +6       ;
NOTIFY(LRTXT,LRFILE,LRFIEN,LRSCT,EXCDATA,LRDUPCHK) ;
 +1       ;LABXCPT^HDISVAP1/5026
 +2       ; Private helper method
 +3       ; Handles ERT/Local notification for "Load Exception" errors.
 +4       ; If an SCT load exception occurs and not in ^XTMP alert ERT.
 +5       ; Inputs
 +6       ;    LRTXT: Code text
 +7       ;   LRFILE: Target file #
 +8       ;   LRFIEN: Target file # IEN
 +9       ;    LRSCT: SCT Code <opt>
 +10      ;  EXCDATA:<byref>
 +11      ; LRDUPCHK: Check for duplicate alert <opt>
 +12      ; Outputs
 +13      ;  String indicating success or error.
 +14      ;     On success returns the new ^XTMP IEN
 +15      ;     On failure returns "0^num^msg"
 +16      ;         ie  "0^1^Term is null"
 +17      ;  Returns transaction # in EXCDATA("TNUM")
 +18      ;
 +19       NEW DATA,LRIN,NOW,STR,STR2,NOTIFY,SITE
 +20       NEW TNUM,TMPNM,TEXT,I,II,X,Y,LRHDI,LRHDIERR
 +21       SET LRTXT=$GET(LRTXT)
 +22       IF $TRANSLATE(LRTXT," ","")=""
               QUIT "0^1^Term is null"
 +23       SET LRFILE=$GET(LRFILE)
           SET LRFIEN=$GET(LRFIEN)
           SET LRSCT=$GET(LRSCT)
           SET LRDUPCHK=$GET(LRDUPCHK,1)
 +24      ;status of this process
           SET NOTIFY=1
 +25       SET TMPNM="LRSCTF-STS"
 +26       SET NOW=$$NOW^XLFDT()
 +27       SET TEXT=$$TRIM^XLFSTR(LRTXT)
           SET TEXT=$$UP^XLFSTR(TEXT)
 +28      ;some terms can be long and wont fit in a node
           SET STR=$EXTRACT(TEXT,1,200)
 +29      ; check if this term has been sent already.
 +30       KILL LRIN
 +31       SET LRIN("FILE")=LRFILE
           SET LRIN("SCT")=LRSCT
           SET LRIN("PREV","SCT")=$$GET1^DIQ(LRFILE,LRFIEN_",",20)
 +32       SET X=$$OK2LOG^LRERT(.LRTXT,.LRIN,TMPNM)
 +33       IF $GET(LRDUPCHK)
               IF 'X
                   IF $PIECE(X,"^",2)'=2
                       QUIT "0^2^Notification already sent."
 +34       KILL DATA,LRHDI,TEXT,STR
 +35      ;
 +36       SET TNUM=$$TNUM^LRERT(LRFILE,LRFIEN,NOW,1)
 +37       SET EXCDATA("TNUM")=TNUM
 +38       SET LRHDI(1,1)=TNUM_"^"_NOW
 +39       SET X=$$BLDERTX^LRERT(LRFILE,LRFIEN,"|",.DATA,2,"S")
 +40       SET I=0
 +41       FOR 
               SET I=$ORDER(DATA(I))
               if 'I
                   QUIT 
               SET LRHDI(1,1,"SA",I)=DATA(I)
 +42      ; see patch HDI*1.0*7 for array details
 +43       FOR I=7:1:11
               IF $GET(EXCDATA("SA",I))'=""
                   SET LRHDI(1,1,"SA",I)=EXCDATA("SA",I)
 +44      ;
 +45       SET LRHDI(1,1,"RD",5)=1
 +46       FOR I=1:1:6
               IF $GET(EXCDATA("RD",I))'=""
                   SET LRHDI(1,1,"RD",I)=EXCDATA("RD",I)
 +47      ;
 +48       SET LRHDI(1,1,"TXT")=$GET(EXCDATA("TXT"))
 +49      ;
 +50       DO LABXCPT^HDISVAP1("LRHDI")
 +51      ; check LRHDI("ERROR")
 +52       KILL LRHDIERR
 +53       MERGE LRHDIERR("ERROR")=LRHDI("ERROR")
 +54       KILL LRHDI
 +55      ;
 +56      ; Update ^XTMP
 +57       KILL LRIN
 +58      ;trans #
           SET LRIN("TNUM")=TNUM
 +59      ;trans date/time
           SET LRIN("TDT")=NOW
 +60      ; targ file
           SET LRIN("FILE")=LRFILE
 +61      ;targ file IEN
           SET LRIN("FIEN")=LRFIEN
 +62      ;SCT code
           SET LRIN("SCT")=LRSCT
 +63      ;STS exception type
           SET LRIN("STSEXC")=1
 +64      ;STS error flag (0 or 1)
           SET LRIN("HDIERR")=$SELECT($DATA(LRHDIERR):1,1:0)
 +65       SET LRIN("PREV","SCT")=""
 +66       SET LRIN("PREV","TEXT")=""
 +67       SET X=$$LOGIT^LRERT(.LRTXT,.LRIN,TMPNM)
 +68       IF X
               SET EXCDATA("IEN")=X
 +69      ;
           IF 'X
               Begin DoDot:1
 +70               SET Y=$PIECE(X,"^",2)
 +71      ;new error code group
                   SET Y=Y+10
 +72               SET NOTIFY="0^"_Y_"^$$LOGIT failed: "_$PIECE(X,"^",3)
               End DoDot:1
 +73       IF $GET(LRHDIERR("ERROR"))'=""
               SET NOTIFY="0^5^LABXCPT failed: "_LRHDIERR("ERROR")
 +74       QUIT NOTIFY