SCMCHLM ;BP/DJB - PCMM HL7 Mail Msgs ; 6/28/99 10:16am
 ;;5.3;Scheduling;**177,210,505**;AUG 13, 1993;Build 20
 ;
 ;Reference routine: SCDXMSG2
CMPLBULL(SENT,ERRCNT,VALER) ;Send completion bulletin
 ;
 ;Input  : SENT   - Number of messages sent to NPCD. Default=0.
 ;         ERRCNT - Number of errored messages.
 ;         VALER  - Array containing error messages.
 ;Output : None
 ;
 ;Check input
 S SENT=+$G(SENT)
 S ERRCNT=$G(ERRCNT)
 S VALER=$G(VALER)
 ;
 ;Declare variables
 NEW MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ,XMITPTR,LINE
 NEW ENCPTR,DELPTR,ENCDATE,ENCLOC,NAME,TMP,ENCZERO,SSN,PATZERO
 ;
 S MSGTXT="^TMP(""SCMC-XMIT-BLD"","_$J_",""BULLETIN"")"
 KILL @MSGTXT
 ;
 ;Put number of messages transmitted into message text
 S @MSGTXT@(1)="Transmission of PCMM Primary Care data to the NPCD has completed."
 S @MSGTXT@(2)=""
 S @MSGTXT@(3)="A total of "_SENT_" messages were sent."
 ;Put number of nontransmitted messages into message text
 S @MSGTXT@(4)="A total of "_ERRCNT_" messages were not sent."
 S @MSGTXT@(5)=""
 S @MSGTXT@(6)="Please review the IEMM Error listing for further detail."
 ;
 ;Set bulletin subject
 S XMB(1)="Transmission of data to NPCDB completed"
 ;Deliver bulletin
 S XMB="PCMM PRIMARY CARE DATA TO NPCDB SUMMARY"
 S XMTEXT=$P(MSGTXT,")",1)_","
 D ^XMB
 ;Done - clean up and quit
 KILL @MSGTXT
 Q
 ;
ERRBULL(REASON) ;Send error bulletin
 ;
 ;Input  : REASON - Why transmission of data could not be completed
 ;Output : None
 ;
 ;Check input
 S REASON=$G(REASON)
 ;
 ;Declare variables
 NEW MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ
 ;
 ;Set message text
 S MSGTXT(1)="Transmission of PCMM Primary Care data to the CDCO"
 S MSGTXT(2)=" "
 S MSGTXT(3)="could not be completed for the following reason:"
 S MSGTXT(4)=" "
 S MSGTXT(5)="  "_REASON
 ;
 ;Set bulletin subject
 S XMB(1)="** TRANSMISSION OF DATA TO NPCDB NOT COMPLETED **"
 ;Deliver bulletin
 S XMB="PCMM PRIMARY CARE DATA TO NPCDB SUMMARY"
 S XMTEXT="MSGTXT("
 D ^XMB
 ;
 ;Done
 Q
 ;
