| 1 | SCMCHLR ;BP/DJB - PCMM HL7 Re-transmit Rejects ; 8/25/99 2:29pm
|
---|
| 2 | ;;5.3;Scheduling;**177**;May 01, 1999
|
---|
| 3 | ;
|
---|
| 4 | EN ;
|
---|
| 5 | NEW DFN,SCDELETE,SCMSG,VARPTR
|
---|
| 6 | TOP ;
|
---|
| 7 | D GETMSG ;............Get SCMSG() array for Austin Mailman message.
|
---|
| 8 | G:'SCMSG("IEN") EXIT ;Quit if no message selected.
|
---|
| 9 | D ARRAY ;.............Build array of message text
|
---|
| 10 | D PARSE G:'DFN EXIT ;.Get DFN, VARPTR, and SCDELETE
|
---|
| 11 | G:'$$ASK() TOP ;......Are they sure they want to re-transmit?
|
---|
| 12 | D RETRAN ;............Re-transmit selected items.
|
---|
| 13 | EXIT ;
|
---|
| 14 | KILL ^TMP("REJECTS",$J)
|
---|
| 15 | Q
|
---|
| 16 | ;
|
---|
| 17 | GETMSG ;Prompt for reject message number.
|
---|
| 18 | ;Output:
|
---|
| 19 | ; SCMSG("IEN") - Message IEN
|
---|
| 20 | ; Return SCMSG("IEN")=0 if no msg selected.
|
---|
| 21 | ; SCMSG("SUBJ") - Message subject
|
---|
| 22 | ; SCMSG("FROM") - Message sender
|
---|
| 23 | ;
|
---|
| 24 | NEW %,%DT,ANS,DATA,HD,LINE,X,Y
|
---|
| 25 | ;
|
---|
| 26 | S $P(LINE,"-",IOM)=""
|
---|
| 27 | S HD="RE-TRANSMIT PCMM HL7 MESSAGES"
|
---|
| 28 | W @IOF,!?(IOM-$L(HD)\2),HD
|
---|
| 29 | W !,LINE
|
---|
| 30 | W !!,"Select an Austin HL7 rejection Mailman message."
|
---|
| 31 | GETMSG1 KILL SCMSG
|
---|
| 32 | S SCMSG("IEN")=0
|
---|
| 33 | W !!,"Enter MESSAGE NUMBER: "
|
---|
| 34 | R ANS:300 S:'$T ANS="^" I "^"[ANS Q
|
---|
| 35 | I ANS=" " D G:'ANS GETMSG1
|
---|
| 36 | . S ANS=$G(^DISV(DUZ,"PCMM REJECTS"))
|
---|
| 37 | . W ANS
|
---|
| 38 | S DATA=$$NET^XMRENT(ANS)
|
---|
| 39 | I DATA="" D G GETMSG1
|
---|
| 40 | . W !,"Enter a valid Mailman message number or <RET> to Quit."
|
---|
| 41 | ;
|
---|
| 42 | ;Check if this is a valid reject message.
|
---|
| 43 | S SCMSG("FROM")=$P(DATA,"^",3)
|
---|
| 44 | I SCMSG("FROM")'="Austin" D GETMSG2 G GETMSG1
|
---|
| 45 | S SCMSG("SUBJ")=$P(DATA,"^",6)
|
---|
| 46 | I SCMSG("SUBJ")'?.E D GETMSG2 G GETMSG1
|
---|
| 47 | S SCMSG("IEN")=ANS
|
---|
| 48 | ;
|
---|
| 49 | ;Support for <SPACE BAR><RET> convention
|
---|
| 50 | S ^DISV(DUZ,"PCMM REJECTS")=ANS
|
---|
| 51 | Q
|
---|
| 52 | GETMSG2 ;
|
---|
| 53 | W !,"Sorry, not a valid PCMM HL7 reject message number."
|
---|
| 54 | Q
|
---|
| 55 | ;
|
---|
| 56 | ARRAY ;Build array of message text.
|
---|
| 57 | NEW CNT,X,XMER,XMPOS,XMRG,XMZ
|
---|
| 58 | ;
|
---|
| 59 | KILL ^TMP("REJECTS",$J)
|
---|
| 60 | S CNT=1
|
---|
| 61 | S XMZ=SCMSG("IEN")
|
---|
| 62 | F S X=$$READ^XMGAPI1() Q:XMER=-1 D ;
|
---|
| 63 | . S ^TMP("REJECTS",$J,CNT)=X
|
---|
| 64 | . S CNT=CNT+1
|
---|
| 65 | Q
|
---|
| 66 | ;
|
---|
| 67 | PARSE ;Parse out DFN and VARPTR from text of message
|
---|
| 68 | ;Return: DFN - Patient IEN
|
---|
| 69 | ; VARPTR - Variable pointer
|
---|
| 70 | ;
|
---|
| 71 | NEW ID,IDLONG,LN,PTPI
|
---|
| 72 | ;
|
---|
| 73 | S LN=$G(^TMP("REJECTS",$J,1))
|
---|
| 74 | S DFN=+LN ;................................Patient IEN
|
---|
| 75 | I 'DFN D Q
|
---|
| 76 | . W !,"Cannot identify patient. Aborting."
|
---|
| 77 | S LN=$G(^TMP("REJECTS",$J,2))
|
---|
| 78 | S ID=$P(LN," ",1) ;........................Get ID
|
---|
| 79 | S ID=$P(ID,"-",2) ;........................Strip off facility number
|
---|
| 80 | I 'ID D Q
|
---|
| 81 | . S DFN=0
|
---|
| 82 | . W !,"Cannot identify event ID. Aborting."
|
---|
| 83 | S IDLONG=$P($G(^SCPT(404.49,ID,0)),U,1) ;..Get long form of ID
|
---|
| 84 | S PTPI=$P(IDLONG,"-",1) ;..................File 404.43 IEN
|
---|
| 85 | I 'PTPI D Q
|
---|
| 86 | . S DFN=0
|
---|
| 87 | . W !,"Cannot identify long ID. Aborting."
|
---|
| 88 | I '$D(^SCPT(404.43,PTPI)) S SCDELETE=1 ;...Flag to process a delete
|
---|
| 89 | S VARPTR=PTPI_";SCPT(404.43," ;............Create event pointer
|
---|
| 90 | Q
|
---|
| 91 | ;
|
---|
| 92 | ASK() ;Ask if they want to re-tranmit selected msgs.
|
---|
| 93 | NEW %,%Y
|
---|
| 94 | W !!,"Patient: ",$P($G(^DPT(DFN,0)),U,1)
|
---|
| 95 | ASK1 W !!,"Are you sure you want to re-transmit"
|
---|
| 96 | S %=1 D YN^DICN
|
---|
| 97 | I %=0 W " Enter YES or NO" G ASK1
|
---|
| 98 | I %'=1 Q 0
|
---|
| 99 | Q 1
|
---|
| 100 | ;
|
---|
| 101 | RETRAN ;Re-transmit selected items.
|
---|
| 102 | ;
|
---|
| 103 | NEW PT,PTPI,RESULT,SCFAC,XMITARRY
|
---|
| 104 | NEW HL,HLECH,HLEID,HLFS,HLQ
|
---|
| 105 | ;
|
---|
| 106 | ;Initialize array
|
---|
| 107 | S XMITARRY="^TMP(""PCMM"",""HL7"","_$J_")" ;..Segments
|
---|
| 108 | KILL @XMITARRY
|
---|
| 109 | ;
|
---|
| 110 | ;Get faciltiy number
|
---|
| 111 | S SCFAC=+$P($$SITE^VASITE(),"^",3)
|
---|
| 112 | ;
|
---|
| 113 | ;Get pointer to sending event
|
---|
| 114 | S HLEID=$$HLEID^SCMCHL()
|
---|
| 115 | I 'HLEID D Q
|
---|
| 116 | . W "Unable to initialize HL7 variables - protocol not found"
|
---|
| 117 | ;
|
---|
| 118 | ;Initialize HL7 variables
|
---|
| 119 | D INIT^HLFNC2(HLEID,.HL)
|
---|
| 120 | I $O(HL(""))="" W $P(HL,"^",2) Q
|
---|
| 121 | ;
|
---|
| 122 | ;Build segment array
|
---|
| 123 | I $G(SCDELETE) D I 1 ;....................Process a deletion
|
---|
| 124 | . S PTPI=$P(VARPTR,";",1)
|
---|
| 125 | . D PTPD^SCMCHLB2(PTPI)
|
---|
| 126 | E D I +RESULT<0 W $P(RESULT,"^",2) Q ;..Process a normal entry
|
---|
| 127 | . S RESULT=$$BUILD^SCMCHLB(VARPTR,.HL,.XMITARRY)
|
---|
| 128 | ;
|
---|
| 129 | ;Generate message
|
---|
| 130 | ;S RESULT=$$GENERATE^SCMCHLG()
|
---|
| 131 | ;
|
---|
| 132 | KILL @XMITARRY
|
---|
| 133 | W !!,"Message re-transmitted...",!
|
---|
| 134 | Q
|
---|