| [613] | 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 |  ;
 | 
|---|