NOTIFY ; Description: This is used to send a message to local mail group.
 ; The notification message is used to alert users at the local site
 ; that new PCMM HL7 Transmission errors were received from the CDCO.
 ;
 ;Reference routine: SCMCHLRR
 ;
 ;  Input: None
 ; Output: None
 ;
 ;Init variables
 N ACK,SCBEG,SCCNT,SCEND,SCTLIEN,SCSTAT
 N SCAIEN,SCADFN,SCBIEN,SCCX,SCCY,SCGLB,SCCIENB,SCCIENA,SCTPSS
 N SCTPOS,SCY,SCX,SCINNAM
 N SCHLIEN,SCHLIEN1,SCHLIEN2,SCHLIEN3,SCHLIEN4,SCHLIEN5,SCINT
 N SCMCIDX,SCMCIE,SCMCTMX,SCMCTPX,SCMCX,SCMGIEN,SCTP
 S (SCTLIEN,SCBEG,SCEND,SCCNT)=0 K ^XTMP("SCMCHLM")
 S ^XTMP("SCMCHLM",0)=DT_U_DT
 ;
 ;Get data from PCMM HL7 Trans Log file for records that have
 ;have a status of 'rejected' and 'marked for re-transmit'
 F SCSTAT="M","RJ" D
 .F  S SCTLIEN=$O(^SCPT(404.471,"ASTAT",SCSTAT,SCTLIEN)) Q:SCTLIEN=""  D
 ..;
 ..;if Included In Reject Bulletin? field is not 'YES'
 ..I $$INCLUDE^SCMCHLA(SCTLIEN)'="Y" D
 ...;
 ...;count rejects received
 ...S SCCNT=SCCNT+1
 ...;
 ...;get institution,team,position and message ID
 ...S (SCTPOS,SCTPSS,SCINNAM,SCTP)="UNK"
 ...S SCAIEN=$G(^SCPT(404.471,SCTLIEN,0)) D
 ....S SCADFN=$P(SCAIEN,U,2),SCMGIEN=$P(SCAIEN,U),SCHLIEN=0
 ....F  S SCHLIEN=$O(^SCPT(404.471,SCTLIEN,"ZPC",SCHLIEN)) Q:SCHLIEN=""  D
 .....S SCHLIEN1=$G(^SCPT(404.471,SCTLIEN,"ZPC",SCHLIEN,0)) Q:SCHLIEN1=""
 .....S SCHLIEN2=$P(SCHLIEN1,U,2),SCHLIEN3=+$G(^SCPT(404.49,SCHLIEN2,0))
 .....S SCHLIEN4=$G(^SCPT(404.43,SCHLIEN3,0)) Q:SCHLIEN4=""
 .....S SCHLIEN5=$G(^SCPT(404.42,+SCHLIEN4,0)) Q:SCHLIEN5=""
 .....S SCTPOS=$P(SCHLIEN4,U,2),SCTPSS=$G(^SCTM(404.57,+SCTPOS,0))
 .....S SCTP=$P(SCTPSS,U,2),SCY=$G(^SCTM(404.51,+SCTP,0)),SCINT=$P(SCY,U,7)
 .....S SCINNAM=$$GET1^DIQ(4,+SCINT_",",.01)
 .....I '$D(^XTMP("SCMCHLM",$J,+SCINT,+SCAIEN)) D
 ......S ^XTMP("SCMCHLM",$J,+SCINT,+SCAIEN,+SCHLIEN)=SCINNAM_"^"_$P(SCTPSS,U)_"^"_$P(SCY,U)
 ...;get date/time of 'earliest' and 'latest' reject msg
 ...S ACK=$$ACK^SCMCHLA(SCTLIEN)
 ...I 'SCBEG S SCBEG=ACK
 ...I ACK<SCBEG S SCBEG=ACK
 ...I 'SCEND S SCEND=ACK
 ...I ACK>SCEND S SCEND=ACK
 ...;
 ...;set Included In Reject Bulletin? field of record to 'YES'
 ...I $$UPDINCL^SCMCHLA(SCTLIEN,"Y")
 ;
 ;If reject msgs, then send notification message
 I SCCNT D SEND(SCBEG,SCEND,SCCNT)
 Q
 ;
