[613] | 1 | VAQFIL18 ;ALB/JRP - MESSAGE FILING;18-MAY-93
|
---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
| 3 | DATA(MESSNUM,PARSARR,TRANPTR) ;FILE ALL DATA BLOCKS
|
---|
| 4 | ;INPUT : MESSNUM - Message number in transmission (not XMZ)
|
---|
| 5 | ; (defaults to 1)
|
---|
| 6 | ; PARSARR - Parsing array (full global reference)
|
---|
| 7 | ; TRANPTR - Pointer to VAQ - TRANSACTION file
|
---|
| 8 | ; (As defined by MailMan)
|
---|
| 9 | ; XMFROM, XMREC,XMZ
|
---|
| 10 | ;OUTPUT : 0 - Success
|
---|
| 11 | ; -1^Error_Text - Error
|
---|
| 12 | ;NOTES : It is the responsibility of the calling program to correct
|
---|
| 13 | ; the transaction being updated if an error occurs.
|
---|
| 14 | ; : If the displayable segment can not be added, it will delete
|
---|
| 15 | ; the entry that is created for it in VAQ - DATA file.
|
---|
| 16 | ;
|
---|
| 17 | ;CHECK INPUT
|
---|
| 18 | S:($G(MESSNUM)="") MESSNUM=1
|
---|
| 19 | Q:($G(PARSARR)="") "-1^Did not pass reference to parsing array"
|
---|
| 20 | Q:('$D(@PARSARR@(MESSNUM))) "-1^Did not pass valid message number"
|
---|
| 21 | Q:('$D(@PARSARR@(MESSNUM,"DATA"))) 0
|
---|
| 22 | S TRANPTR=+$G(TRANPTR)
|
---|
| 23 | Q:(('TRANPTR)!('$D(^VAT(394.61,TRANPTR)))) "-1^Did not pass a valid transaction"
|
---|
| 24 | ;DECLARE VARIABLES
|
---|
| 25 | N BLOCKSEQ,TMP,TYPE,SEQ,ERR,OFFSET,DATAPTR,SEGABB,FILE,FIELD,TMPARR
|
---|
| 26 | N DECRYPT,KEY1,KEY2,STRING,DECSTR,DECMTHD,ENCRYPT,VALUE,ID,SEQCNT
|
---|
| 27 | S TMPARR="^TMP(""VAQ-TMP"","_$J_")"
|
---|
| 28 | K @TMPARR
|
---|
| 29 | ;GET MESSAGE TYPE
|
---|
| 30 | S TMP=$$STATYPE^VAQFIL11(MESSNUM,PARSARR)
|
---|
| 31 | Q:($P(TMP,"^",1)="-1") "-1^Could not determine message type"
|
---|
| 32 | S TYPE=$P(TMP,"^",2)
|
---|
| 33 | ;ACK & RETRANSMIT & REQUEST DON'T HAVE DATA BLOCKS
|
---|
| 34 | Q:((TYPE="ACK")!(TYPE="RET")!(TYPE="REQ")) "-1^Message type does not require display block"
|
---|
| 35 | ;GET DECRYPTION METHOD & KEYS
|
---|
| 36 | S DECMTHD=$$DECMTHD^VAQFIL11(MESSNUM,PARSARR,2)
|
---|
| 37 | S KEY1=$$KEY^VAQFIL13(MESSNUM,PARSARR,1)
|
---|
| 38 | S KEY2=$$KEY^VAQFIL13(MESSNUM,PARSARR,0)
|
---|
| 39 | ;LOOP THROUGH EACH DATA BLOCK
|
---|
| 40 | S BLOCKSEQ=""
|
---|
| 41 | F S BLOCKSEQ=$O(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ)) Q:(BLOCKSEQ="") D
|
---|
| 42 | .;MAKE SURE IT'S A DATA BLOCK
|
---|
| 43 | .S TMP=$G(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,1))
|
---|
| 44 | .S:(TMP=" ") TMP=""
|
---|
| 45 | .Q:((TMP="")!(TMP'="$DATA"))
|
---|
| 46 | .;GET SEGMENT ABBREVIATION
|
---|
| 47 | .S SEGABB=$G(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,2))
|
---|
| 48 | .S:(SEGABB=" ") SEGABB=""
|
---|
| 49 | .Q:((SEGABB="")!(SEGABB="$$DATA"))
|
---|
| 50 | .;CREATE EXTRACTION ARRAY FOR DATA BLOCK
|
---|
| 51 | .K @TMPARR
|
---|
| 52 | .S OFFSET=2
|
---|
| 53 | .F S OFFSET=$O(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET)) Q:(OFFSET="") D Q:(OFFSET="")
|
---|
| 54 | ..;READ DESCRIPTION BLOCK
|
---|
| 55 | ..S TMP=$G(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET))
|
---|
| 56 | ..S:(TMP=" ") TMP=""
|
---|
| 57 | ..Q:((TMP="")!(TMP="$$DATA"))
|
---|
| 58 | ..S ENCRYPT=+$P(TMP,"^",1)
|
---|
| 59 | ..S FILE=+$P(TMP,"^",2)
|
---|
| 60 | ..S FIELD=+$P(TMP,"^",3)
|
---|
| 61 | ..S SEQCNT=+$P(TMP,"^",4)
|
---|
| 62 | ..Q:(('FILE)!('FIELD)!('SEQCNT))
|
---|
| 63 | ..;READ EACH VALUE & ID
|
---|
| 64 | ..S SEQCNT=SEQCNT-1
|
---|
| 65 | ..F SEQ=0:1:SEQCNT D Q:(OFFSET="")
|
---|
| 66 | ...S OFFSET=$O(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET))
|
---|
| 67 | ...Q:(OFFSET="")
|
---|
| 68 | ...S VALUE=$G(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET))
|
---|
| 69 | ...S:(VALUE=" ") VALUE=""
|
---|
| 70 | ...S OFFSET=$O(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET))
|
---|
| 71 | ...Q:(OFFSET="")
|
---|
| 72 | ...S ID=$G(@PARSARR@(MESSNUM,"DATA",BLOCKSEQ,OFFSET))
|
---|
| 73 | ...S:(ID=" ") ID=""
|
---|
| 74 | ...;SET UP FOR DECRYPTION
|
---|
| 75 | ...Q:((ENCRYPT)&(DECMTHD=""))
|
---|
| 76 | ...S:(ENCRYPT) DECRYPT=("S DECSTR="_DECMTHD)
|
---|
| 77 | ...S:('ENCRYPT) DECRYPT="S DECSTR=STRING"
|
---|
| 78 | ...Q:((ENCRYPT)&((KEY1="")!(KEY2="")))
|
---|
| 79 | ...;DECRYPT VALUE
|
---|
| 80 | ...S STRING=VALUE
|
---|
| 81 | ...X DECRYPT
|
---|
| 82 | ...S VALUE=DECSTR
|
---|
| 83 | ...;REBUILD EXTRACTION ARRAY (REMEMBER IF VALUE WAS DECRYPTED)
|
---|
| 84 | ...S @TMPARR@("VALUE",FILE,FIELD,SEQ)=VALUE
|
---|
| 85 | ...S @TMPARR@("ID",FILE,FIELD,SEQ)=ID
|
---|
| 86 | ...I (STRING'="") S:(STRING'=DECSTR) @TMPARR@("DECRYPT",STRING)=DECSTR
|
---|
| 87 | ..Q:(OFFSET="")
|
---|
| 88 | .;STORE INFORMATION
|
---|
| 89 | .S FILE=""
|
---|
| 90 | .F S FILE=$O(@TMPARR@("VALUE",FILE)) Q:(FILE="") D
|
---|
| 91 | ..S FIELD=""
|
---|
| 92 | ..F S FIELD=$O(@TMPARR@("VALUE",FILE,FIELD)) Q:(FIELD="") D
|
---|
| 93 | ...S SEQ=""
|
---|
| 94 | ...F S SEQ=$O(@TMPARR@("VALUE",FILE,FIELD,SEQ)) Q:(SEQ="") D
|
---|
| 95 | ....S VALUE=$G(@TMPARR@("VALUE",FILE,FIELD,SEQ))
|
---|
| 96 | ....S ID=$G(@TMPARR@("ID",FILE,FIELD,SEQ))
|
---|
| 97 | ....;SEE IF ID SHOULD BE DECRYPTED
|
---|
| 98 | ....I (ID'="") S:($D(@TMPARR@("DECRYPT",ID))) ID=$G(@TMPARR@("DECRYPT",ID))
|
---|
| 99 | ....;MAKE STUB ENTRY IN DATA FILE
|
---|
| 100 | ....S DATAPTR=$$STUBDATA^VAQFILE1(SEGABB,TRANPTR)
|
---|
| 101 | ....Q:(DATAPTR<0)
|
---|
| 102 | ....;STORE DATA
|
---|
| 103 | ....S TMP=$$FILEINFO^VAQFILE(394.62,DATAPTR,.03,FILE)
|
---|
| 104 | ....I (TMP) S TMP=$$DELDATA^VAQFILE1(DATAPTR) Q
|
---|
| 105 | ....S TMP=$$FILEINFO^VAQFILE(394.62,DATAPTR,.04,FIELD)
|
---|
| 106 | ....I (TMP) S TMP=$$DELDATA^VAQFILE1(DATAPTR) Q
|
---|
| 107 | ....S TMP=$$FILEINFO^VAQFILE(394.62,DATAPTR,10,VALUE)
|
---|
| 108 | ....I (TMP) S TMP=$$DELDATA^VAQFILE1(DATAPTR) Q
|
---|
| 109 | ....S TMP=$$FILEINFO^VAQFILE(394.62,DATAPTR,20,ID)
|
---|
| 110 | ....I (TMP) S TMP=$$DELDATA^VAQFILE1(DATAPTR) Q
|
---|
| 111 | ....S TMP=$$FILEINFO^VAQFILE(394.62,DATAPTR,30,SEQ)
|
---|
| 112 | ....I (TMP) S TMP=$$DELDATA^VAQFILE1(DATAPTR) Q
|
---|
| 113 | .K @TMPARR
|
---|
| 114 | K @TMPARR
|
---|
| 115 | Q 0
|
---|