| 1 | VAQDBIP5 ;ALB/JRP - CONTINUATIONS FROM VAQDBIP2;23-MAR-93 | 
|---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993 | 
|---|
| 3 | MLTPLE ;MULTIPLE EXTRACTION | 
|---|
| 4 | ;ALL VARIABLES ARE TAKEN CARE OF IN VAQDBIP2 | 
|---|
| 5 | ;DETERMINE WHERE MULTIPLE RESIDES IN THE MAIN FILE | 
|---|
| 6 | S GLOBAL=$G(^DIC(MAINFILE,0,"GL")) | 
|---|
| 7 | I (GLOBAL="") S ERROR="-1^Couldn't get global root of multiple" Q | 
|---|
| 8 | S MAINFLD=$O(^DD(MAINFILE,"SB",FILE,"")) | 
|---|
| 9 | I (MAINFLD="") S ERROR="-1^Couldn't get field number of multiple" Q | 
|---|
| 10 | S NODE=$P($P($G(^DD(MAINFILE,MAINFLD,0)),"^",4),";",1) | 
|---|
| 11 | I (NODE="") S ERROR="-1^Couldn't get node multiple is stored on" Q | 
|---|
| 12 | ;PUT QUOTES AROUND NON-NUMERIC NODE | 
|---|
| 13 | I (NODE'?1.N) S NODE=$C(34)_NODE_$C(34) | 
|---|
| 14 | S NODE=GLOBAL_$S(MAINFILE=52:RXIFN,1:DFN)_","_NODE_")" | 
|---|
| 15 | ;STORE IFNs IN TEMP ARRAY (ALLOWS FOR REVERSE ORDER EXTRACTION) | 
|---|
| 16 | K ^TMP("VAQ",$J,$J) | 
|---|
| 17 | S ENTRY=0 | 
|---|
| 18 | F  S ENTRY=$O(@NODE@(ENTRY)) Q:('ENTRY)  D | 
|---|
| 19 | .I (MULTREV) S ^TMP("VAQ",$J,$J,(999999999999-ENTRY))=ENTRY Q | 
|---|
| 20 | .S ^TMP("VAQ",$J,$J,ENTRY)=ENTRY | 
|---|
| 21 | ;EXTRACT EACH MULTIPLE ENTRY | 
|---|
| 22 | S ENTRY="",COUNT=1 | 
|---|
| 23 | F  S ENTRY=$O(^TMP("VAQ",$J,$J,ENTRY)) Q:(('ENTRY)!((COUNT>MULTLIM)&(MULTLIM'="")))  D | 
|---|
| 24 | .S DIC=GLOBAL | 
|---|
| 25 | .S DR=MAINFLD | 
|---|
| 26 | .S DA=$S(MAINFILE=52:RXIFN,1:DFN) | 
|---|
| 27 | .S DR(FILE)=$TR(FIELDS,",",";") | 
|---|
| 28 | .S DA(FILE)=^TMP("VAQ",$J,$J,ENTRY) | 
|---|
| 29 | .S DIQ(0)="E" | 
|---|
| 30 | .K ^UTILITY("DIQ1",$J) | 
|---|
| 31 | .D EN^DIQ1 | 
|---|
| 32 | .;STORE IN EXTRACTION ARRAY | 
|---|
| 33 | .F TMP=1:1:$L(FIELDS,",") D | 
|---|
| 34 | ..S FIELD=$P(FIELDS,",",TMP) | 
|---|
| 35 | ..S SEQUENCE=$$GETSEQ^VAQDBIP(ARRAY,FILE,FIELD) | 
|---|
| 36 | ..;ENCRYPT POTENTIAL IDENTIFIER | 
|---|
| 37 | ..S STRING=$G(^UTILITY("DIQ1",$J,FILE,DA(FILE),.01,"E")) | 
|---|
| 38 | ..S ENCSTR=STRING | 
|---|
| 39 | ..I $$NCRPFLD^VAQUTL2(FILE,.01) X ENCRYPT | 
|---|
| 40 | ..;DETERMINE IDENTIFIER | 
|---|
| 41 | ..S ID=ENCSTR | 
|---|
| 42 | ..S:((MAINFILE'=52)&(FIELD=.01)) ID=PATNAME | 
|---|
| 43 | ..S:((MAINFILE=52)&(FIELD=.01)) ID=RXNUM | 
|---|
| 44 | ..;ENCRYPT VALUE | 
|---|
| 45 | ..S STRING=$G(^UTILITY("DIQ1",$J,FILE,DA(FILE),FIELD,"E")) | 
|---|
| 46 | ..S ENCSTR=STRING | 
|---|
| 47 | ..I $$NCRPFLD^VAQUTL2(FILE,FIELD) X ENCRYPT | 
|---|
| 48 | ..;STORE VALUE & IDENTIFIER IN EXTRACTION ARRAY | 
|---|
| 49 | ..S @ARRAY@("VALUE",FILE,FIELD,SEQUENCE)=ENCSTR | 
|---|
| 50 | ..S @ARRAY@("ID",FILE,FIELD,SEQUENCE)=ID | 
|---|
| 51 | .K ^UTILITY("DIQ1",$J) | 
|---|
| 52 | .S COUNT=COUNT+1 | 
|---|
| 53 | K ^TMP("VAQ",$J,$J) | 
|---|
| 54 | Q | 
|---|
| 55 | ; | 
|---|
| 56 | WORD ;WORD-PROCESSING FIELD EXTRACTION | 
|---|
| 57 | ;ALL VARIABLES ARE TAKEN CARE OF IN VAQDBIP2 | 
|---|
| 58 | ;DETERMINE WHERE WORD-PROCESSING RESIDES IN THE MAIN FILE | 
|---|
| 59 | S GLOBAL=$G(^DIC(MAINFILE,0,"GL")) | 
|---|
| 60 | I (GLOBAL="") S ERROR="-1^Couldn't get global root of word-processing field" Q | 
|---|
| 61 | S MAINFLD=$O(^DD(MAINFILE,"SB",FILE,"")) | 
|---|
| 62 | I (MAINFLD="") S ERROR="-1^Couldn't get field number of word-processing field" Q | 
|---|
| 63 | ;EXTRACT WORD-PROCESSING FIELD | 
|---|
| 64 | S DIC=GLOBAL | 
|---|
| 65 | S DR=MAINFLD | 
|---|
| 66 | S DA=$S(MAINFILE=52:RXIFN,1:DFN) | 
|---|
| 67 | S DIQ(0)="E" | 
|---|
| 68 | K ^UTILITY("DIQ1",$J) | 
|---|
| 69 | D EN^DIQ1 | 
|---|
| 70 | ;STORE IN EXTRACTION ARRAY | 
|---|
| 71 | S ENTRY=0 | 
|---|
| 72 | F TMP=0:0 D  Q:(ENTRY="") | 
|---|
| 73 | .S ENTRY=$O(^UTILITY("DIQ1",$J,MAINFILE,DA,MAINFLD,ENTRY)) | 
|---|
| 74 | .Q:(ENTRY="") | 
|---|
| 75 | .S SEQUENCE=$$GETSEQ^VAQDBIP(ARRAY,FILE,.01) | 
|---|
| 76 | .;DETERMINE IDENTIFIER | 
|---|
| 77 | .S ID=PATNAME | 
|---|
| 78 | .S:(MAINFILE=52) ID=RXNUM | 
|---|
| 79 | .;ENCRYPT LINE | 
|---|
| 80 | .S STRING=^UTILITY("DIQ1",$J,MAINFILE,DA,MAINFLD,ENTRY) | 
|---|
| 81 | .S ENCSTR=STRING | 
|---|
| 82 | .I $$NCRPFLD^VAQUTL2(FILE,.01) X ENCRYPT | 
|---|
| 83 | .S @ARRAY@("VALUE",FILE,.01,SEQUENCE)=ENCSTR | 
|---|
| 84 | .S @ARRAY@("ID",FILE,.01,SEQUENCE)=ID | 
|---|
| 85 | K ^UTILITY("DIQ1",$J) | 
|---|
| 86 | Q | 
|---|