SEND(SCBEG,SCEND,SCCNT) ;
 ; Description: Used to send PCMM Transmission Errors Received
 ; notification message.
 ;
 ;  Input:
 ;   SCBEG - internal FM date/time earliest error received
 ;   SCEND - internal FM date/time latest error received
 ;   SCCNT - count of errors received
 ;
 ; Output: None
 ;
 N SCRANGE,TEXT,XMDUN,XMDUZ,XMTEXT,XMROU,XMSTRIP,XMSUB,XMY,XMZ
 ;
 ;Init subj/sender
 S XMSUB="PCMM Transmission Errors Received"
 S (XMDUN,XMDUZ)="PCMM Module"
 ;
 ;Recipient (mail group)
 S XMY("G.PCMM TRANSMISSION ERRORS")=""
 ;
 ;Message body
 S XMTEXT="TEXT("
 S TEXT(1)="PCMM reject transmissions have been received from the Corporate"
 S TEXT(2)="Data Center Operations (CDCO)."
 S TEXT(3)=""
 S SCRANGE=" Reject Transmissions Received: "_$$FMTE^XLFDT($G(SCBEG),"2P")_" thru "_$$FMTE^XLFDT($G(SCEND),"2P")
 S TEXT(4)=SCRANGE
 S TEXT(5)="  Total Transmissions Rejected: "_$G(SCCNT)
 S TEXT(6)=""
 S TEXT(7)="Please use the PCMM Transmission Error Processing option for a"
 S TEXT(8)="list of the errors associated with these rejected transmissions."
 S TEXT(9)=""
 S TEXT(10)="Institution              Message ID        Team             Position"
 S TEXT(11)="===========              ==========        ====             ========"
 S TEXT(12)=""
 N SCMCID,SCMCIN,SCMCIDN,SCMCTM,SCMCTP,SCMCINNM,SCMCL
 S SCMCL=12
 S SCMCIN=0 F  S SCMCIN=$O(^XTMP("SCMCHLM",$J,SCMCIN)) Q:SCMCIN=""  D
 .S SCMCID=0 F  S SCMCID=$O(^XTMP("SCMCHLM",$J,SCMCIN,SCMCID)) Q:SCMCID=""  D
 ..S SCMCIE=0 F  S SCMCIE=$O(^XTMP("SCMCHLM",$J,SCMCIN,SCMCID,SCMCIE)) Q:SCMCIE<1  D
 ...S SCMCIDN=$G(^XTMP("SCMCHLM",$J,SCMCIN,SCMCID,SCMCIE))
 ...S SCMCINNM=$E($P(SCMCIDN,U,1),1,17),SCMCTM=$E($P(SCMCIDN,U,2),1,20)
 ...S SCMCTP=$E($P(SCMCIDN,U,3),1,20),SCMCL=SCMCL+1
 ...S SCMCX=SCMCINNM_$E("                    ",1,20-$L(SCMCINNM))
 ...S SCMCIDX=$E("                    ",1,15-$L(SCMCID))_SCMCID
 ...S SCMCX=SCMCX_SCMCIDX
 ...S SCMCTMX=$E("                     ",1,17-$L(SCMCTM))_SCMCTM
 ...S SCMCX=SCMCX_SCMCTMX
 ...S SCMCTPX=$E("                     ",1,17-$L(SCMCTP))_SCMCTP
 ...S SCMCX=SCMCX_SCMCTPX
 ...S TEXT(SCMCL)=SCMCX
 ;
 ;Mailman delivery
 D ^XMD
 K ^XTMP("SCMCHLM")
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCMCHLM   6572     printed  Sep 23, 2025@20:16:51                                                                                                                                                                                                     Page 2
SCMCHLM   ;BP/DJB - PCMM HL7 Mail Msgs ; 6/28/99 10:16am
 +1       ;;5.3;Scheduling;**177,210,505**;AUG 13, 1993;Build 20
 +2       ;
 +3       ;Reference routine: SCDXMSG2
