SCMCHLR5 ;ALB/KCL - PCMM HL7 Reject Processing - Protocols con't ; 10-JAN-2000
 ;;5.3;Scheduling;**210,272**;AUG 13, 1993
 ;
 ;This routine contains the PCMM Transmission Error processing protocols.
 ;See EN^SCMCHLR2 for additional documentation on 'system wide' variables
 ;used in this routine.
 ;
UE ; Description: Entry point for SCMC LE UNCHECK ERROR protocol.
 ;
 ;  Input: None
 ;
 ; Output:
 ;  VALMBCK - 'R'=Refresh screen
 ;
 N NODE,SCLINE,SCNUM,SCTLIEN,SCERIEN,VALMY
 ;
 ;Ask user to select transmission errors to uncheck on the list
 D EN^VALM2(XQORNOD(0))
 D FULL^VALM1
 ;
 ;Process user selection
 S SCNUM=0
 F  S SCNUM=$O(VALMY(SCNUM)) Q:'SCNUM  D
 .;invoke call to mark error as new on list
 .I $D(^TMP(SCARY_"IDX",$J,SCNUM)) D
 ..S NODE=$G(^TMP(SCARY_"IDX",$J,SCNUM))
 ..S SCLINE=+NODE,SCTLIEN=+$P(NODE,"^",2),SCERIEN=+$P(NODE,"^",3)
 ..D UNCHKERR(SCARY,SCLINE,SCTLIEN,SCERIEN)
 ;
 ;
 ;Place custom msg in msg window
 ;S VALMSG=$$MRKMSG^SCMCHLR1
 ;
 ;Refresh screen when returning from action
 S VALMBCK="R"
 Q
 ;
 ;
DP ; Description: Entry point for SCMC LE DESELECT PATIENT RETRANSMIT protocol.
 ;
 ;  Input: None
 ;
 ; Output: 
 ;  VALMBCK - 'R'=Refresh screen
 ;
 N NODE,SCLINE,SCNUM,SCTLIEN,SCTLOG,VALMY
 ;
 ;Ask user to select transmission errors to deselect
 D EN^VALM2(XQORNOD(0))
 ;
 ;set screen to full scrolling region
 D FULL^VALM1
 ;
 ;Process user selections
 S SCNUM=0
 F  S SCNUM=$O(VALMY(SCNUM)) Q:'SCNUM  D
 .;
 .I $D(^TMP(SCARY_"IDX",$J,SCNUM)) D
 ..S NODE=$G(^TMP(SCARY_"IDX",$J,SCNUM))
 ..S SCLINE=+NODE,SCTLIEN=+$P(NODE,"^",2),SCERIEN=+$P(NODE,"^",3)
 ..;get information for PCMM HL7 Transmission Log entry and invoke code
 ..;to set patient to 'retransmit'.
 ..I $$GETLOG^SCMCHLA(SCTLIEN,SCERIEN,.SCTLOG) D DESLPAT(SCARY,SCLINE,.SCTLOG)
 ;
 ;Place custom msg in msg window
 ;S VALMSG=$$MRKMSG^SCMCHLR1
 ;
 ;Refresh screen when returning from action
 S VALMBCK="R"
 Q
 ;
 ;
DA ; Description: Entry point for SCMC LE DESELECT ALL protocol.
 ;
 ;  Input: None
 ;
 ; Output:
 ;  VALMBCK - 'R'=Refresh screen
 ;
 N DIR,DTOUT,DUOUT,Y
 ;
 ;Set screen to full scrolling region
 D FULL^VALM1
 ;
 ;Ask user if they want to deselect all patients for retransmit
 S DIR(0)="Y"
 S DIR("A")="Deselect all patients"
 S DIR("A",1)="This action will allow all patients that are currently"
 S DIR("A",2)="marked for re-transmission to be deselected."
 S DIR("B")="NO"
 D ^DIR
 ;
 ;Process user response
 I '$D(DIRUT) D
 .I +Y D
 ..;set all patients status to rejected
 ..D UPDALL
 ;
 ;Place custom msg in msg window
 ;S VALMSG=$$MRKMSG^SCMCHLR1
 ;
 ;Refresh screen when returning from action
 S VALMBCK="R"
 Q
 ;
 ;
