1 | VAQDBIP2 ;ALB/JRP - PDX EXTRACTION UTILITY;16-MAR-93
|
---|
2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
3 | XTRCT(INFOLINE,DFN,RXIFN,ARRAY,ENCPTR,KEY1,KEY2) ;EXTRACT INFORMATION
|
---|
4 | ;INPUT : INFOLINE - Line containing information to extract
|
---|
5 | ; DFN - Pointer to patient in PATIENT file
|
---|
6 | ; RXIFN - Pointer to prescription in PRESCRIPTION file
|
---|
7 | ; ARRAY - Extraction array (full global reference)
|
---|
8 | ; ENCPTR - Pointer to VAQ - ENCRYPTION METHOD file (optional)
|
---|
9 | ; (only used if encryption will be done)
|
---|
10 | ; KEY1 - Primary encryption key
|
---|
11 | ; (only required if ENCPTR passed)
|
---|
12 | ; KEY2 - Secondary encryption key
|
---|
13 | ; (only required if ENCPTR passed)
|
---|
14 | ;OUTPUT : 0 - Extraction was successfull
|
---|
15 | ; Information stored in extraction array
|
---|
16 | ; -1^Error_Text - Extraction was not successfull
|
---|
17 | ;NOTES : INFOLINE is in the format
|
---|
18 | ; <TAB>;;File;Field,Field,...,Field;Multiple Limit;Reverse Order Mult
|
---|
19 | ; : 'Multiple Limit' is the number of multiples to extract
|
---|
20 | ; (defaults to all)
|
---|
21 | ; : If 'Reverse Order Mult' contains a value other than 0,
|
---|
22 | ; multiples will be extracted in reverse order (last in
|
---|
23 | ; first out). If it does not have a value or is 0,
|
---|
24 | ; multiples will be extracted in normal fashion (first in
|
---|
25 | ; first out).
|
---|
26 | ;
|
---|
27 | ;CHECK INPUT
|
---|
28 | Q:($G(INFOLINE)="") "-1^Did not pass info line"
|
---|
29 | Q:($G(DFN)="") "-1^Did not pass pointer to PATIENT file"
|
---|
30 | S RXIFN=$G(RXIFN)
|
---|
31 | S ENCPTR=+$G(ENCPTR)
|
---|
32 | S KEY1=$G(KEY1)
|
---|
33 | S KEY2=$G(KEY2)
|
---|
34 | I (ENCPTR) Q:((KEY1="")!(KEY2="")) "-1^Did not pass both encription keys"
|
---|
35 | ;DECLARE VARIABLES
|
---|
36 | N TMP,FILE,FIELDS,MAINFILE,MAINFLD,GLOBAL,NODE,STRING
|
---|
37 | N WORDPROC,ENTRY,ERROR,MULTLIM,COUNT,MULTREV,ENCRYPT
|
---|
38 | N DIC,DR,DA,DIQ,SEQUENCE,ID,RXNUM,PATNAME,FIELD,ENCSTR
|
---|
39 | ;SAFE GUARD DELETION OF UTILITY GLOBAL
|
---|
40 | K ^UTILITY("DIQ1",$J)
|
---|
41 | ;GET ENCRYPTION METHOD
|
---|
42 | S TMP="STRING"
|
---|
43 | S:(ENCPTR) TMP=$$ENCMTHD^VAQUTL2(ENCPTR,0)
|
---|
44 | Q:((ENCPTR)&(TMP="")) "-1^Could not determine encryption method"
|
---|
45 | S ENCRYPT="S ENCSTR="_TMP
|
---|
46 | ;GET PATIENT'S NAME
|
---|
47 | S TMP=$$PATINFO^VAQUTL1(DFN)
|
---|
48 | S STRING=$P(TMP,"^",1)
|
---|
49 | Q:(STRING="-1") "-1^Could not determine patient's name"
|
---|
50 | ;ENCRYPT
|
---|
51 | S ENCSTR=STRING
|
---|
52 | I $$NCRPFLD^VAQUTL2(2,.01) X ENCRYPT
|
---|
53 | S PATNAME=ENCSTR
|
---|
54 | ;GET RX #
|
---|
55 | I (RXIFN'="") D
|
---|
56 | .S DIC="^PSRX("
|
---|
57 | .S DR=.01
|
---|
58 | .S DA=RXIFN
|
---|
59 | .S DIQ(0)="E"
|
---|
60 | .D EN^DIQ1
|
---|
61 | .S STRING=$G(^UTILITY("DIQ1",$J,52,RXIFN,.01,"E"))
|
---|
62 | .;ENCRYPT
|
---|
63 | .S ENCSTR=STRING
|
---|
64 | .I $$NCRPFLD^VAQUTL2(52,.01) X ENCRYPT
|
---|
65 | .S RXNUM=ENCSTR
|
---|
66 | .;TESTING OF RESULT DONE IF NEEDED LATER ON
|
---|
67 | .K ^UTILITY("DIQ1",$J)
|
---|
68 | S ERROR=0
|
---|
69 | S FILE=$P(INFOLINE,";",3)
|
---|
70 | S FIELDS=$P(INFOLINE,";",4)
|
---|
71 | S MULTLIM=$P(INFOLINE,";",5)
|
---|
72 | S MULTREV=$P(INFOLINE,";",6)
|
---|
73 | ;CHECK FOR MULTIPLE
|
---|
74 | S MAINFILE=$G(^DD(FILE,0,"UP"))
|
---|
75 | ;CHECK FOR WORD-PROCESSING FIELD
|
---|
76 | S WORDPROC=$F($P($G(^DD(FILE,.01,0)),"^",2),"W")
|
---|
77 | ;NON-MULTIPLE
|
---|
78 | I (MAINFILE="") D Q ERROR
|
---|
79 | .I ((FILE=52)&(RXIFN="")) S ERROR="-1^Pointer to PRESCRIPTION file not passed" Q
|
---|
80 | .S DIC=FILE
|
---|
81 | .S DR=$TR(FIELDS,",",";")
|
---|
82 | .S DA=$S(FILE=52:RXIFN,1:DFN)
|
---|
83 | .S DIQ(0)="E"
|
---|
84 | .K ^UTILITY("DIQ1",$J)
|
---|
85 | .D EN^DIQ1
|
---|
86 | .;STORE IN EXTRACTION ARRAY
|
---|
87 | .F TMP=1:1:$L(FIELDS,",") D
|
---|
88 | ..S FIELD=$P(FIELDS,",",TMP)
|
---|
89 | ..S SEQUENCE=$$GETSEQ^VAQDBIP(ARRAY,FILE,FIELD)
|
---|
90 | ..;DETERMINE IDENTIFIER
|
---|
91 | ..S ID=PATNAME
|
---|
92 | ..S:((FILE=52)&(FIELD'=.01)) ID=RXNUM
|
---|
93 | ..S STRING=$G(^UTILITY("DIQ1",$J,FILE,DA,FIELD,"E"))
|
---|
94 | ..;ENCRYPT
|
---|
95 | ..S ENCSTR=STRING
|
---|
96 | ..I $$NCRPFLD^VAQUTL2(FILE,FIELD) X ENCRYPT
|
---|
97 | ..S @ARRAY@("VALUE",FILE,FIELD,SEQUENCE)=ENCSTR
|
---|
98 | ..S @ARRAY@("ID",FILE,FIELD,SEQUENCE)=ID
|
---|
99 | .K ^UTILITY("DIQ1",$J)
|
---|
100 | ;MULTIPLE
|
---|
101 | I ((MAINFILE'="")&('WORDPROC)) D MLTPLE^VAQDBIP5 Q ERROR
|
---|
102 | ;WORD-PROCESSING FIELD
|
---|
103 | I ((MAINFILE'="")&(WORDPROC)) D WORD^VAQDBIP5 Q ERROR
|
---|
104 | Q
|
---|