CMPLBULL(SENT,ERRCNT,VALER) ;Send completion bulletin
 +1       ;
 +2       ;Input  : SENT   - Number of messages sent to NPCD. Default=0.
 +3       ;         ERRCNT - Number of errored messages.
 +4       ;         VALER  - Array containing error messages.
 +5       ;Output : None
 +6       ;
 +7       ;Check input
 +8        SET SENT=+$GET(SENT)
 +9        SET ERRCNT=$GET(ERRCNT)
 +10       SET VALER=$GET(VALER)
 +11      ;
 +12      ;Declare variables
 +13       NEW MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ,XMITPTR,LINE
 +14       NEW ENCPTR,DELPTR,ENCDATE,ENCLOC,NAME,TMP,ENCZERO,SSN,PATZERO
 +15      ;
 +16       SET MSGTXT="^TMP(""SCMC-XMIT-BLD"","_$JOB_",""BULLETIN"")"
 +17       KILL @MSGTXT
 +18      ;
 +19      ;Put number of messages transmitted into message text
 +20       SET @MSGTXT@(1)="Transmission of PCMM Primary Care data to the NPCD has completed."
 +21       SET @MSGTXT@(2)=""
 +22       SET @MSGTXT@(3)="A total of "_SENT_" messages were sent."
 +23      ;Put number of nontransmitted messages into message text
 +24       SET @MSGTXT@(4)="A total of "_ERRCNT_" messages were not sent."
 +25       SET @MSGTXT@(5)=""
 +26       SET @MSGTXT@(6)="Please review the IEMM Error listing for further detail."
 +27      ;
 +28      ;Set bulletin subject
 +29       SET XMB(1)="Transmission of data to NPCDB completed"
 +30      ;Deliver bulletin
 +31       SET XMB="PCMM PRIMARY CARE DATA TO NPCDB SUMMARY"
 +32       SET XMTEXT=$PIECE(MSGTXT,")",1)_","
 +33       DO ^XMB
 +34      ;Done - clean up and quit
 +35       KILL @MSGTXT
 +36       QUIT 
 +37      ;
ERRBULL(REASON) ;Send error bulletin
 +1       ;
 +2       ;Input  : REASON - Why transmission of data could not be completed
 +3       ;Output : None
 +4       ;
 +5       ;Check input
 +6        SET REASON=$GET(REASON)
 +7       ;
 +8       ;Declare variables
 +9        NEW MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ
 +10      ;
 +11      ;Set message text
 +12       SET MSGTXT(1)="Transmission of PCMM Primary Care data to the CDCO"
 +13       SET MSGTXT(2)=" "
 +14       SET MSGTXT(3)="could not be completed for the following reason:"
 +15       SET MSGTXT(4)=" "
 +16       SET MSGTXT(5)="  "_REASON
 +17      ;
 +18      ;Set bulletin subject
 +19       SET XMB(1)="** TRANSMISSION OF DATA TO NPCDB NOT COMPLETED **"
 +20      ;Deliver bulletin
 +21       SET XMB="PCMM PRIMARY CARE DATA TO NPCDB SUMMARY"
 +22       SET XMTEXT="MSGTXT("
 +23       DO ^XMB
 +24      ;
 +25      ;Done
 +26       QUIT 
 +27      ;
