[613] | 1 | IBCEFG ;ALB/TMP - OUTPUT FORMATTER EXTRACT ;17-JAN-96
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**52,51**;21-MAR-94
|
---|
| 3 | ;
|
---|
| 4 | EXTRACT(IBXFORM,IBXIEN,IBXREC,IBXPARM) ; Extract entry into global by rec #/pg/ln/col
|
---|
| 5 | ; IBXFORM (required) Form id pointer to file #353
|
---|
| 6 | ; IBXIEN (required) entry # in form's base file to output
|
---|
| 7 | ; IBXREC (optional) record # in extract file - if not defined - 1 used
|
---|
| 8 | ; IBXPARM (optional) array used to pass in specific search variables
|
---|
| 9 | ; that can be used to customize the determination
|
---|
| 10 | ; of the form field definition to use for each
|
---|
| 11 | ; form field to be extracted
|
---|
| 12 | ; IBXPARM(1) should contain a code to identify the
|
---|
| 13 | ; type of form being processed (see $$ELE^IBCEFG0 function)
|
---|
| 14 | ; Returns total # of bytes of data extracted if extract successful
|
---|
| 15 | ; or 0 if extract not successful
|
---|
| 16 | ;
|
---|
| 17 | N IBXPG,IBXLN,IBXCOL,IBXERR,IBXF,IBXFILE,IBX2,IBXSIZE
|
---|
| 18 | S IBXERR="" S:$G(IBXREC)="" IBXREC=1
|
---|
| 19 | I $G(IBXFORM)=""!($G(IBXIEN)="") S IBXERR="Missing Parameters" G EXTQ
|
---|
| 20 | K ^TMP("IBXDATA",$J,IBXREC),^TMP("DIERR",$J,1),^TMP("IBXEDIT",$J)
|
---|
| 21 | ;
|
---|
| 22 | S IBX2=$G(^IBE(353,IBXFORM,2)),IBXFILE=+IBX2
|
---|
| 23 | I 'IBXFILE S IBXERR="No base file found for form "_IBXFORM G EXTQ
|
---|
| 24 | S IBXF=$S($P(IBX2,U,5):$P(IBX2,U,5),1:IBXFORM)
|
---|
| 25 | ;
|
---|
| 26 | I $G(^IBE(353,IBXFORM,"PRE"))'="" X ^("PRE") ;Entry pre-proc
|
---|
| 27 | I $G(^IBE(353,IBXFORM,"PRE"))="",$G(^IBE(353,IBXF,"PRE"))'="" X ^("PRE") ;Entry pre-proc - parent
|
---|
| 28 | G:$G(IBXERR)'="" EXTQ
|
---|
| 29 | ;
|
---|
| 30 | S IBXPG=""
|
---|
| 31 | F S IBXPG=$O(^IBA(364.6,"ASEQ",IBXF,IBXPG)) Q:IBXPG="" S IBXLN="" F S IBXLN=$O(^IBA(364.6,"ASEQ",IBXF,IBXPG,IBXLN)) Q:IBXLN="" S IBXCOL="" D G:$G(IBXERR)'="" EXTQ
|
---|
| 32 | .F S IBXCOL=$O(^IBA(364.6,"ASEQ",IBXF,IBXPG,IBXLN,IBXCOL)) Q:IBXCOL="" D Q:$G(IBXERR)'=""
|
---|
| 33 | ..S IBXDA=$O(^IBA(364.6,"ASEQ",IBXF,IBXPG,IBXLN,IBXCOL,""))
|
---|
| 34 | ..Q:'IBXDA
|
---|
| 35 | ..D DATA(IBXPG,IBXLN,IBXCOL,IBXIEN,IBXFORM,IBXDA,.IBXPARM,.IBXERR)
|
---|
| 36 | .. I $G(IBXERR)'="" S IBXERR=IBXERR_" Field: "_$P($G(^IBA(364.6,IBXDA,0)),U,10)
|
---|
| 37 | ;
|
---|
| 38 | EXTQ ;
|
---|
| 39 | I $G(^IBE(353,IBXFORM,"POST"))'="" X ^("POST") ;Entry post-proc - assoc form or parent if not associated
|
---|
| 40 | I $G(^IBE(353,IBXFORM,"POST"))="",$G(^IBE(353,IBXF,"POST"))'="" X ^("POST") ;Entry post-proc - parent of associated form
|
---|
| 41 | ;
|
---|
| 42 | K IBXMAX,IBX0,IBX00,IBXARRAY,IBXDA,IBXDATA,IBXFF,IBZ,IBZ0,IBZ1
|
---|
| 43 | S:$G(IBXERR)'="" IBXSIZE=0
|
---|
| 44 | Q +$G(IBXSIZE)
|
---|
| 45 | ;
|
---|
| 46 | DATA(IBXPG,IBXLN,IBXCOL,IBXIEN,IBXFORM,IBXDA,IBXPARM,IBXERR) ; Extract/Format Data Element
|
---|
| 47 | ;IBXPG,IBXLN,IBXCOL = page,line,column to extract
|
---|
| 48 | ;IBXIEN = internal entry # of entity to extract
|
---|
| 49 | ;IBXFORM = internal entry # of FORM (file 353) to use to extract data
|
---|
| 50 | ;IBXDA = ien of IB FORM SKELETON file entry to use (file 364.6)
|
---|
| 51 | ; to use to extract the data
|
---|
| 52 | ;IBXPARM = passed by reference. Array that optionally contains the
|
---|
| 53 | ; parameters to use to screen
|
---|
| 54 | ;IBXERR = passed by reference. Returned = error message if error
|
---|
| 55 | ; condition found
|
---|
| 56 | ;
|
---|
| 57 | ; If associated form fld - get 'local' fld override
|
---|
| 58 | S:'$D(IBXREC) IBXREC=1
|
---|
| 59 | S:'$D(IBXFILE) IBXFILE=+$G(^IBE(353,IBXFORM,2))
|
---|
| 60 | N IBXFF,IBX0,IBXELE,IBXARRAY,IBXZ,IBXMAX,IBXLEN,IBZ,IBZ0,IBZ1,IBX00,IBXDA0
|
---|
| 61 | S IBXFF=$$ELE^IBCEFG0(IBXDA,.IBXPARM,IBXFORM) ;Form field entry to use
|
---|
| 62 | Q:'IBXFF ;no form field definition found
|
---|
| 63 | S IBX0=$G(^IBA(364.7,IBXFF,0)) ;Form field 0-node
|
---|
| 64 | ;
|
---|
| 65 | S IBXELE=$P(IBX0,U,3) ;data element def entry to use
|
---|
| 66 | Q:'$D(^IBA(364.5,+IBXELE,0)) S IBX00=$G(^(0))
|
---|
| 67 | ;
|
---|
| 68 | S IBXARRAY=$S($G(^IBA(364.5,IBXELE,2))="":"IBXDATA",1:^(2))
|
---|
| 69 | K:IBXARRAY?1A.E!(IBXARRAY?1"^"1A.E) @IBXARRAY
|
---|
| 70 | S @IBXARRAY=$$DATA^IBCEFG0(IBXELE,IBX00,IBXFILE,IBXIEN,IBXARRAY,.IBXERR)
|
---|
| 71 | Q:$G(IBXERR)'=""
|
---|
| 72 | ;
|
---|
| 73 | I $G(^IBA(364.7,IBXFF,1))'="" S IBXZ=^(1) D Q:$G(IBXERR)'=""
|
---|
| 74 | . N IBXFF,IBXLOOP,Z
|
---|
| 75 | . F Z="IBXDA","IBXPG","IBXLN","IBXCOL","IBX0" S IBXLOOP(Z)=@Z ;Protect loop variables
|
---|
| 76 | . X IBXZ
|
---|
| 77 | . F Z="IBXDA","IBXPG","IBXLN","IBXCOL","IBX0" K @Z S @Z=IBXLOOP(Z)
|
---|
| 78 | S IBXDA0=$G(^IBA(364.6,IBXDA,0))
|
---|
| 79 | ; Check for required field
|
---|
| 80 | I $P(IBXDA0,U,13),'$G(IBXNOREQ) D Q:$G(IBXERR)'=""
|
---|
| 81 | . I $G(@IBXARRAY)="" N Z S Z=0 F S Z=$O(@IBXARRAY@(Z)) S:'Z IBXERR="No data found for required field " Q:$S('Z:1,1:$G(@IBXARRAY@(Z))'="")
|
---|
| 82 | D:'$G(IBXNOREQ) NULLCHEK
|
---|
| 83 | K IBXNOREQ
|
---|
| 84 | Q:$P(IBXDA0,U,11)!($P(IBXDA0,U,8)[".")!('$D(@IBXARRAY)) ;data no longer exists or fld not an output fld
|
---|
| 85 | ;
|
---|
| 86 | S IBXMAX=$O(@IBXARRAY@(""),-1),IBXLEN=$P(IBXDA0,U,9)
|
---|
| 87 | I IBXMAX,$P(IBXDA0,U,6),IBXMAX>$P(IBXDA0,U,6) S IBXERR="Max # lines or occurrences exceeded ("_IBXMAX_" > "_$P(IBXDA0,U,6)_") - "_$P(IBXDA0,U,10) Q:$G(IBXERR)'=""
|
---|
| 88 | I 'IBXMAX D Q
|
---|
| 89 | . D SETGBL(IBXPG,IBXLN,IBXCOL,$$FORMAT($G(@IBXARRAY),IBXLEN,$P(^IBA(364.7,IBXFF,0),U,7),IBX0),.IBXSIZE)
|
---|
| 90 | . D:$P($G(^IBE(353,IBXFORM,2)),U,2)="S" SETEDIT(IBXFORM,IBX0)
|
---|
| 91 | ;
|
---|
| 92 | S IBZ=IBXARRAY,IBZ0=$E(IBZ,1,$L(IBZ)-$S($E(IBZ,$L(IBZ))=")":1,1:0))
|
---|
| 93 | S:IBZ0["("&($P(IBZ0,"(",2)'="") IBZ0=IBZ0_"," S:IBZ0'["(" IBZ0=IBZ0_"("
|
---|
| 94 | F S IBZ=$Q(@IBZ) Q:IBZ'[IBZ0 I $QS(IBZ,$QL(IBZ)) D
|
---|
| 95 | . S IBZ1=IBXLN+$P(IBZ,IBZ0,2)-1
|
---|
| 96 | . D SETGBL(IBXPG,IBZ1,IBXCOL,$$FORMAT(@IBZ,IBXLEN,$P(^IBA(364.7,IBXFF,0),U,7),IBX0,+$P(IBZ,"(",2)),.IBXSIZE)
|
---|
| 97 | . D:$P($G(^IBE(353,IBXFORM,2)),U,2)="S" SETEDIT(IBXFORM,IBX0)
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | FORMAT(DATA,IBXLEN,IBXPAD,IBX0,MULTI) ; Adjust length on data for field def,add prompt
|
---|
| 101 | ; DATA = the data to be output
|
---|
| 102 | ; IBXLEN = the max length of the data
|
---|
| 103 | ; IBXPAD = code for pad character
|
---|
| 104 | ; IBX0 = the 0-node of the entry in file 364.7 being formatted
|
---|
| 105 | ; MULTI = (optional)
|
---|
| 106 | ; 0 or null if a single occurrence of the data
|
---|
| 107 | ; > 0 if multiple ocurrences of the data being processed (group data)
|
---|
| 108 | ;
|
---|
| 109 | N Z
|
---|
| 110 | S Z="",$P(Z,$S($E(IBXPAD)="Z":"0",1:" "),IBXLEN+1)=""
|
---|
| 111 | S Z=$S($E(IBXPAD)="N":$E(DATA,1,IBXLEN),$E(IBXPAD,2)="L":$E(Z,1,IBXLEN-$L(DATA))_DATA,1:$E(DATA_Z,1,IBXLEN))
|
---|
| 112 | I $P(IBX0,U,4)'="" D
|
---|
| 113 | .I $S('$G(MULTI):1,1:MULTI=1) S Z=$P(IBX0,U,4)_Z Q ;Add prompt to data
|
---|
| 114 | .S Z=$J("",$L($P(IBX0,U,4)))_Z
|
---|
| 115 | I $P(IBX0,U,10),$P(IBX0,U,9)="E" S Z="["_$P(IBX0,U,10)_"] "_Z
|
---|
| 116 | Q Z
|
---|
| 117 | ;
|
---|
| 118 | SETGBL(IBXPG,IBXLN,IBXCOL,VAL,IBXSIZE) ; Sets the output global
|
---|
| 119 | ;IBXPG = Form page IBXLN = Form line IBXCOL = form column
|
---|
| 120 | ;VAL = value to place at PG/LINE/COL IBXSIZE = size counter (optional)
|
---|
| 121 | ;
|
---|
| 122 | S ^TMP("IBXDATA",$J,IBXREC,IBXPG,IBXLN,IBXCOL)=VAL,IBXSIZE=$G(IBXSIZE)+$L(VAL)
|
---|
| 123 | Q
|
---|
| 124 | ;
|
---|
| 125 | SETEDIT(IBFORM,IBX0) ;
|
---|
| 126 | N Z,Z0
|
---|
| 127 | Q:$P(IBX0,U,9)="D"!'$P(IBX0,U,10)
|
---|
| 128 | S Z0=$P($G(^IBA(364.5,+$P(IBX0,U,3),0)),U,6)
|
---|
| 129 | Q:Z0="" S Z0=$O(^DD(+$G(^IBE(353,IBXFORM,2)),"B",Z0,""))
|
---|
| 130 | Q:Z0=""
|
---|
| 131 | S Z=$O(^TMP("IBXEDIT",$J,$P(IBX0,U,10),""),-1)+1
|
---|
| 132 | S ^TMP("IBXEDIT",$J,$P(IBX0,U,10),Z)=Z0
|
---|
| 133 | Q
|
---|
| 134 | ;
|
---|
| 135 | NULLCHEK ; Checks for no output if null, deletes variable if appropriate
|
---|
| 136 | ; Check for no output if transmit and null
|
---|
| 137 | I $P($G(^IBA(364.6,+IBXDA,0)),U,12),$P($G(^IBE(353,IBXFORM,2)),U,2)="T" D
|
---|
| 138 | . I $D(@IBXARRAY)=1 K:$G(@IBXARRAY)="" @IBXARRAY Q
|
---|
| 139 | . I $D(@IBXARRAY)>9 D
|
---|
| 140 | .. N Z
|
---|
| 141 | .. S Z=0 F S Z=$O(@IBXARRAY@(Z)) Q:'Z I $G(@IBXARRAY@(Z))="" K @IBXARRAY@(Z)
|
---|
| 142 | Q
|
---|
| 143 | ;
|
---|