[613] | 1 | DGSDU ;ALB/TMP - ACRP API UTILITIES ; 12/8/97 15:09
|
---|
| 2 | ;;5.3;Registration;**151**;Aug 13, 1993
|
---|
| 3 | ;;
|
---|
| 4 | SCAN(DGINDX,DGVAL,DGFILTER,DGCBK,DGCLOSE,DGQUERY,DGDIR) ; Scan encounters
|
---|
| 5 | ; *** NOTE *** When using this call, the variable passed as DGQUERY
|
---|
| 6 | ; must be newed or killed in the callling program
|
---|
| 7 | ; DGINDX = index name property of the query object
|
---|
| 8 | ; DGVAL = array of data elements for start/end of search
|
---|
| 9 | ; DGVAL("DFN") = patient DFN
|
---|
| 10 | ; DGVAL("BDT") = begin date
|
---|
| 11 | ; DGVAL("EDT") = end date
|
---|
| 12 | ; DGVAL("VIS") = encounter file ien
|
---|
| 13 | ; DGFILTER = the executable code to use to screen entries
|
---|
| 14 | ; DGCBK = the executable scan callback code to create the result set
|
---|
| 15 | ; DGCLOSE = Flag that says whether or not to close the QUERY object
|
---|
| 16 | ; 1 = Perform close 0 or null = Do not close object
|
---|
| 17 | ; DGQUERY = the # of the current query, if not a new query. If passed by
|
---|
| 18 | ; reference and query closed, this variable will be nulled
|
---|
| 19 | ; DGDIR = the direction of the scan (optional)
|
---|
| 20 | ; null, undefined or FORWARD : Scan forwards
|
---|
| 21 | ; BACKWARD : Scan backwards
|
---|
| 22 | ;
|
---|
| 23 | N QUERY
|
---|
| 24 | S QUERY=$G(DGQUERY)
|
---|
| 25 | I '$G(QUERY) D
|
---|
| 26 | .D OPEN^SDQ(.DGQUERY) Q:'$G(DGQUERY)
|
---|
| 27 | .D INDEX^SDQ(.DGQUERY,DGINDX,"SET")
|
---|
| 28 | .I $G(DGFILTER)'="" D FILTER^SDQ(.DGQUERY,DGFILTER,"SET")
|
---|
| 29 | .D SCANCB^SDQ(.DGQUERY,DGCBK,"SET")
|
---|
| 30 | I $G(QUERY) D ACTIVE^SDQ(.DGQUERY,"FALSE","SET")
|
---|
| 31 | D SETINDX(.DGQUERY,DGINDX)
|
---|
| 32 | D ACTIVE^SDQ(.DGQUERY,"TRUE","SET")
|
---|
| 33 | S:$G(DGDIR)="" DGDIR="FORWARD"
|
---|
| 34 | D SCAN^SDQ(.DGQUERY,DGDIR)
|
---|
| 35 | I $G(DGCLOSE) D CLOSE(.DGQUERY)
|
---|
| 36 | SCANQ Q
|
---|
| 37 | ;
|
---|
| 38 | CLOSE(DGQUERY) ; Close the query
|
---|
| 39 | G:'$G(DGQUERY) CLOSEQ
|
---|
| 40 | D CLOSE^SDQ(.DGQUERY)
|
---|
| 41 | CLOSEQ Q
|
---|
| 42 | ;
|
---|
| 43 | SETINDX(DGQUERY,DGINDX) ;
|
---|
| 44 | I DGINDX="PATIENT/DATE" D PAT,DATE
|
---|
| 45 | I DGINDX="DATE/TIME" D DATE
|
---|
| 46 | I DGINDX="PATIENT" D PAT
|
---|
| 47 | I DGINDX="VISIT" D VIS
|
---|
| 48 | Q
|
---|
| 49 | ;
|
---|
| 50 | PAT ; Verify patient
|
---|
| 51 | D PAT^SDQ(.DGQUERY,$G(DGVAL("DFN")),"SET")
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | DATE ; Verify date range
|
---|
| 55 | D DATE^SDQ(.DGQUERY,$G(DGVAL("BDT")),$G(DGVAL("EDT")),"SET")
|
---|
| 56 | Q
|
---|
| 57 | ;
|
---|
| 58 | VIS ; Verify visit
|
---|
| 59 | D VISIT^SDQ(.DGQUERY,$G(DGVAL("VIS")),"SET")
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | SCE(DGOE,PC,NODE,ZXERR) ; Returns the specific piece or entire node of the enctr
|
---|
| 63 | ; NODE = the node to return ... if undefined, the 0-node is assumed
|
---|
| 64 | ; If PC is null or undefined, the whole node is returned, otherwise
|
---|
| 65 | ; just the PC-piece is returned
|
---|
| 66 | ; DGERR = the name of the array where errors should be passed back in
|
---|
| 67 | ; (pass in quotes I.E.: "DGERR"). If no name passed, errors are
|
---|
| 68 | ; not returned
|
---|
| 69 | N DGX
|
---|
| 70 | S:$G(NODE)="" NODE=0
|
---|
| 71 | D GETGEN^SDOE(DGOE,"DGX",$G(ZXERR))
|
---|
| 72 | I $G(ZXERR)="" K ^TMP("DIERR",$J)
|
---|
| 73 | S DGX=$S($G(PC):$P($G(DGX(NODE)),U,+PC),1:$G(DGX(NODE)))
|
---|
| 74 | Q DGX
|
---|
| 75 | ;
|
---|