1 | QACVKHLD ; OAKOIFO/TKW - DATA MIGRATION - VISTALINK RPC CODE ;5/5/06 12:56
|
---|
2 | ;;2.0;Patient Representative;**19**;07/25/1995;Build 55
|
---|
3 | EN(PATSLIST,PATSROWS,PATSFRM0,PATSFRM1) ; Called from ^QACVEMPX
|
---|
4 | ; Read list of Security Key Names in PATSLIST, return a list
|
---|
5 | ; of all people in NEW PERSON file who hold that key.
|
---|
6 | N PATSKI,PATSKEY,KEYSCR,LSTNAME,LSTIEN,CURRDT,I,J,X,Y,Z
|
---|
7 | S CURRDT=$$DT^XLFDT()
|
---|
8 | I '$G(PATSROWS) S PATSROWS=10
|
---|
9 | S PATSFRM0=$G(PATSFRM0),PATSFRM1=$G(PATSFRM1)
|
---|
10 | K ^TMP("QACKHLD",$J)
|
---|
11 | ; Build the list of people who hold one or more of the keys. The
|
---|
12 | ; screen prevents us from looking up same person holding more than
|
---|
13 | ; one of the keys in the list, and screens out terminated users.
|
---|
14 | ; IA #10060
|
---|
15 | S KEYSCR="I ($P(^(0),""^"",11)=""""!(CURRDT<$P(^(0),""^"",11))),'$D(^TMP(""QACKHLD"",$J,""IEN"",Y))"
|
---|
16 | F PATSKI=0:0 S PATSKI=$O(PATSLIST(PATSKI)) Q:'PATSKI!($G(DIERR)) S PATSKEY=PATSLIST(PATSKI) D:PATSKEY]""
|
---|
17 | . D FIND^DIC(200,,"@;.01I;8;28","X",PATSKEY,,"AB",.KEYSCR)
|
---|
18 | . F I=0:0 S I=$O(^TMP("DILIST",$J,2,I)) Q:'I S X=^(I) D
|
---|
19 | .. S Y=$G(^TMP("DILIST",$J,"ID",I,.01))
|
---|
20 | .. Q:'X!(Y="")
|
---|
21 | .. ; Build list of IENs to use in FIND^DIC screen
|
---|
22 | .. S ^TMP("QACKHLD",$J,"IEN",X)=""
|
---|
23 | .. ; Build list of person data, ordered by name, IEN.
|
---|
24 | .. S Z=X_"^"_$G(^TMP("DILIST",$J,"ID",I,8))_"^"_$G(^(28))
|
---|
25 | .. S ^TMP("QACKHLD",$J,"NAME",Y,X)=Z
|
---|
26 | .. Q
|
---|
27 | . Q
|
---|
28 | ; Now build output as if this came from a lister call. Sort the
|
---|
29 | ; output by person NAME then IEN. PATSFRM0 is the ending name from
|
---|
30 | ; the last call, PATSFRM1 is the last IEN (if the ending name in
|
---|
31 | ; the previous call matches the first name in this one).
|
---|
32 | K ^TMP("DILIST",$J)
|
---|
33 | S Y=PATSFRM0,I=0,(LSTNAME,LSTIEN)=""
|
---|
34 | I PATSFRM1 S Y=$O(^TMP("QACKHLD",$J,"NAME",PATSFRM0),-1)
|
---|
35 | F S Y=$O(^TMP("QACKHLD",$J,"NAME",Y)) Q:Y=""!(I>PATSROWS) D
|
---|
36 | . F X=+PATSFRM1:0 S X=$O(^TMP("QACKHLD",$J,"NAME",Y,X)) Q:'X!(I>PATSROWS) S Z=^(X) D
|
---|
37 | .. S I=I+1
|
---|
38 | .. ; If we exceed the total number of rows to be output this time,
|
---|
39 | .. ; set FROM values as if we came from a LIST^DIC call.
|
---|
40 | .. I I>PATSROWS D Q
|
---|
41 | ... S PATSFRM0=LSTNAME
|
---|
42 | ... S PATSFRM1=$S(Y=LSTNAME:LSTIEN,1:"")
|
---|
43 | .. S ^TMP("DILIST",$J,I,0)=Z
|
---|
44 | .. S LSTNAME=Y,LSTIEN=X,(PATSFRM0,PATSFRM1)=""
|
---|
45 | .. Q
|
---|
46 | . Q
|
---|
47 | K ^TMP("QACKHLD",$J)
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | ;
|
---|