[613] | 1 | VAQUPD2 ;ALB/JRP - EXTRACT SEGMENT FROM DATA FILE;08-APR-1993
|
---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
| 3 | TRNDSP(TRANPTR,ROOT,OFFSET) ;BUILD DISPLAY FOR ALL SEGMENTS IN A TRANSACTION
|
---|
| 4 | ;INPUT : TRANPTR - Pointer to VAQ - TRANSACTION file
|
---|
| 5 | ; ROOT - Where to store the information (full global reference)
|
---|
| 6 | ; Defaluts to ^TMP("VAQ",$J)
|
---|
| 7 | ; OFFSET - Where to begin placing information (defaults to 0)
|
---|
| 8 | ;OUTPUT : N - Number of lines in display
|
---|
| 9 | ; -1^Error_Text - Error
|
---|
| 10 | ;NOTES : ROOT will be returned in the format
|
---|
| 11 | ; ROOT("DISPLAY",Line_Number,0)
|
---|
| 12 | ; : Deletion of the outupt array before calling this routine
|
---|
| 13 | ; is the responsiblity of the calling application.
|
---|
| 14 | ;
|
---|
| 15 | ;CHECK INPUT
|
---|
| 16 | S TRANPTR=+$G(TRANPTR)
|
---|
| 17 | Q:('TRANPTR) "-1^Pointer to VAQ - TRANSACTION file not passed"
|
---|
| 18 | Q:('$D(^VAT(394.61,TRANPTR))) "-1^Transaction did not exist"
|
---|
| 19 | S ROOT=$G(ROOT)
|
---|
| 20 | S:(ROOT="") ROOT="^TMP(""VAQ"","_$J_")"
|
---|
| 21 | S OFFSET=+$G(OFFSET)
|
---|
| 22 | ;DECLARE VARIABLES
|
---|
| 23 | N SEG,LINE,LINECNT,X
|
---|
| 24 | S LINE=OFFSET
|
---|
| 25 | Q:('$D(^VAT(394.61,TRANPTR,"SEG"))) "-1^Transaction did not contain any data segments"
|
---|
| 26 | S SEG=0
|
---|
| 27 | ;LOOP THROUGH EACH DATA SEGMENT CONTAINED IN TRANSACTION
|
---|
| 28 | F S SEG=+$O(^VAT(394.61,TRANPTR,"SEG","B",SEG)) Q:('SEG) D
|
---|
| 29 | .;PUT DISPLAY INTO OUTPUT ARRAY
|
---|
| 30 | .S LINECNT=$$BLDDSP(TRANPTR,SEG,ROOT,LINE)
|
---|
| 31 | .Q:(LINECNT<1)
|
---|
| 32 | .S LINE=LINE+LINECNT
|
---|
| 33 | .;PUT WHITE SPACE AFTER EACH SEGMENT
|
---|
| 34 | .F X=1:1:3 S @ROOT@("DISPLAY",LINE,0)="",LINE=LINE+1
|
---|
| 35 | Q (LINE-OFFSET)
|
---|
| 36 | ;
|
---|
| 37 | BLDDSP(TRAN,SEGPTR,ROOT,OFFSET) ;BUILD DISPLAYABLE SEGMENT FROM DATA FILE
|
---|
| 38 | ;INPUT : TRAN - Pointer to VAQ - TRANSACTION file
|
---|
| 39 | ; SEGPTR - Pointer to VAQ - DATA SEGMENT file
|
---|
| 40 | ; ROOT - Where to store the display array (full global ref)
|
---|
| 41 | ; OFFSET - Where to begin placing information (defaults to 0)
|
---|
| 42 | ;OUTPUT : n - Number of lines in display
|
---|
| 43 | ; -1^Error_Text - Error
|
---|
| 44 | ;NOTES : ROOT will contain the display ready segment in the format
|
---|
| 45 | ; ROOT("DISPLAY",LineNumber,0)=Line of display
|
---|
| 46 | ; : It is the responsibility of the calling module to delete
|
---|
| 47 | ; ROOT before and after the call.
|
---|
| 48 | ;
|
---|
| 49 | ;CHECK INPUT
|
---|
| 50 | S TRAN=+$G(TRAN)
|
---|
| 51 | S SEGPTR=+$G(SEGPTR)
|
---|
| 52 | Q:(('TRAN)!('SEGPTR)) "-1^Did not pass pointer to transaction or segment"
|
---|
| 53 | S OFFSET=+$G(OFFSET)
|
---|
| 54 | Q:('$D(^VAT(394.61,TRAN))) "-1^Did not pass valid transaction"
|
---|
| 55 | Q:('$D(^VAT(394.71,SEGPTR))) "-1^Did not pass a valid segment"
|
---|
| 56 | Q:($G(ROOT)="") "-1^Did not pass reference to output array"
|
---|
| 57 | ;DECLARE VARIABLES
|
---|
| 58 | N TMP,XTRCT,MTHD,MINPTR,GETMIN
|
---|
| 59 | S XTRCT="^TMP(""VAQ-SEG"","_$J_","_TRAN_","_SEGPTR_")"
|
---|
| 60 | K @XTRCT
|
---|
| 61 | ;SEGMENT NOT PASSED IN PDX
|
---|
| 62 | Q:('$D(^VAT(394.62,"A-SEGMENT",TRAN,SEGPTR))) "-1^Transaction did not contain information for segment"
|
---|
| 63 | ;DISPLAY READY
|
---|
| 64 | S TMP=$D(^VAT(394.62,"A-DISPLAY",TRAN,SEGPTR))
|
---|
| 65 | Q:(TMP) $$EXTARR^VAQUPD25(TRAN,SEGPTR,ROOT,OFFSET)
|
---|
| 66 | ;GET METHOD TO BUILD DISPLAY ARRAY
|
---|
| 67 | S MTHD=$G(^VAT(394.71,SEGPTR,"DRTN"))
|
---|
| 68 | Q:(MTHD="") "-1^Display method did not exist for segment"
|
---|
| 69 | ;GET EXTRACTION ARRAY
|
---|
| 70 | S TMP=$$EXTARR^VAQUPD25(TRAN,SEGPTR,XTRCT)
|
---|
| 71 | I (TMP) K @XTRCT Q TMP
|
---|
| 72 | ;DETERMINE IF MINIMUM DATA NEEDS TO BE PLACED IN EXTRACTION ARRAY
|
---|
| 73 | ; THIS IS DONE FOR INFO FROM A 1.0 SITE
|
---|
| 74 | S TMP=$P($G(^VAT(394.71,SEGPTR,0)),"^",2)
|
---|
| 75 | S GETMIN=$S((TMP="PDX*MPL"):1,(TMP="PDX*MPS"):1,1:0)
|
---|
| 76 | I ((GETMIN)&((+$P($G(^VAT(394.61,TRAN,0)),"^",7))=1)) D I (TMP) K @XTRCT Q TMP
|
---|
| 77 | .;GET POINTER TO MINIMUM SEGMENT
|
---|
| 78 | .S MINPTR=+$O(^VAT(394.71,"C","PDX*MIN",""))
|
---|
| 79 | .I ('MINPTR) S TMP="-1^Version 1.0 transaction did not contain minimum patient information" Q
|
---|
| 80 | .;MIN SEGMENT NOT PASSED IN PDX
|
---|
| 81 | .I ('$D(^VAT(394.62,"A-SEGMENT",TRAN,MINPTR))) S TMP="-1^Version 1.0 transaction did not contain minimum patient information" Q
|
---|
| 82 | .;PUT MINIMUM DATA INTO EXTRACTION ARRAY
|
---|
| 83 | .S TMP=$$EXTARR^VAQUPD25(TRAN,MINPTR,XTRCT)
|
---|
| 84 | .S:(TMP) TMP="-1^Unable to extract minimum patient information from version 1.0 transaction"
|
---|
| 85 | ;BUILD DISPLAY
|
---|
| 86 | X ("S TMP="_MTHD)
|
---|
| 87 | K @XTRCT
|
---|
| 88 | Q TMP
|
---|