NOTIFY    ; Description: This is used to send a message to local mail group.
 +1       ; The notification message is used to alert users at the local site
 +2       ; that new PCMM HL7 Transmission errors were received from the CDCO.
 +3       ;
 +4       ;Reference routine: SCMCHLRR
 +5       ;
 +6       ;  Input: None
 +7       ; Output: None
 +8       ;
 +9       ;Init variables
 +10       NEW ACK,SCBEG,SCCNT,SCEND,SCTLIEN,SCSTAT
 +11       NEW SCAIEN,SCADFN,SCBIEN,SCCX,SCCY,SCGLB,SCCIENB,SCCIENA,SCTPSS
 +12       NEW SCTPOS,SCY,SCX,SCINNAM
 +13       NEW SCHLIEN,SCHLIEN1,SCHLIEN2,SCHLIEN3,SCHLIEN4,SCHLIEN5,SCINT
 +14       NEW SCMCIDX,SCMCIE,SCMCTMX,SCMCTPX,SCMCX,SCMGIEN,SCTP
 +15       SET (SCTLIEN,SCBEG,SCEND,SCCNT)=0
           KILL ^XTMP("SCMCHLM")
 +16       SET ^XTMP("SCMCHLM",0)=DT_U_DT
 +17      ;
 +18      ;Get data from PCMM HL7 Trans Log file for records that have
 +19      ;have a status of 'rejected' and 'marked for re-transmit'
 +20       FOR SCSTAT="M","RJ"
               Begin DoDot:1
 +21               FOR 
                       SET SCTLIEN=$ORDER(^SCPT(404.471,"ASTAT",SCSTAT,SCTLIEN))
                       if SCTLIEN=""
                           QUIT 
                       Begin DoDot:2
 +22      ;
 +23      ;if Included In Reject Bulletin? field is not 'YES'
 +24                       IF $$INCLUDE^SCMCHLA(SCTLIEN)'="Y"
                               Begin DoDot:3
 +25      ;
 +26      ;count rejects received
 +27                               SET SCCNT=SCCNT+1
 +28      ;
 +29      ;get institution,team,position and message ID
 +30                               SET (SCTPOS,SCTPSS,SCINNAM,SCTP)="UNK"
 +31                               SET SCAIEN=$GET(^SCPT(404.471,SCTLIEN,0))
                                   Begin DoDot:4
 +32                                   SET SCADFN=$PIECE(SCAIEN,U,2)
                                       SET SCMGIEN=$PIECE(SCAIEN,U)
                                       SET SCHLIEN=0
 +33                                   FOR 
                                           SET SCHLIEN=$ORDER(^SCPT(404.471,SCTLIEN,"ZPC",SCHLIEN))
                                           if SCHLIEN=""
                                               QUIT 
                                           Begin DoDot:5
 +34                                           SET SCHLIEN1=$GET(^SCPT(404.471,SCTLIEN,"ZPC",SCHLIEN,0))
                                               if SCHLIEN1=""
                                                   QUIT 
 +35                                           SET SCHLIEN2=$PIECE(SCHLIEN1,U,2)
                                               SET SCHLIEN3=+$GET(^SCPT(404.49,SCHLIEN2,0))
 +36                                           SET SCHLIEN4=$GET(^SCPT(404.43,SCHLIEN3,0))
                                               if SCHLIEN4=""
                                                   QUIT 
 +37                                           SET SCHLIEN5=$GET(^SCPT(404.42,+SCHLIEN4,0))
                                               if SCHLIEN5=""
                                                   QUIT 
 +38                                           SET SCTPOS=$PIECE(SCHLIEN4,U,2)
                                               SET SCTPSS=$GET(^SCTM(404.57,+SCTPOS,0))
 +39                                           SET SCTP=$PIECE(SCTPSS,U,2)
                                               SET SCY=$GET(^SCTM(404.51,+SCTP,0))
                                               SET SCINT=$PIECE(SCY,U,7)
 +40                                           SET SCINNAM=$$GET1^DIQ(4,+SCINT_",",.01)
 +41                                           IF '$DATA(^XTMP("SCMCHLM",$JOB,+SCINT,+SCAIEN))
                                                   Begin DoDot:6
 +42                                                   SET ^XTMP("SCMCHLM",$JOB,+SCINT,+SCAIEN,+SCHLIEN)=SCINNAM_"^"_$PIECE(SCTPSS,U)_"^"_$PIECE(SCY,U)
                                                   End DoDot:6
                                           End DoDot:5
                                   End DoDot:4
 +43      ;get date/time of 'earliest' and 'latest' reject msg
 +44                               SET ACK=$$ACK^SCMCHLA(SCTLIEN)
 +45                               IF 'SCBEG
                                       SET SCBEG=ACK
 +46                               IF ACK<SCBEG
                                       SET SCBEG=ACK
 +47                               IF 'SCEND
                                       SET SCEND=ACK
 +48                               IF ACK>SCEND
                                       SET SCEND=ACK
 +49      ;
 +50      ;set Included In Reject Bulletin? field of record to 'YES'
 +51                               IF $$UPDINCL^SCMCHLA(SCTLIEN,"Y")
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +52      ;
 +53      ;If reject msgs, then send notification message
 +54       IF SCCNT
               DO SEND(SCBEG,SCEND,SCCNT)
 +55       QUIT 
 +56      ;
