VAQUTL92 ;ALB/JFP,JRP - PDX TRANSACTION Lookup ;01-SEPT-93 ;;1.5;PATIENT DATA EXCHANGE;**6,36**;NOV 17, 1993 ; TRNDATA(TRNPTR) ; -- Returns nodes in transaction file in local array NODE ; INPUT: TRNPTR = Pointer to VAQ - TRANSACTION FILE ; OUTPUT: 0 = Success ; see variable = ; -1^Reason = Bad input ; ; NOTE: Do KILLTRN to kill off variables created in this ; function. ; Q:'(+$G(TRNPTR)) "-^Did not pass pointer to transaction file" ; -- Declare variables K NODE N ND,Y ; -- Main F ND=0,"QRY","ATHR1","ATHR2","RQST1","RQST2" D .S NODE(ND)=$G(^VAT(394.61,+TRNPTR,ND)) ; -- Define variables ZERO ; -- ZERO node S VAQTRN=$P(NODE(0),U,1) S VAQCSTAT=$P(NODE(0),U,2) S VAQPTPTR=$P(NODE(0),U,3) S VAQSENP=$P(NODE(0),U,4) S VAQRSTAT=$P(NODE(0),U,5) QRY ; -- QRY node S VAQPTNM=$P(NODE("QRY"),U,1) S VAQISSN=$P(NODE("QRY"),U,2) S VAQESSN=$$DASHSSN^VAQUTL99(VAQISSN) S VAQIDOB=$P(NODE("QRY"),U,3) S VAQEDOB=$$DOBFMT^VAQUTL99(VAQIDOB) S VAQPTID=$P(NODE("QRY"),U,4) RQST1 ; -- RQST1 node S Y=$P(NODE("RQST1"),U,1) X ^DD("DD") S VAQRDT=Y S VAQRPER=$P(NODE("RQST1"),U,2) ; person requesting RQST2 ; -- RQST2 node S VAQRSITE=$P(NODE("RQST2"),U,1) S VAQRDOM=$P(NODE("RQST2"),U,2) ATHR1 ; -- ATHR1 node S Y=$P(NODE("ATHR1"),U,1) X ^DD("DD") S VAQADT=Y S VAQAPER=$P(NODE("ATHR1"),U,2) ; person who released ATHR2 ; -- ATHR2 node S VAQASITE=$P(NODE("ATHR2"),U,1) S VAQADOM=$P(NODE("ATHR2"),U,2) ; -- Clean up K NODE ; -- Success Q 0 ; KILLTRN ; -- Kills variables created in TRNDATA K VAQTRN,VAQCSTAT,VAQPTPTR,VAQSENP,VAQRSTAT K VAQPTNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQPTID K VAQRDT,VAQRPER K VAQADT,VAQAPER K VAQASITE,VAQADOM K VAQRSITE,VAQRDOM QUIT ; RLSEPAT(TRANPTR) ;GET INFO ON PATIENT RELEASED BY REMOTE FACILITY ;INPUT : TRANPTR - Pointer to VAQ - TRANSACTION file (#394.61) ;OUTPUT : name^ssn^dob - Success ; name = Name of patient at remote facility ; ssn = Social security number of patient at remote facility ; (internal format -> without dashes) ; dob = Date of birth of patient at remote facility ; (internal format -> FileMan) ; "" - Error (no info found or bad input) ; ;CHECK INPUT Q:('$D(^VAT(394.61,(+$G(TRANPTR)),0))) "" ;DECLARE VARIABLES N TMP,SEGPTR,FIELD,DATAPTR,NAME,SSN,DOB,FOUND ;CHECK CURRENT STATUS - MAKE SURE DATA WAS RELEASED S TMP=$P($$STATYPE^VAQCON1(TRANPTR,1),"^",1) Q:((TMP'="VAQ-UNSOL")&(TMP'="VAQ-RSLT")) "" ;GET POINTER TO PDX*MIN SEGMENT S SEGPTR=+$O(^VAT(394.71,"C","PDX*MIN",0)) Q:('SEGPTR) "" ;INITIALIZE OUTPUT VARIABLES S (NAME,SSN,DOB)="" ;FIND INFO IN DATA FILE S (DATAPTR,FOUND)=0 F S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",TRANPTR,SEGPTR,DATAPTR)) Q:('DATAPTR) D Q:(FOUND=3) .;VERIFY CORRECTNESS OF X-REF .Q:((+$G(^VAT(394.62,DATAPTR,"TRNS")))'=TRANPTR) .S TMP=$G(^VAT(394.62,DATAPTR,0)) .Q:((+$P(TMP,"^",2))'=SEGPTR) .Q:((+$P(TMP,"^",5))) .;SEE IF ENTRY IS FOR NAME OR SSN OR DOB .Q:((+$P(TMP,"^",3))='2) .S FIELD=+$P(TMP,"^",4) .Q:((FIELD'=.01)&(FIELD'=.03)&(FIELD'=.09)) .;ONLY ACCEPT FOR SEQUENCE NUMBER 0 .Q:(+$G(^VAT(394.62,DATAPTR,"SQNCE"))) .;GET VALUE, SET APPROPRIATE VARIABLE, AND INCREMENT FOUND COUNT .S TMP=$G(^VAT(394.62,DATAPTR,"VAL")) .I (FIELD=.01) S NAME=TMP,FOUND=FOUND+1 Q .I (FIELD=.03) S DOB=$$DATE^VAQUTL99(TMP) S:(DOB="-1") DOB="" S FOUND=FOUND+1 Q .I (FIELD=.09) S SSN=$TR(TMP,"-",""),FOUND=FOUND+1 Q ;RETURN RESULTS Q NAME_"^"_SSN_"^"_DOB