- PSXMSGS ;BIR/WPB-Miscellaneous Message Handler ;01 JUL 1997 1:55 PM
- ;;2.0;CMOP;**1,2,4,24,23,27,30,41**;11 Apr 97
- ;Reference to ^PS(59 supported by DBIA #1976
- ;Reference to File #200 supported by DBIA #10060
- CAN ;Q:'$D(^TMP("PSXCAN1",$J))
- S DV="" F S DV=$O(^TMP("PSXCAN1",$J,DV)) Q:DV="" S DIVN=$P(^PS(59,DV,0),"^") D PNM
- Q
- PNM S XMSUB=DIVN_" CMOP Not Dispensed Rx List, ",XMDUZ=.5,XMDUN="CMOP Manager"
- D XMZ^XMA2 G:XMZ<0 CAN
- S LCNT=1,^XMB(3.9,XMZ,2,LCNT,0)="Not Dispensed Rx Report for the "_DIVN_" Division.",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="The following prescriptions were not dispensed by the vendor: ",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="",LCNT=LCNT+1
- S DFN="" F S DFN=$O(^TMP("PSXCAN1",$J,DV,DFN)) Q:DFN="" S PNM=$P(^DPT(DFN,0),"^"),SSN1=$P(^DPT(DFN,0),"^",9),SPS=(47-$L(PNM)),PSXSSN=$E(SSN1,1,3)_"-"_$E(SSN1,4,5)_"-"_$E(SSN1,6,9) D
- .F I=1:1:SPS S SP=$G(SP)_" "
- .S ^XMB(3.9,XMZ,2,LCNT,0)="Patient: "_PNM_SP_"SSN: "_PSXSSN,LCNT=LCNT+1
- .S ^XMB(3.9,XMZ,2,LCNT,0)="",LCNT=LCNT+1
- .S RX1="" F S RX1=$O(^TMP("PSXCAN1",$J,DV,DFN,RX1)) Q:RX1="" D
- ..S NODE=^TMP("PSXCAN1",$J,DV,DFN,RX1)
- ..S REASON=$P(NODE,"^",6),BT=$P(NODE,"^",8),FIL=$P(NODE,"^",7)
- ..S FLL=$S(FIL>0:"REFILL "_FIL,FIL=0:"ORIGINAL",1:"")
- ..S DRGN=$S($P($G(NODE),"^",1)'="":$P(NODE,"^",1),1:"UNKNOWN")
- ..S DRGI=$P(NODE,"^",4),CMOPYN=$P(NODE,"^",5),QY=$P(NODE,"^",3)
- ..S ^XMB(3.9,XMZ,2,LCNT,0)=" Rx #: "_RX1_" "_$S(FIL'>0:"(ORG)",FIL>0:"(REF"_FIL_")",1:"")_" Qty: "_QY_" Trans #: "_BT,LCNT=LCNT+1
- ..S ^XMB(3.9,XMZ,2,LCNT,0)=" Drug: "_DRGN,LCNT=LCNT+1
- ..S ^XMB(3.9,XMZ,2,LCNT,0)=" Transmitted under CMOP ID: "_$G(DRGI),LCNT=LCNT+1
- ..S ^XMB(3.9,XMZ,2,LCNT,0)=" Reason: "_REASON,LCNT=LCNT+1
- ..I $G(CMOPYN)=1 S ^XMB(3.9,XMZ,2,LCNT,0)=" Note: Local Drug File entry is no longer MARKED for CMOP ",LCNT=LCNT+1
- ..S:$P(NODE,"^",2)'=$G(DRGI) ^XMB(3.9,XMZ,2,LCNT,0)=" Note: Local Drug File entry is no longer MATCHED to transmitted CMOP I.D. ",LCNT=LCNT+1
- ..S ^XMB(3.9,XMZ,2,LCNT,0)=" ",LCNT=LCNT+1
- ..K CMOPYN,FLL,FIL,BT,REASON,DRGI,DRGN,QY,I,SP,SPS,SP1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Instructions: Prescriptions cannot be processed at CMOP for the reason listed",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="above. Please review the prescription and take the appropriate action(s).",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="If you have any questions, contact your CMOP contact person.",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT,XMDUN="CMOP Manager"
- K XMY D GRP S XMDUZ=.5 D ENT1^XMD
- K XMY,XMDUZ,XMSUB,XMDUN,REASON,RXN,LCNT,XMZ,FILL,FIL,TDT,TDTM,BAT,DOMAIN,PTR,XPTR,FACDOM
- Q
- INVREL S XMSUB="CMOP Release Return Problems",XMDUZ=DUZ,XMDUN="CMOP Manager"
- D XMZ^XMA2 G:XMZ<0 INVREL
- S LCNT=1
- S RXNN="" F S RXNN=$O(^TMP($J,"PSXINV",RXNN)) Q:RXNN="" D
- .S ^XMB(3.9,XMZ,2,LCNT,0)=RXNN_" has already been marked as processed",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT,XMDUN="CMOP Manager",XMDUZ=DUZ
- K XMY S XMY(DUZ)="" D ENT1^XMD
- Q
- AUTOMSG N TSK D NOW^%DTC S DTE=$$FMTE^XLFDT(%,1),SITE=$P($G(PSXSYS),U,3) K %
- I $G(PSXCS)'=1 G NONCS ; If not controlled subs
- D OPTSTAT^XUTMOPT("PSXR SCHEDULED CS TRANS",.TSK)
- S DTTM=$P($G(TSK(1)),U,2),NUM=+$P($G(TSK(1)),U,3),THRU=$$GET1^DIQ(550,+PSXSYS,12)
- G MSG1
- NONCS ;
- D OPTSTAT^XUTMOPT("PSXR SCHEDULED NON-CS TRANS",.TSK)
- S DTTM=$P($G(TSK(1)),U,2),NUM=+$P($G(TSK(1)),U,3),THRU=$$GET1^DIQ(550,+PSXSYS,11)
- MSG1 S XMDUZ=.5,XMSUB="CMOP "_$S($G(PSXCS)=1:"CS ",1:"")_"Auto-Transmission Schedule",LCNT=1
- I DTTM S Y=DTTM X ^DD("DD") S DTTM=Y I 1
- E S DTTM="NONE - Canceled",(NUM,THRU)=""
- D XMZ^XMA2 G:XMZ<1 AUTOMSG
- S ^XMB(3.9,XMZ,2,LCNT,0)=$S(DTTM["NONE":"<CANCEL> ",1:"")_$S($G(PSXCS)=1:"CS ",1:"")_"Auto-transmission Schedule.",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="",LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Facility : "_SITE,LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Date Initiated : "_$P(DTE,":",1,2),LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Begin Automatic Transmissions : "_DTTM,LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Number of days to transmit thru: "_$S((($G(THRU)'>0)&(+NUM)):"Current date",1:$G(THRU)),LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Scheduling Frequency (hours) : "_NUM,LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,LCNT,0)="Initiating Official : "_$$GET1^DIQ(200,DUZ,.01),LCNT=LCNT+1
- S ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT,XMDUN="CMOP Manager"
- K XMY S XMDUZ=.5
- D GRP^PSXNOTE
- ;S XMY(DUZ)=""
- D ENT1^XMD
- Q
- GRP I '$D(^XUSEC("PSXMAIL")) G GRP1
- F MDUZ=0:0 S MDUZ=$O(^XUSEC("PSXMAIL",MDUZ)) Q:MDUZ'>0 S XMY(MDUZ)="",XQA(MDUZ)=""
- K MDUZ
- G:'$D(XMY) GRP1
- Q
- GRP1 F XDUZ=0:0 S XDUZ=$O(^XUSEC("PSXCMOPMGR",XDUZ)) Q:XDUZ'>0 S XMY(XDUZ)="",XQA(XDUZ)=""
- K XDUZ
- Q
- PSXMSGS ;BIR/WPB-Miscellaneous Message Handler ;01 JUL 1997 1:55 PM
- +1 ;;2.0;CMOP;**1,2,4,24,23,27,30,41**;11 Apr 97
- +2 ;Reference to ^PS(59 supported by DBIA #1976
- +3 ;Reference to File #200 supported by DBIA #10060
- CAN ;Q:'$D(^TMP("PSXCAN1",$J))
- +1 SET DV=""
- FOR
- SET DV=$ORDER(^TMP("PSXCAN1",$JOB,DV))
- IF DV=""
- QUIT
- SET DIVN=$PIECE(^PS(59,DV,0),"^")
- DO PNM
- +2 QUIT
- PNM SET XMSUB=DIVN_" CMOP Not Dispensed Rx List, "
- SET XMDUZ=.5
- SET XMDUN="CMOP Manager"
- +1 DO XMZ^XMA2
- IF XMZ<0
- GOTO CAN
- +2 SET LCNT=1
- SET ^XMB(3.9,XMZ,2,LCNT,0)="Not Dispensed Rx Report for the "_DIVN_" Division."
- SET LCNT=LCNT+1
- +3 SET ^XMB(3.9,XMZ,2,LCNT,0)=""
- SET LCNT=LCNT+1
- +4 SET ^XMB(3.9,XMZ,2,LCNT,0)="The following prescriptions were not dispensed by the vendor: "
- SET LCNT=LCNT+1
- +5 SET ^XMB(3.9,XMZ,2,LCNT,0)=""
- SET LCNT=LCNT+1
- +6 SET DFN=""
- FOR
- SET DFN=$ORDER(^TMP("PSXCAN1",$JOB,DV,DFN))
- IF DFN=""
- QUIT
- SET PNM=$PIECE(^DPT(DFN,0),"^")
- SET SSN1=$PIECE(^DPT(DFN,0),"^",9)
- SET SPS=(47-$LENGTH(PNM))
- SET PSXSSN=$EXTRACT(SSN1,1,3)_"-"_$EXTRACT(SSN1,4,5)_"-"_$EXTRACT(SSN1,6,9)
- Begin DoDot:1
- +7 FOR I=1:1:SPS
- SET SP=$GET(SP)_" "
- +8 SET ^XMB(3.9,XMZ,2,LCNT,0)="Patient: "_PNM_SP_"SSN: "_PSXSSN
- SET LCNT=LCNT+1
- +9 SET ^XMB(3.9,XMZ,2,LCNT,0)=""
- SET LCNT=LCNT+1
- +10 SET RX1=""
- FOR
- SET RX1=$ORDER(^TMP("PSXCAN1",$JOB,DV,DFN,RX1))
- IF RX1=""
- QUIT
- Begin DoDot:2
- +11 SET NODE=^TMP("PSXCAN1",$JOB,DV,DFN,RX1)
- +12 SET REASON=$PIECE(NODE,"^",6)
- SET BT=$PIECE(NODE,"^",8)
- SET FIL=$PIECE(NODE,"^",7)
- +13 SET FLL=$SELECT(FIL>0:"REFILL "_FIL,FIL=0:"ORIGINAL",1:"")
- +14 SET DRGN=$SELECT($PIECE($GET(NODE),"^",1)'="":$PIECE(NODE,"^",1),1:"UNKNOWN")
- +15 SET DRGI=$PIECE(NODE,"^",4)
- SET CMOPYN=$PIECE(NODE,"^",5)
- SET QY=$PIECE(NODE,"^",3)
- +16 SET ^XMB(3.9,XMZ,2,LCNT,0)=" Rx #: "_RX1_" "_$SELECT(FIL'>0:"(ORG)",FIL>0:"(REF"_FIL_")",1:"")_" Qty: "_QY_" Trans #: "_BT
- SET LCNT=LCNT+1
- +17 SET ^XMB(3.9,XMZ,2,LCNT,0)=" Drug: "_DRGN
- SET LCNT=LCNT+1
- +18 SET ^XMB(3.9,XMZ,2,LCNT,0)=" Transmitted under CMOP ID: "_$GET(DRGI)
- SET LCNT=LCNT+1
- +19 SET ^XMB(3.9,XMZ,2,LCNT,0)=" Reason: "_REASON
- SET LCNT=LCNT+1
- +20 IF $GET(CMOPYN)=1
- SET ^XMB(3.9,XMZ,2,LCNT,0)=" Note: Local Drug File entry is no longer MARKED for CMOP "
- SET LCNT=LCNT+1
- +21 IF $PIECE(NODE,"^",2)'=$GET(DRGI)
- SET ^XMB(3.9,XMZ,2,LCNT,0)=" Note: Local Drug File entry is no longer MATCHED to transmitted CMOP I.D. "
- SET LCNT=LCNT+1
- +22 SET ^XMB(3.9,XMZ,2,LCNT,0)=" "
- SET LCNT=LCNT+1
- +23 KILL CMOPYN,FLL,FIL,BT,REASON,DRGI,DRGN,QY,I,SP,SPS,SP1
- End DoDot:2
- End DoDot:1
- +24 SET ^XMB(3.9,XMZ,2,LCNT,0)="Instructions: Prescriptions cannot be processed at CMOP for the reason listed"
- SET LCNT=LCNT+1
- +25 SET ^XMB(3.9,XMZ,2,LCNT,0)="above. Please review the prescription and take the appropriate action(s)."
- SET LCNT=LCNT+1
- +26 SET ^XMB(3.9,XMZ,2,LCNT,0)="If you have any questions, contact your CMOP contact person."
- SET LCNT=LCNT+1
- +27 SET ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT
- SET XMDUN="CMOP Manager"
- +28 KILL XMY
- DO GRP
- SET XMDUZ=.5
- DO ENT1^XMD
- +29 KILL XMY,XMDUZ,XMSUB,XMDUN,REASON,RXN,LCNT,XMZ,FILL,FIL,TDT,TDTM,BAT,DOMAIN,PTR,XPTR,FACDOM
- +30 QUIT
- INVREL SET XMSUB="CMOP Release Return Problems"
- SET XMDUZ=DUZ
- SET XMDUN="CMOP Manager"
- +1 DO XMZ^XMA2
- IF XMZ<0
- GOTO INVREL
- +2 SET LCNT=1
- +3 SET RXNN=""
- FOR
- SET RXNN=$ORDER(^TMP($JOB,"PSXINV",RXNN))
- IF RXNN=""
- QUIT
- Begin DoDot:1
- +4 SET ^XMB(3.9,XMZ,2,LCNT,0)=RXNN_" has already been marked as processed"
- SET LCNT=LCNT+1
- End DoDot:1
- +5 SET ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT
- SET XMDUN="CMOP Manager"
- SET XMDUZ=DUZ
- +6 KILL XMY
- SET XMY(DUZ)=""
- DO ENT1^XMD
- +7 QUIT
- AUTOMSG NEW TSK
- DO NOW^%DTC
- SET DTE=$$FMTE^XLFDT(%,1)
- SET SITE=$PIECE($GET(PSXSYS),U,3)
- KILL %
- +1 ; If not controlled subs
- IF $GET(PSXCS)'=1
- GOTO NONCS
- +2 DO OPTSTAT^XUTMOPT("PSXR SCHEDULED CS TRANS",.TSK)
- +3 SET DTTM=$PIECE($GET(TSK(1)),U,2)
- SET NUM=+$PIECE($GET(TSK(1)),U,3)
- SET THRU=$$GET1^DIQ(550,+PSXSYS,12)
- +4 GOTO MSG1
- NONCS ;
- +1 DO OPTSTAT^XUTMOPT("PSXR SCHEDULED NON-CS TRANS",.TSK)
- +2 SET DTTM=$PIECE($GET(TSK(1)),U,2)
- SET NUM=+$PIECE($GET(TSK(1)),U,3)
- SET THRU=$$GET1^DIQ(550,+PSXSYS,11)
- MSG1 SET XMDUZ=.5
- SET XMSUB="CMOP "_$SELECT($GET(PSXCS)=1:"CS ",1:"")_"Auto-Transmission Schedule"
- SET LCNT=1
- +1 IF DTTM
- SET Y=DTTM
- XECUTE ^DD("DD")
- SET DTTM=Y
- IF 1
- +2 IF '$TEST
- SET DTTM="NONE - Canceled"
- SET (NUM,THRU)=""
- +3 DO XMZ^XMA2
- IF XMZ<1
- GOTO AUTOMSG
- +4 SET ^XMB(3.9,XMZ,2,LCNT,0)=$SELECT(DTTM["NONE":"<CANCEL> ",1:"")_$SELECT($GET(PSXCS)=1:"CS ",1:"")_"Auto-transmission Schedule."
- SET LCNT=LCNT+1
- +5 SET ^XMB(3.9,XMZ,2,LCNT,0)=""
- SET LCNT=LCNT+1
- +6 SET ^XMB(3.9,XMZ,2,LCNT,0)="Facility : "_SITE
- SET LCNT=LCNT+1
- +7 SET ^XMB(3.9,XMZ,2,LCNT,0)="Date Initiated : "_$PIECE(DTE,":",1,2)
- SET LCNT=LCNT+1
- +8 SET ^XMB(3.9,XMZ,2,LCNT,0)="Begin Automatic Transmissions : "_DTTM
- SET LCNT=LCNT+1
- +9 SET ^XMB(3.9,XMZ,2,LCNT,0)="Number of days to transmit thru: "_$SELECT((($GET(THRU)'>0)&(+NUM)):"Current date",1:$GET(THRU))
- SET LCNT=LCNT+1
- +10 SET ^XMB(3.9,XMZ,2,LCNT,0)="Scheduling Frequency (hours) : "_NUM
- SET LCNT=LCNT+1
- +11 SET ^XMB(3.9,XMZ,2,LCNT,0)="Initiating Official : "_$$GET1^DIQ(200,DUZ,.01)
- SET LCNT=LCNT+1
- +12 SET ^XMB(3.9,XMZ,2,0)="^3.92A^"_LCNT_"^"_LCNT_"^"_DT
- SET XMDUN="CMOP Manager"
- +13 KILL XMY
- SET XMDUZ=.5
- +14 DO GRP^PSXNOTE
- +15 ;S XMY(DUZ)=""
- +16 DO ENT1^XMD
- +17 QUIT
- GRP IF '$DATA(^XUSEC("PSXMAIL"))
- GOTO GRP1
- +1 FOR MDUZ=0:0
- SET MDUZ=$ORDER(^XUSEC("PSXMAIL",MDUZ))
- IF MDUZ'>0
- QUIT
- SET XMY(MDUZ)=""
- SET XQA(MDUZ)=""
- +2 KILL MDUZ
- +3 IF '$DATA(XMY)
- GOTO GRP1
- +4 QUIT
- GRP1 FOR XDUZ=0:0
- SET XDUZ=$ORDER(^XUSEC("PSXCMOPMGR",XDUZ))
- IF XDUZ'>0
- QUIT
- SET XMY(XDUZ)=""
- SET XQA(XDUZ)=""
- +1 KILL XDUZ
- +2 QUIT