- SCMCHLR ;BP/DJB - PCMM HL7 Re-transmit Rejects ; 8/25/99 2:29pm
- ;;5.3;Scheduling;**177**;May 01, 1999
- ;
- EN ;
- NEW DFN,SCDELETE,SCMSG,VARPTR
- TOP ;
- D GETMSG ;............Get SCMSG() array for Austin Mailman message.
- G:'SCMSG("IEN") EXIT ;Quit if no message selected.
- D ARRAY ;.............Build array of message text
- D PARSE G:'DFN EXIT ;.Get DFN, VARPTR, and SCDELETE
- G:'$$ASK() TOP ;......Are they sure they want to re-transmit?
- D RETRAN ;............Re-transmit selected items.
- EXIT ;
- KILL ^TMP("REJECTS",$J)
- Q
- ;
- GETMSG ;Prompt for reject message number.
- ;Output:
- ; SCMSG("IEN") - Message IEN
- ; Return SCMSG("IEN")=0 if no msg selected.
- ; SCMSG("SUBJ") - Message subject
- ; SCMSG("FROM") - Message sender
- ;
- NEW %,%DT,ANS,DATA,HD,LINE,X,Y
- ;
- S $P(LINE,"-",IOM)=""
- S HD="RE-TRANSMIT PCMM HL7 MESSAGES"
- W @IOF,!?(IOM-$L(HD)\2),HD
- W !,LINE
- W !!,"Select an Austin HL7 rejection Mailman message."
- GETMSG1 KILL SCMSG
- S SCMSG("IEN")=0
- W !!,"Enter MESSAGE NUMBER: "
- R ANS:300 S:'$T ANS="^" I "^"[ANS Q
- I ANS=" " D G:'ANS GETMSG1
- . S ANS=$G(^DISV(DUZ,"PCMM REJECTS"))
- . W ANS
- S DATA=$$NET^XMRENT(ANS)
- I DATA="" D G GETMSG1
- . W !,"Enter a valid Mailman message number or <RET> to Quit."
- ;
- ;Check if this is a valid reject message.
- S SCMSG("FROM")=$P(DATA,"^",3)
- I SCMSG("FROM")'="Austin" D GETMSG2 G GETMSG1
- S SCMSG("SUBJ")=$P(DATA,"^",6)
- I SCMSG("SUBJ")'?.E D GETMSG2 G GETMSG1
- S SCMSG("IEN")=ANS
- ;
- ;Support for <SPACE BAR><RET> convention
- S ^DISV(DUZ,"PCMM REJECTS")=ANS
- Q
- GETMSG2 ;
- W !,"Sorry, not a valid PCMM HL7 reject message number."
- Q
- ;
- ARRAY ;Build array of message text.
- NEW CNT,X,XMER,XMPOS,XMRG,XMZ
- ;
- KILL ^TMP("REJECTS",$J)
- S CNT=1
- S XMZ=SCMSG("IEN")
- F S X=$$READ^XMGAPI1() Q:XMER=-1 D ;
- . S ^TMP("REJECTS",$J,CNT)=X
- . S CNT=CNT+1
- Q
- ;
- PARSE ;Parse out DFN and VARPTR from text of message
- ;Return: DFN - Patient IEN
- ; VARPTR - Variable pointer
- ;
- NEW ID,IDLONG,LN,PTPI
- ;
- S LN=$G(^TMP("REJECTS",$J,1))
- S DFN=+LN ;................................Patient IEN
- I 'DFN D Q
- . W !,"Cannot identify patient. Aborting."
- S LN=$G(^TMP("REJECTS",$J,2))
- S ID=$P(LN," ",1) ;........................Get ID
- S ID=$P(ID,"-",2) ;........................Strip off facility number
- I 'ID D Q
- . S DFN=0
- . W !,"Cannot identify event ID. Aborting."
- S IDLONG=$P($G(^SCPT(404.49,ID,0)),U,1) ;..Get long form of ID
- S PTPI=$P(IDLONG,"-",1) ;..................File 404.43 IEN
- I 'PTPI D Q
- . S DFN=0
- . W !,"Cannot identify long ID. Aborting."
- I '$D(^SCPT(404.43,PTPI)) S SCDELETE=1 ;...Flag to process a delete
- S VARPTR=PTPI_";SCPT(404.43," ;............Create event pointer
- Q
- ;
- ASK() ;Ask if they want to re-tranmit selected msgs.
- NEW %,%Y
- W !!,"Patient: ",$P($G(^DPT(DFN,0)),U,1)
- ASK1 W !!,"Are you sure you want to re-transmit"
- S %=1 D YN^DICN
- I %=0 W " Enter YES or NO" G ASK1
- I %'=1 Q 0
- Q 1
- ;
- RETRAN ;Re-transmit selected items.
- ;
- NEW PT,PTPI,RESULT,SCFAC,XMITARRY
- NEW HL,HLECH,HLEID,HLFS,HLQ
- ;
- ;Initialize array
- S XMITARRY="^TMP(""PCMM"",""HL7"","_$J_")" ;..Segments
- KILL @XMITARRY
- ;
- ;Get faciltiy number
- S SCFAC=+$P($$SITE^VASITE(),"^",3)
- ;
- ;Get pointer to sending event
- S HLEID=$$HLEID^SCMCHL()
- I 'HLEID D Q
- . W "Unable to initialize HL7 variables - protocol not found"
- ;
- ;Initialize HL7 variables
- D INIT^HLFNC2(HLEID,.HL)
- I $O(HL(""))="" W $P(HL,"^",2) Q
- ;
- ;Build segment array
- I $G(SCDELETE) D I 1 ;....................Process a deletion
- . S PTPI=$P(VARPTR,";",1)
- . D PTPD^SCMCHLB2(PTPI)
- E D I +RESULT<0 W $P(RESULT,"^",2) Q ;..Process a normal entry
- . S RESULT=$$BUILD^SCMCHLB(VARPTR,.HL,.XMITARRY)
- ;
- ;Generate message
- ;S RESULT=$$GENERATE^SCMCHLG()
- ;
- KILL @XMITARRY
- W !!,"Message re-transmitted...",!
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCMCHLR 3881 printed Feb 19, 2025@00:06:59 Page 2
- SCMCHLR ;BP/DJB - PCMM HL7 Re-transmit Rejects ; 8/25/99 2:29pm
- +1 ;;5.3;Scheduling;**177**;May 01, 1999
- +2 ;
- EN ;
- +1 NEW DFN,SCDELETE,SCMSG,VARPTR
- TOP ;
- +1 ;............Get SCMSG() array for Austin Mailman message.
- DO GETMSG
- +2 ;Quit if no message selected.
- if 'SCMSG("IEN")
- GOTO EXIT
- +3 ;.............Build array of message text
- DO ARRAY
- +4 ;.Get DFN, VARPTR, and SCDELETE
- DO PARSE
- if 'DFN
- GOTO EXIT
- +5 ;......Are they sure they want to re-transmit?
- if '$$ASK()
- GOTO TOP
- +6 ;............Re-transmit selected items.
- DO RETRAN
- EXIT ;
- +1 KILL ^TMP("REJECTS",$JOB)
- +2 QUIT
- +3 ;
- GETMSG ;Prompt for reject message number.
- +1 ;Output:
- +2 ; SCMSG("IEN") - Message IEN
- +3 ; Return SCMSG("IEN")=0 if no msg selected.
- +4 ; SCMSG("SUBJ") - Message subject
- +5 ; SCMSG("FROM") - Message sender
- +6 ;
- +7 NEW %,%DT,ANS,DATA,HD,LINE,X,Y
- +8 ;
- +9 SET $PIECE(LINE,"-",IOM)=""
- +10 SET HD="RE-TRANSMIT PCMM HL7 MESSAGES"
- +11 WRITE @IOF,!?(IOM-$LENGTH(HD)\2),HD
- +12 WRITE !,LINE
- +13 WRITE !!,"Select an Austin HL7 rejection Mailman message."
- GETMSG1 KILL SCMSG
- +1 SET SCMSG("IEN")=0
- +2 WRITE !!,"Enter MESSAGE NUMBER: "
- +3 READ ANS:300
- if '$TEST
- SET ANS="^"
- IF "^"[ANS
- QUIT
- +4 IF ANS=" "
- Begin DoDot:1
- +5 SET ANS=$GET(^DISV(DUZ,"PCMM REJECTS"))
- +6 WRITE ANS
- End DoDot:1
- if 'ANS
- GOTO GETMSG1
- +7 SET DATA=$$NET^XMRENT(ANS)
- +8 IF DATA=""
- Begin DoDot:1
- +9 WRITE !,"Enter a valid Mailman message number or <RET> to Quit."
- End DoDot:1
- GOTO GETMSG1
- +10 ;
- +11 ;Check if this is a valid reject message.
- +12 SET SCMSG("FROM")=$PIECE(DATA,"^",3)
- +13 IF SCMSG("FROM")'="Austin"
- DO GETMSG2
- GOTO GETMSG1
- +14 SET SCMSG("SUBJ")=$PIECE(DATA,"^",6)
- +15 IF SCMSG("SUBJ")'?.E
- DO GETMSG2
- GOTO GETMSG1
- +16 SET SCMSG("IEN")=ANS
- +17 ;
- +18 ;Support for <SPACE BAR><RET> convention
- +19 SET ^DISV(DUZ,"PCMM REJECTS")=ANS
- +20 QUIT
- GETMSG2 ;
- +1 WRITE !,"Sorry, not a valid PCMM HL7 reject message number."
- +2 QUIT
- +3 ;
- ARRAY ;Build array of message text.
- +1 NEW CNT,X,XMER,XMPOS,XMRG,XMZ
- +2 ;
- +3 KILL ^TMP("REJECTS",$JOB)
- +4 SET CNT=1
- +5 SET XMZ=SCMSG("IEN")
- +6 ;
- FOR
- SET X=$$READ^XMGAPI1()
- if XMER=-1
- QUIT
- Begin DoDot:1
- +7 SET ^TMP("REJECTS",$JOB,CNT)=X
- +8 SET CNT=CNT+1
- End DoDot:1
- +9 QUIT
- +10 ;
- PARSE ;Parse out DFN and VARPTR from text of message
- +1 ;Return: DFN - Patient IEN
- +2 ; VARPTR - Variable pointer
- +3 ;
- +4 NEW ID,IDLONG,LN,PTPI
- +5 ;
- +6 SET LN=$GET(^TMP("REJECTS",$JOB,1))
- +7 ;................................Patient IEN
- SET DFN=+LN
- +8 IF 'DFN
- Begin DoDot:1
- +9 WRITE !,"Cannot identify patient. Aborting."
- End DoDot:1
- QUIT
- +10 SET LN=$GET(^TMP("REJECTS",$JOB,2))
- +11 ;........................Get ID
- SET ID=$PIECE(LN," ",1)
- +12 ;........................Strip off facility number
- SET ID=$PIECE(ID,"-",2)
- +13 IF 'ID
- Begin DoDot:1
- +14 SET DFN=0
- +15 WRITE !,"Cannot identify event ID. Aborting."
- End DoDot:1
- QUIT
- +16 ;..Get long form of ID
- SET IDLONG=$PIECE($GET(^SCPT(404.49,ID,0)),U,1)
- +17 ;..................File 404.43 IEN
- SET PTPI=$PIECE(IDLONG,"-",1)
- +18 IF 'PTPI
- Begin DoDot:1
- +19 SET DFN=0
- +20 WRITE !,"Cannot identify long ID. Aborting."
- End DoDot:1
- QUIT
- +21 ;...Flag to process a delete
- IF '$DATA(^SCPT(404.43,PTPI))
- SET SCDELETE=1
- +22 ;............Create event pointer
- SET VARPTR=PTPI_";SCPT(404.43,"
- +23 QUIT
- +24 ;
- ASK() ;Ask if they want to re-tranmit selected msgs.
- +1 NEW %,%Y
- +2 WRITE !!,"Patient: ",$PIECE($GET(^DPT(DFN,0)),U,1)
- ASK1 WRITE !!,"Are you sure you want to re-transmit"
- +1 SET %=1
- DO YN^DICN
- +2 IF %=0
- WRITE " Enter YES or NO"
- GOTO ASK1
- +3 IF %'=1
- QUIT 0
- +4 QUIT 1
- +5 ;
- RETRAN ;Re-transmit selected items.
- +1 ;
- +2 NEW PT,PTPI,RESULT,SCFAC,XMITARRY
- +3 NEW HL,HLECH,HLEID,HLFS,HLQ
- +4 ;
- +5 ;Initialize array
- +6 ;..Segments
- SET XMITARRY="^TMP(""PCMM"",""HL7"","_$JOB_")"
- +7 KILL @XMITARRY
- +8 ;
- +9 ;Get faciltiy number
- +10 SET SCFAC=+$PIECE($$SITE^VASITE(),"^",3)
- +11 ;
- +12 ;Get pointer to sending event
- +13 SET HLEID=$$HLEID^SCMCHL()
- +14 IF 'HLEID
- Begin DoDot:1
- +15 WRITE "Unable to initialize HL7 variables - protocol not found"
- End DoDot:1
- QUIT
- +16 ;
- +17 ;Initialize HL7 variables
- +18 DO INIT^HLFNC2(HLEID,.HL)
- +19 IF $ORDER(HL(""))=""
- WRITE $PIECE(HL,"^",2)
- QUIT
- +20 ;
- +21 ;Build segment array
- +22 ;....................Process a deletion
- IF $GET(SCDELETE)
- Begin DoDot:1
- +23 SET PTPI=$PIECE(VARPTR,";",1)
- +24 DO PTPD^SCMCHLB2(PTPI)
- End DoDot:1
- IF 1
- +25 ;..Process a normal entry
- IF '$TEST
- Begin DoDot:1
- +26 SET RESULT=$$BUILD^SCMCHLB(VARPTR,.HL,.XMITARRY)
- End DoDot:1
- IF +RESULT<0
- WRITE $PIECE(RESULT,"^",2)
- QUIT
- +27 ;
- +28 ;Generate message
- +29 ;S RESULT=$$GENERATE^SCMCHLG()
- +30 ;
- +31 KILL @XMITARRY
- +32 WRITE !!,"Message re-transmitted...",!
- +33 QUIT