1 | VAQUPD25 ;ALB/JRP - EXTRACT SEGMENT FROM DATA FILE;08-APR-93
|
---|
2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
3 | EXTARR(TRAN,SEG,ROOT,OFFSET) ;PULL EXTRACTION ARRAY OUT OF DATA FILE
|
---|
4 | ;INPUT : TRAN - Pointer to VAQ - TRANSACTION file
|
---|
5 | ; SEG - Pointer to VAQ - DATA SEGMENT file
|
---|
6 | ; ROOT - Where to store the extraction array (full global ref)
|
---|
7 | ; OFFSET - Where to begin placing information (defaults to 0)
|
---|
8 | ; (Only valid for extractions that are in Display
|
---|
9 | ; Ready format)
|
---|
10 | ;OUTPUT : 0 - Success (non-display ready)
|
---|
11 | ; n - Number of lines in display (display ready format)
|
---|
12 | ; -1^Error_Text - Error
|
---|
13 | ;NOTES : If the segment is not in display ready format
|
---|
14 | ; ROOT("VALUE",File,Field,Seq)=Data
|
---|
15 | ; ROOT("ID",File,Field,Seq)=Identifier
|
---|
16 | ; If the segment is in display ready format
|
---|
17 | ; ROOT("DISPLAY",LineNumber,0)=Line of display
|
---|
18 | ;
|
---|
19 | ;CHECK INPUT
|
---|
20 | S TRAN=+$G(TRAN)
|
---|
21 | S SEG=+$G(SEG)
|
---|
22 | Q:(('TRAN)!('SEG)) "-1^Did not pass pointer transaction or segment"
|
---|
23 | S OFFSET=+$G(OFFSET)
|
---|
24 | Q:('$D(^VAT(394.61,TRAN))) "-1^Did not pass valid transaction"
|
---|
25 | Q:('$D(^VAT(394.71,SEG))) "-1^Did not pass a valid segment"
|
---|
26 | Q:($G(ROOT)="") "-1^Did not pass reference to output array"
|
---|
27 | ;DON'T EXTRACT IF PURGE FLAG IS SET
|
---|
28 | Q:($D(^VAT(394.61,"PURGE",1,TRAN))) "-1^Transaction has been flagged for purging"
|
---|
29 | ;DECLARE VARIABLES
|
---|
30 | N LINE,IFN,TMP,SEQ,FILE,FIELD,VALUE,ID,DISPLAY
|
---|
31 | S LINE=OFFSET
|
---|
32 | ;DETERMINE IF SEGMENT HAS DATA
|
---|
33 | Q:('$D(^VAT(394.62,"A-SEGMENT",TRAN,SEG))) "-1^Segment did not contain any data"
|
---|
34 | ;DETERMINE IF SEGMENT IS DISPLAY READY
|
---|
35 | S DISPLAY=$D(^VAT(394.62,"A-DISPLAY",TRAN,SEG))
|
---|
36 | ;DISPLAY READY
|
---|
37 | I (DISPLAY) D Q LINE-OFFSET
|
---|
38 | .;GET IFN (USED FOR DIPSLAY READY)
|
---|
39 | .S IFN=+$O(^VAT(394.62,"A-SEGMENT",TRAN,SEG,""))
|
---|
40 | .Q:('IFN)
|
---|
41 | .S SEQ=0
|
---|
42 | .F S SEQ=$O(^VAT(394.62,IFN,"DSP",SEQ)) Q:('SEQ) D
|
---|
43 | ..S VALUE=$G(^VAT(394.62,IFN,"DSP",SEQ,0))
|
---|
44 | ..S @ROOT@("DISPLAY",LINE,0)=VALUE
|
---|
45 | ..S LINE=LINE+1
|
---|
46 | ;EXTRACTION ARRAY
|
---|
47 | S IFN=""
|
---|
48 | F S IFN=$O(^VAT(394.62,"A-SEGMENT",TRAN,SEG,IFN)) Q:('IFN) D
|
---|
49 | .S TMP=$G(^VAT(394.62,IFN,0))
|
---|
50 | .S FILE=+$P(TMP,"^",3)
|
---|
51 | .Q:('FILE)
|
---|
52 | .S FIELD=+$P(TMP,"^",4)
|
---|
53 | .Q:('FIELD)
|
---|
54 | .S SEQ=+$G(^VAT(394.62,IFN,"SQNCE"))
|
---|
55 | .S VALUE=$G(^VAT(394.62,IFN,"VAL"))
|
---|
56 | .S ID=$G(^VAT(394.62,IFN,"IDNT1"))
|
---|
57 | .S @ROOT@("VALUE",FILE,FIELD,SEQ)=VALUE
|
---|
58 | .S @ROOT@("ID",FILE,FIELD,SEQ)=ID
|
---|
59 | Q 0
|
---|