UNCHKERR(SCARY,SCLINE,SCTLIEN,SCERIEN) ;
 ; Description: Used to uncheck an error on the list.
 ;
 ;  Input:
 ;     SCARY - Global array subscript
 ;    SCLINE - Line number
 ;   SCTLIEN - PCMM HL7 Transmission Log IEN
 ;   SCERIEN - IEN of record in Error Code (#404.47142) multiple
 ;
 ; Output: None
 ;
 N SCERMSG
 ;
 ;if status is marked for retransmit error can not be marked as new
 I $$STATUS^SCMCHLA(SCTLIEN)="M" D
 .W !,^TMP(SCARY,$J,SCLINE,0)
 .W:$G(SCERMSG)'="" !,"...",$$LOWER^VALM1(SCERMSG)
 .W !,"...Unable to update error processing status"
 .W !,"...Patient already marked for re-transmission"
 .D PAUSE^VALM1
 E  D
 .I $$UPDEPS^SCMCHLA(SCTLIEN,SCERIEN,1,.SCERMSG) D
 ..D FLDTEXT^VALM10(SCLINE,"STATUS","New")
 ..D FLDCTRL^VALM10(SCLINE,"STATUS",IOINHI,IOINORM)
 Q
 ;
 ;
DESLPAT(SCARY,SCLINE,SCTLOG) ; Description: Used to set patient to rejected.
 ;
 ;  Input:
 ;    SCARY - Global array subscript
 ;   SCLINE - Line number
 ;   SCTLOG - Transmission log entry array
 ;
 ; Output: None
 ;
 N SCERROR
 ;
 ;Set patient to rejected
 I $$UPDSTAT^SCMCHLA(SCTLIEN,"RJ",.SCERROR) D
 .D UPDPAT(SCARY,$S($G(SCTLOG("DFN")):SCTLOG("DFN"),1:"W"),$S('$G(SCTLOG("DFN")):SCLINE,1:""))
 E  D
 .W !,^TMP(SCARY,$J,SCLINE,0)
 .W:$G(SCERMSG)'="" !,"...",$$LOWER^VALM1(SCERROR)
 .W !,"...Unable to deselect patient for re-transmit"
 .D PAUSE^VALM1
 Q
 ;
 ;
UPDPAT(SCARY,SCDFN,LINE) ; Description: Update all PCMM HL7 Transmssion Log
 ; entries in the list for the patient as 'rejected'.
 ;
 ;  Input:
 ;   SCARY - Global array subscript
 ;   SCDFN - Patient IEN
 ;
 ; Output: None
 ;
 S:'$G(LINE) LINE=999999
 N SCLINE,SCTLIEN
 ;
 ;Loop thru entries in the list for the patient
 S SCLINE=0
 I SCDFN="W",LINE'=999999 S SCLINE=LINE-.01
 F  S SCLINE=$O(^TMP(SCARY_"IDX",$J,"PT",SCDFN,SCLINE)) Q:(('SCLINE)!(SCLINE>LINE))  S SCTLIEN=+^(SCLINE) D
 .;update entry that was marked for re-transmit to null
 .D FLDTEXT^VALM10(SCLINE,"RETRANS"," ")
 Q
 ;
 ;
UPDALL ; Description: Update all PCMM HL7 Transmssion Log
 ; entries in the list as 'marked for re-transmit'.
 ;
 ;  Input: None
 ; Output: None
 ;
 N SCLINE,SCTLIEN,SCDFN
 ;
 ;Loop thru entries in the list for all patients
 S SCDFN=""
 F  S SCDFN=$O(^TMP(SCARY_"IDX",$J,"PT",SCDFN)) Q:'SCDFN  D
 .;Loop thru entries in the list for the patient
 .S SCLINE=0
 .F  S SCLINE=$O(^TMP(SCARY_"IDX",$J,"PT",SCDFN,SCLINE)) Q:'SCLINE  D
 ..S NODE=^TMP(SCARY_"IDX",$J,"PT",SCDFN,SCLINE)
 ..S SCTLIEN=+NODE,SCERIEN=+$P(NODE,"^",2)
 ..;
 ..;get information for PCMM HL7 Transmission Log entry and invoke code
 ..;to set patient to 'rejected'.
 ..I $$GETLOG^SCMCHLA(SCTLIEN,SCERIEN,.SCTLOG) D DESLPAT(SCARY,SCLINE,.SCTLOG)
 ..;
 ..;update entry that was marked for re-transmit to null
 ..D FLDTEXT^VALM10(SCLINE,"RETRANS"," ")
 ;
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCMCHLR5   5602     printed  Sep 23, 2025@20:16:58                                                                                                                                                                                                    Page 2
SCMCHLR5  ;ALB/KCL - PCMM HL7 Reject Processing - Protocols con't ; 10-JAN-2000
 +1       ;;5.3;Scheduling;**210,272**;AUG 13, 1993
 +2       ;
 +3       ;This routine contains the PCMM Transmission Error processing protocols.
 +4       ;See EN^SCMCHLR2 for additional documentation on 'system wide' variables
 +5       ;used in this routine.
 +6       ;
UE        ; Description: Entry point for SCMC LE UNCHECK ERROR protocol.
 +1       ;
 +2       ;  Input: None
 +3       ;
 +4       ; Output:
 +5       ;  VALMBCK - 'R'=Refresh screen
 +6       ;
 +7        NEW NODE,SCLINE,SCNUM,SCTLIEN,SCERIEN,VALMY
 +8       ;
 +9       ;Ask user to select transmission errors to uncheck on the list
 +10       DO EN^VALM2(XQORNOD(0))
 +11       DO FULL^VALM1
 +12      ;
 +13      ;Process user selection
 +14       SET SCNUM=0
 +15       FOR 
               SET SCNUM=$ORDER(VALMY(SCNUM))
               if 'SCNUM
                   QUIT 
               Begin DoDot:1
 +16      ;invoke call to mark error as new on list
 +17               IF $DATA(^TMP(SCARY_"IDX",$JOB,SCNUM))
                       Begin DoDot:2
 +18                       SET NODE=$GET(^TMP(SCARY_"IDX",$JOB,SCNUM))
 +19                       SET SCLINE=+NODE
                           SET SCTLIEN=+$PIECE(NODE,"^",2)
                           SET SCERIEN=+$PIECE(NODE,"^",3)
 +20                       DO UNCHKERR(SCARY,SCLINE,SCTLIEN,SCERIEN)
                       End DoDot:2
               End DoDot:1
 +21      ;
 +22      ;
 +23      ;Place custom msg in msg window
 +24      ;S VALMSG=$$MRKMSG^SCMCHLR1
 +25      ;
 +26      ;Refresh screen when returning from action
 +27       SET VALMBCK="R"
 +28       QUIT 
 +29      ;
 +30      ;
DP        ; Description: Entry point for SCMC LE DESELECT PATIENT RETRANSMIT protocol.
 +1       ;
 +2       ;  Input: None
 +3       ;
 +4       ; Output: 
 +5       ;  VALMBCK - 'R'=Refresh screen
 +6       ;
 +7        NEW NODE,SCLINE,SCNUM,SCTLIEN,SCTLOG,VALMY
 +8       ;
 +9       ;Ask user to select transmission errors to deselect
 +10       DO EN^VALM2(XQORNOD(0))
 +11      ;
 +12      ;set screen to full scrolling region
 +13       DO FULL^VALM1
 +14      ;
 +15      ;Process user selections
 +16       SET SCNUM=0
 +17       FOR 
               SET SCNUM=$ORDER(VALMY(SCNUM))
               if 'SCNUM
                   QUIT 
               Begin DoDot:1
 +18      ;
 +19               IF $DATA(^TMP(SCARY_"IDX",$JOB,SCNUM))
                       Begin DoDot:2
 +20                       SET NODE=$GET(^TMP(SCARY_"IDX",$JOB,SCNUM))
 +21                       SET SCLINE=+NODE
                           SET SCTLIEN=+$PIECE(NODE,"^",2)
                           SET SCERIEN=+$PIECE(NODE,"^",3)
 +22      ;get information for PCMM HL7 Transmission Log entry and invoke code
 +23      ;to set patient to 'retransmit'.
 +24                       IF $$GETLOG^SCMCHLA(SCTLIEN,SCERIEN,.SCTLOG)
                               DO DESLPAT(SCARY,SCLINE,.SCTLOG)
                       End DoDot:2
               End DoDot:1
 +25      ;
 +26      ;Place custom msg in msg window
 +27      ;S VALMSG=$$MRKMSG^SCMCHLR1
 +28      ;
 +29      ;Refresh screen when returning from action
 +30       SET VALMBCK="R"
 +31       QUIT 
 +32      ;
 +33      ;
DA        ; Description: Entry point for SCMC LE DESELECT ALL protocol.
 +1       ;
 +2       ;  Input: None
 +3       ;
 +4       ; Output:
 +5       ;  VALMBCK - 'R'=Refresh screen
 +6       ;
 +7        NEW DIR,DTOUT,DUOUT,Y
 +8       ;
 +9       ;Set screen to full scrolling region
 +10       DO FULL^VALM1
 +11      ;
 +12      ;Ask user if they want to deselect all patients for retransmit
 +13       SET DIR(0)="Y"
 +14       SET DIR("A")="Deselect all patients"
 +15       SET DIR("A",1)="This action will allow all patients that are currently"
 +16       SET DIR("A",2)="marked for re-transmission to be deselected."
 +17       SET DIR("B")="NO"
 +18       DO ^DIR
 +19      ;
 +20      ;Process user response
 +21       IF '$DATA(DIRUT)
               Begin DoDot:1
 +22               IF +Y
                       Begin DoDot:2
 +23      ;set all patients status to rejected
 +24                       DO UPDALL
                       End DoDot:2
               End DoDot:1
 +25      ;
 +26      ;Place custom msg in msg window
 +27      ;S VALMSG=$$MRKMSG^SCMCHLR1
 +28      ;
 +29      ;Refresh screen when returning from action
 +30       SET VALMBCK="R"
 +31       QUIT 
 +32      ;
 +33      ;
UNCHKERR(SCARY,SCLINE,SCTLIEN,SCERIEN) ;
 +1       ; Description: Used to uncheck an error on the list.
 +2       ;
 +3       ;  Input:
 +4       ;     SCARY - Global array subscript
 +5       ;    SCLINE - Line number
 +6       ;   SCTLIEN - PCMM HL7 Transmission Log IEN
 +7       ;   SCERIEN - IEN of record in Error Code (#404.47142) multiple
 +8       ;
 +9       ; Output: None
 +10      ;
 +11       NEW SCERMSG
 +12      ;
 +13      ;if status is marked for retransmit error can not be marked as new
 +14       IF $$STATUS^SCMCHLA(SCTLIEN)="M"
               Begin DoDot:1
 +15               WRITE !,^TMP(SCARY,$JOB,SCLINE,0)
 +16               if $GET(SCERMSG)'=""
                       WRITE !,"...",$$LOWER^VALM1(SCERMSG)
 +17               WRITE !,"...Unable to update error processing status"
 +18               WRITE !,"...Patient already marked for re-transmission"
 +19               DO PAUSE^VALM1
               End DoDot:1
 +20      IF '$TEST
               Begin DoDot:1
 +21               IF $$UPDEPS^SCMCHLA(SCTLIEN,SCERIEN,1,.SCERMSG)
                       Begin DoDot:2
 +22                       DO FLDTEXT^VALM10(SCLINE,"STATUS","New")
 +23                       DO FLDCTRL^VALM10(SCLINE,"STATUS",IOINHI,IOINORM)
                       End DoDot:2
               End DoDot:1
 +24       QUIT 
 +25      ;
 +26      ;
DESLPAT(SCARY,SCLINE,SCTLOG) ; Description: Used to set patient to rejected.
 +1       ;
 +2       ;  Input:
 +3       ;    SCARY - Global array subscript
 +4       ;   SCLINE - Line number
 +5       ;   SCTLOG - Transmission log entry array
 +6       ;
 +7       ; Output: None
 +8       ;
 +9        NEW SCERROR
 +10      ;
 +11      ;Set patient to rejected
 +12       IF $$UPDSTAT^SCMCHLA(SCTLIEN,"RJ",.SCERROR)
               Begin DoDot:1
 +13               DO UPDPAT(SCARY,$SELECT($GET(SCTLOG("DFN")):SCTLOG("DFN"),1:"W"),$SELECT('$GET(SCTLOG("DFN")):SCLINE,1:""))
               End DoDot:1
 +14      IF '$TEST
               Begin DoDot:1
 +15               WRITE !,^TMP(SCARY,$JOB,SCLINE,0)
 +16               if $GET(SCERMSG)'=""
                       WRITE !,"...",$$LOWER^VALM1(SCERROR)
 +17               WRITE !,"...Unable to deselect patient for re-transmit"
 +18               DO PAUSE^VALM1
               End DoDot:1
 +19       QUIT 
 +20      ;
 +21      ;
UPDPAT(SCARY,SCDFN,LINE) ; Description: Update all PCMM HL7 Transmssion Log
 +1       ; entries in the list for the patient as 'rejected'.
 +2       ;
 +3       ;  Input:
 +4       ;   SCARY - Global array subscript
 +5       ;   SCDFN - Patient IEN
 +6       ;
 +7       ; Output: None
 +8       ;
 +9        if '$GET(LINE)
               SET LINE=999999
 +10       NEW SCLINE,SCTLIEN
 +11      ;
 +12      ;Loop thru entries in the list for the patient
 +13       SET SCLINE=0
 +14       IF SCDFN="W"
               IF LINE'=999999
                   SET SCLINE=LINE-.01
 +15       FOR 
               SET SCLINE=$ORDER(^TMP(SCARY_"IDX",$JOB,"PT",SCDFN,SCLINE))
               if (('SCLINE)!(SCLINE>LINE))
                   QUIT 
               SET SCTLIEN=+^(SCLINE)
               Begin DoDot:1
 +16      ;update entry that was marked for re-transmit to null
 +17               DO FLDTEXT^VALM10(SCLINE,"RETRANS"," ")
               End DoDot:1
 +18       QUIT 
 +19      ;
 +20      ;
UPDALL    ; Description: Update all PCMM HL7 Transmssion Log
 +1       ; entries in the list as 'marked for re-transmit'.
 +2       ;
 +3       ;  Input: None
 +4       ; Output: None
 +5       ;
 +6        NEW SCLINE,SCTLIEN,SCDFN
 +7       ;
 +8       ;Loop thru entries in the list for all patients
 +9        SET SCDFN=""
 +10       FOR 
               SET SCDFN=$ORDER(^TMP(SCARY_"IDX",$JOB,"PT",SCDFN))
               if 'SCDFN
                   QUIT 
               Begin DoDot:1
 +11      ;Loop thru entries in the list for the patient
 +12               SET SCLINE=0
 +13               FOR 
                       SET SCLINE=$ORDER(^TMP(SCARY_"IDX",$JOB,"PT",SCDFN,SCLINE))
                       if 'SCLINE
                           QUIT 
                       Begin DoDot:2
 +14                       SET NODE=^TMP(SCARY_"IDX",$JOB,"PT",SCDFN,SCLINE)
 +15                       SET SCTLIEN=+NODE
                           SET SCERIEN=+$PIECE(NODE,"^",2)
 +16      ;
 +17      ;get information for PCMM HL7 Transmission Log entry and invoke code
 +18      ;to set patient to 'rejected'.
 +19                       IF $$GETLOG^SCMCHLA(SCTLIEN,SCERIEN,.SCTLOG)
                               DO DESLPAT(SCARY,SCLINE,.SCTLOG)
 +20      ;
 +21      ;update entry that was marked for re-transmit to null
 +22                       DO FLDTEXT^VALM10(SCLINE,"RETRANS"," ")
                       End DoDot:2
               End DoDot:1
 +23      ;
 +24       QUIT