| 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
|
---|