SEND(SCBEG,SCEND,SCCNT) ;
 +1       ; Description: Used to send PCMM Transmission Errors Received
 +2       ; notification message.
 +3       ;
 +4       ;  Input:
 +5       ;   SCBEG - internal FM date/time earliest error received
 +6       ;   SCEND - internal FM date/time latest error received
 +7       ;   SCCNT - count of errors received
 +8       ;
 +9       ; Output: None
 +10      ;
 +11       NEW SCRANGE,TEXT,XMDUN,XMDUZ,XMTEXT,XMROU,XMSTRIP,XMSUB,XMY,XMZ
 +12      ;
 +13      ;Init subj/sender
 +14       SET XMSUB="PCMM Transmission Errors Received"
 +15       SET (XMDUN,XMDUZ)="PCMM Module"
 +16      ;
 +17      ;Recipient (mail group)
 +18       SET XMY("G.PCMM TRANSMISSION ERRORS")=""
 +19      ;
 +20      ;Message body
 +21       SET XMTEXT="TEXT("
 +22       SET TEXT(1)="PCMM reject transmissions have been received from the Corporate"
 +23       SET TEXT(2)="Data Center Operations (CDCO)."
 +24       SET TEXT(3)=""
 +25       SET SCRANGE=" Reject Transmissions Received: "_$$FMTE^XLFDT($GET(SCBEG),"2P")_" thru "_$$FMTE^XLFDT($GET(SCEND),"2P")
 +26       SET TEXT(4)=SCRANGE
 +27       SET TEXT(5)="  Total Transmissions Rejected: "_$GET(SCCNT)
 +28       SET TEXT(6)=""
 +29       SET TEXT(7)="Please use the PCMM Transmission Error Processing option for a"
 +30       SET TEXT(8)="list of the errors associated with these rejected transmissions."
 +31       SET TEXT(9)=""
 +32       SET TEXT(10)="Institution              Message ID        Team             Position"
 +33       SET TEXT(11)="===========              ==========        ====             ========"
 +34       SET TEXT(12)=""
 +35       NEW SCMCID,SCMCIN,SCMCIDN,SCMCTM,SCMCTP,SCMCINNM,SCMCL
 +36       SET SCMCL=12
 +37       SET SCMCIN=0
           FOR 
               SET SCMCIN=$ORDER(^XTMP("SCMCHLM",$JOB,SCMCIN))
               if SCMCIN=""
                   QUIT 
               Begin DoDot:1
 +38               SET SCMCID=0
                   FOR 
                       SET SCMCID=$ORDER(^XTMP("SCMCHLM",$JOB,SCMCIN,SCMCID))
                       if SCMCID=""
                           QUIT 
                       Begin DoDot:2
 +39                       SET SCMCIE=0
                           FOR 
                               SET SCMCIE=$ORDER(^XTMP("SCMCHLM",$JOB,SCMCIN,SCMCID,SCMCIE))
                               if SCMCIE<1
                                   QUIT 
                               Begin DoDot:3
 +40                               SET SCMCIDN=$GET(^XTMP("SCMCHLM",$JOB,SCMCIN,SCMCID,SCMCIE))
 +41                               SET SCMCINNM=$EXTRACT($PIECE(SCMCIDN,U,1),1,17)
                                   SET SCMCTM=$EXTRACT($PIECE(SCMCIDN,U,2),1,20)
 +42                               SET SCMCTP=$EXTRACT($PIECE(SCMCIDN,U,3),1,20)
                                   SET SCMCL=SCMCL+1
 +43                               SET SCMCX=SCMCINNM_$EXTRACT("                    ",1,20-$LENGTH(SCMCINNM))
 +44                               SET SCMCIDX=$EXTRACT("                    ",1,15-$LENGTH(SCMCID))_SCMCID
 +45                               SET SCMCX=SCMCX_SCMCIDX
 +46                               SET SCMCTMX=$EXTRACT("                     ",1,17-$LENGTH(SCMCTM))_SCMCTM
 +47                               SET SCMCX=SCMCX_SCMCTMX
 +48                               SET SCMCTPX=$EXTRACT("                     ",1,17-$LENGTH(SCMCTP))_SCMCTP
 +49                               SET SCMCX=SCMCX_SCMCTPX
 +50                               SET TEXT(SCMCL)=SCMCX
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +51      ;
 +52      ;Mailman delivery
 +53       DO ^XMD
 +54       KILL ^XTMP("SCMCHLM")
 +55       QUIT