| [613] | 1 | VAQUTL92 ;ALB/JFP,JRP - PDX TRANSACTION Lookup ;01-SEPT-93 | 
|---|
|  | 2 | ;;1.5;PATIENT DATA EXCHANGE;**6,36**;NOV 17, 1993 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | TRNDATA(TRNPTR) ; -- Returns nodes in transaction file in local array NODE | 
|---|
|  | 5 | ;        INPUT: TRNPTR       = Pointer to VAQ - TRANSACTION FILE | 
|---|
|  | 6 | ;       OUTPUT: 0            = Success | 
|---|
|  | 7 | ;               see variable = | 
|---|
|  | 8 | ;              -1^Reason   = Bad input | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ;         NOTE: Do KILLTRN to kill off variables created in this | 
|---|
|  | 11 | ;               function. | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | Q:'(+$G(TRNPTR)) "-^Did not pass pointer to transaction file" | 
|---|
|  | 14 | ; -- Declare variables | 
|---|
|  | 15 | K NODE | 
|---|
|  | 16 | N ND,Y | 
|---|
|  | 17 | ; -- Main | 
|---|
|  | 18 | F ND=0,"QRY","ATHR1","ATHR2","RQST1","RQST2" D | 
|---|
|  | 19 | .S NODE(ND)=$G(^VAT(394.61,+TRNPTR,ND)) | 
|---|
|  | 20 | ; -- Define variables | 
|---|
|  | 21 | ZERO ; -- ZERO node | 
|---|
|  | 22 | S VAQTRN=$P(NODE(0),U,1) | 
|---|
|  | 23 | S VAQCSTAT=$P(NODE(0),U,2) | 
|---|
|  | 24 | S VAQPTPTR=$P(NODE(0),U,3) | 
|---|
|  | 25 | S VAQSENP=$P(NODE(0),U,4) | 
|---|
|  | 26 | S VAQRSTAT=$P(NODE(0),U,5) | 
|---|
|  | 27 | QRY ; -- QRY node | 
|---|
|  | 28 | S VAQPTNM=$P(NODE("QRY"),U,1) | 
|---|
|  | 29 | S VAQISSN=$P(NODE("QRY"),U,2) | 
|---|
|  | 30 | S VAQESSN=$$DASHSSN^VAQUTL99(VAQISSN) | 
|---|
|  | 31 | S VAQIDOB=$P(NODE("QRY"),U,3) | 
|---|
|  | 32 | S VAQEDOB=$$DOBFMT^VAQUTL99(VAQIDOB) | 
|---|
|  | 33 | S VAQPTID=$P(NODE("QRY"),U,4) | 
|---|
|  | 34 | RQST1 ; -- RQST1 node | 
|---|
|  | 35 | S Y=$P(NODE("RQST1"),U,1) X ^DD("DD") S VAQRDT=Y | 
|---|
|  | 36 | S VAQRPER=$P(NODE("RQST1"),U,2) ; person requesting | 
|---|
|  | 37 | RQST2 ; -- RQST2 node | 
|---|
|  | 38 | S VAQRSITE=$P(NODE("RQST2"),U,1) | 
|---|
|  | 39 | S VAQRDOM=$P(NODE("RQST2"),U,2) | 
|---|
|  | 40 | ATHR1 ; -- ATHR1 node | 
|---|
|  | 41 | S Y=$P(NODE("ATHR1"),U,1) X ^DD("DD") S VAQADT=Y | 
|---|
|  | 42 | S VAQAPER=$P(NODE("ATHR1"),U,2) ; person who released | 
|---|
|  | 43 | ATHR2 ; -- ATHR2 node | 
|---|
|  | 44 | S VAQASITE=$P(NODE("ATHR2"),U,1) | 
|---|
|  | 45 | S VAQADOM=$P(NODE("ATHR2"),U,2) | 
|---|
|  | 46 | ; -- Clean up | 
|---|
|  | 47 | K NODE | 
|---|
|  | 48 | ; -- Success | 
|---|
|  | 49 | Q 0 | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | KILLTRN ; -- Kills variables created in TRNDATA | 
|---|
|  | 52 | K VAQTRN,VAQCSTAT,VAQPTPTR,VAQSENP,VAQRSTAT | 
|---|
|  | 53 | K VAQPTNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQPTID | 
|---|
|  | 54 | K VAQRDT,VAQRPER | 
|---|
|  | 55 | K VAQADT,VAQAPER | 
|---|
|  | 56 | K VAQASITE,VAQADOM | 
|---|
|  | 57 | K VAQRSITE,VAQRDOM | 
|---|
|  | 58 | QUIT | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | RLSEPAT(TRANPTR) ;GET INFO ON PATIENT RELEASED BY REMOTE FACILITY | 
|---|
|  | 61 | ;INPUT  : TRANPTR - Pointer to VAQ - TRANSACTION file (#394.61) | 
|---|
|  | 62 | ;OUTPUT : name^ssn^dob - Success | 
|---|
|  | 63 | ;           name = Name of patient at remote facility | 
|---|
|  | 64 | ;           ssn = Social security number of patient at remote facility | 
|---|
|  | 65 | ;                   (internal format -> without dashes) | 
|---|
|  | 66 | ;           dob = Date of birth of patient at remote facility | 
|---|
|  | 67 | ;                   (internal format -> FileMan) | 
|---|
|  | 68 | ;         "" - Error (no info found or bad input) | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | ;CHECK INPUT | 
|---|
|  | 71 | Q:('$D(^VAT(394.61,(+$G(TRANPTR)),0))) "" | 
|---|
|  | 72 | ;DECLARE VARIABLES | 
|---|
|  | 73 | N TMP,SEGPTR,FIELD,DATAPTR,NAME,SSN,DOB,FOUND | 
|---|
|  | 74 | ;CHECK CURRENT STATUS - MAKE SURE DATA WAS RELEASED | 
|---|
|  | 75 | S TMP=$P($$STATYPE^VAQCON1(TRANPTR,1),"^",1) | 
|---|
|  | 76 | Q:((TMP'="VAQ-UNSOL")&(TMP'="VAQ-RSLT")) "" | 
|---|
|  | 77 | ;GET POINTER TO PDX*MIN SEGMENT | 
|---|
|  | 78 | S SEGPTR=+$O(^VAT(394.71,"C","PDX*MIN",0)) | 
|---|
|  | 79 | Q:('SEGPTR) "" | 
|---|
|  | 80 | ;INITIALIZE OUTPUT VARIABLES | 
|---|
|  | 81 | S (NAME,SSN,DOB)="" | 
|---|
|  | 82 | ;FIND INFO IN DATA FILE | 
|---|
|  | 83 | S (DATAPTR,FOUND)=0 | 
|---|
|  | 84 | F  S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",TRANPTR,SEGPTR,DATAPTR)) Q:('DATAPTR)  D  Q:(FOUND=3) | 
|---|
|  | 85 | .;VERIFY CORRECTNESS OF X-REF | 
|---|
|  | 86 | .Q:((+$G(^VAT(394.62,DATAPTR,"TRNS")))'=TRANPTR) | 
|---|
|  | 87 | .S TMP=$G(^VAT(394.62,DATAPTR,0)) | 
|---|
|  | 88 | .Q:((+$P(TMP,"^",2))'=SEGPTR) | 
|---|
|  | 89 | .Q:((+$P(TMP,"^",5))) | 
|---|
|  | 90 | .;SEE IF ENTRY IS FOR NAME OR SSN OR DOB | 
|---|
|  | 91 | .Q:((+$P(TMP,"^",3))='2) | 
|---|
|  | 92 | .S FIELD=+$P(TMP,"^",4) | 
|---|
|  | 93 | .Q:((FIELD'=.01)&(FIELD'=.03)&(FIELD'=.09)) | 
|---|
|  | 94 | .;ONLY ACCEPT FOR SEQUENCE NUMBER 0 | 
|---|
|  | 95 | .Q:(+$G(^VAT(394.62,DATAPTR,"SQNCE"))) | 
|---|
|  | 96 | .;GET VALUE, SET APPROPRIATE VARIABLE, AND INCREMENT FOUND COUNT | 
|---|
|  | 97 | .S TMP=$G(^VAT(394.62,DATAPTR,"VAL")) | 
|---|
|  | 98 | .I (FIELD=.01) S NAME=TMP,FOUND=FOUND+1 Q | 
|---|
|  | 99 | .I (FIELD=.03) S DOB=$$DATE^VAQUTL99(TMP) S:(DOB="-1") DOB="" S FOUND=FOUND+1 Q | 
|---|
|  | 100 | .I (FIELD=.09) S SSN=$TR(TMP,"-",""),FOUND=FOUND+1 Q | 
|---|
|  | 101 | ;RETURN RESULTS | 
|---|
|  | 102 | Q NAME_"^"_SSN_"^"_DOB | 
|---|