DGRRLU3 ;alb/aas - DG Replacement and Rehosting RPC for VADPT ;8/8/05 15:38 ;;5.3;Registration;**538**;Aug 13, 1993 ; QUIT ; -- Get list of wards or clinics for patient lookup by ward ; ; -- Does not currently limit display by division, institution, etc. May need to. ; GETLIST(RESULT,PARAM) ; ; Input: PARAM("TYPE")="ward" returns a list of wards ; PARAM("TYPE")="clinic" returns a list of clinics ; PARAM("TYPE")="provider" returns a list of providers ; PARAM("TYPE")="specialty" returns a list of specialties ; PARAM("VALUE")= Beginning lookup value or null to start ; at the beginning or end of the file. ; PARAM("MAXNUM")= Number of records to be returned. If a ; negative number, traverse backwards. ; NEW X,CNT,DGRRLINE,DGRRESLT,OKAY SET (CNT,OKAY)=0 IF '$D(DT) D DT^DICRW ; SET DGRRLINE=0 K ^TMP($J,"PLU-FILTER") SET DGRRESLT="^TMP($J,""PLU-FILTER"")" SET RESULT=$NA(@DGRRESLT) ; DO ADD^DGRRUTL($$XMLHDR^DGRRUTL) ; IF $$UP^XLFSTR($G(PARAM("TYPE")))="WARD" S OKAY=1 D . D ADD^DGRRUTL("") . D WLIST("ward",$G(PARAM("VALUE")),$G(PARAM("MAXNUM"))) . D ADD^DGRRUTL("") ; IF $$UP^XLFSTR($G(PARAM("TYPE")))="CLINIC" S OKAY=2 D . D ADD^DGRRUTL("") . D CLIST("clinic","C",$G(PARAM("VALUE")),$G(PARAM("MAXNUM"))) . D ADD^DGRRUTL("") ; IF $$UP^XLFSTR($G(PARAM("TYPE")))="PROVIDER" S OKAY=3 D . D ADD^DGRRUTL("") . D PLIST("provider",$G(PARAM("VALUE")),$G(PARAM("MAXNUM"))) . D ADD^DGRRUTL("") ; IF $$UP^XLFSTR($G(PARAM("TYPE")))="SPECIALTY" S OKAY=4 D . D ADD^DGRRUTL("") . D SLIST("specialty",$G(PARAM("VALUE")),$G(PARAM("MAXNUM"))) . D ADD^DGRRUTL("") ; IF OKAY<1 D . D ADD^DGRRUTL("") . D ADD^DGRRUTL("") . D ADD^DGRRUTL("") ; QUIT ; ; -- get list of clinics for patient lookup by clinic CLIST(ITEM,CHKVAL,VALUE,MAXNUM) ; NEW NAME,IEN,IDATE,RDATE,DIR,CNT2,DGRRB,FLAG S VALUE=$$UP^XLFSTR($G(VALUE)) S NAME=$G(VALUE) S MAXNUM=$G(MAXNUM) S DGRRB=0 K ^TMP("DGRRLU3-CLIST",$J) I $E(MAXNUM)="-" D . S DGRRB=1 ; **** .I MAXNUM="-" S MAXNUM="" Q ; **** .S MAXNUM=$$ABS^XLFMTH(MAXNUM) S (FLAG,CNT)=0 I $L(NAME)>0,DGRRB=0,$D(^SC("B",NAME)) S NAME=$O(^SC("B",NAME),-1) ; **** I $L(NAME)>0,DGRRB=1,$D(^SC("B",NAME)) S NAME=$O(^SC("B",NAME)) ; **** I 'DGRRB D . S DIR=1 .FOR S NAME=$O(^SC("B",NAME)) Q:NAME="" DO Q:FLAG=1 .. S IEN=0 .. FOR S IEN=$O(^SC("B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1 ...N STATUS ...S STATUS=$$STATUS(IEN,CHKVAL) ...I STATUS=1 D ....S CNT=CNT+1 I MAXNUM,CNT>MAXNUM S FLAG=1 Q ; **** .... ;DO ADD^DGRRUTL("") .... S ^TMP("DGRRLU3-CLIST",$J,CNT)=IEN_U_NAME I DGRRB D . S DIR=-1 .FOR S NAME=$O(^SC("B",NAME),-1) Q:NAME="" DO Q:FLAG=1 .. S IEN=0 .. FOR S IEN=$O(^SC("B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1 ...N STATUS ...S STATUS=$$STATUS(IEN,CHKVAL) ...I STATUS=1 D ....S CNT=CNT+1 I MAXNUM,CNT>MAXNUM S FLAG=1 Q ; **** .... ; DO ADD^DGRRUTL("") .... S ^TMP("DGRRLU3-CLIST",$J,CNT)=IEN_U_NAME S CNT2="",CNT=0 F S CNT2=$O(^TMP("DGRRLU3-CLIST",$J,CNT2),DIR) Q:CNT2="" D . S IEN=+^TMP("DGRRLU3-CLIST",$J,CNT2) . S NAME=$P(^TMP("DGRRLU3-CLIST",$J,CNT2),U,2) . S CNT=CNT+1 . DO ADD^DGRRUTL("") QUIT STATUS(IEN,CHKVAL) ; N IDATE,RDATE,STATUS S STATUS=0 IF $P($G(^SC(IEN,0)),"^",3)=CHKVAL DO ;is a clinic .S IDATE=$P($G(^SC(IEN,"I")),"^",1) ;inactivate date .S RDATE=$P($G(^SC(IEN,"I")),"^",2) ;reactivate date .IF (IDATE="")!(IDATE'IDATE)) S STATUS=1 Q STATUS ; WLIST(ITEM,VALUE,MAXNUM) ; ; Input: VALUE - Beginning value or null to start at the beginning ; or end of the file. ; MAXNUM - Number of entries to be returned. Defaults to ; traversing forward but if MAXNUM is a negative ; number, traverses through the file backwards. N FLAG,ERROR,CNT,DGRRB,BACKMTCH,CNT2 S CNT=0 ;I VALUE is null and MAXNUM is set to "-" or null, all wards returned S VALUE=$$UP^XLFSTR($G(VALUE)) S MAXNUM=$G(MAXNUM) S FLAG="" I $E(MAXNUM)="-" D .;Set direction for traversing file to backwards and remove - from .;maximum number of records returned. .S FLAG="B" .I MAXNUM="-" S MAXNUM="" Q .S MAXNUM=$$ABS^XLFMTH(MAXNUM) ;Look for exact match K ^TMP("DILIST",$J) I ($G(VALUE)'="") D EXMTCH ;Call File Manager for remaining matches ; K ^TMP("DILIST",$J) I MAXNUM'=0 D LIST^DIC(42,,.01,$G(FLAG),MAXNUM,VALUE,,"B",,,,"ERROR") Q:$D(ERROR) N DGRRI S DGRRI="" I $G(BACKMTCH) D . S ^TMP("DILIST",$J,2,"ZZ")=+BACKMTCH . S ^TMP("DILIST",$J,1,"ZZ")=$P(BACKMTCH,U,2) S DGRRB=1 ; I FLAG="B" S DGRRB=-1 F S DGRRI=$O(^TMP("DILIST",$J,1,DGRRI),DGRRB) Q:DGRRI="" D .N IEN,NAME .S CNT=CNT+1 .S NAME=$G(^TMP("DILIST",$J,1,DGRRI)) .S IEN=$G(^TMP("DILIST",$J,2,DGRRI)) .DO ADD^DGRRUTL("") ; I FLAG="B",($G(VALUE)'="") D EXMTCH Q EXMTCH ;Look for exact match I $D(^DIC(42,"B",VALUE)) D .N IEN .S IEN=0 .F S IEN=$O(^DIC(42,"B",VALUE,IEN)) Q:IEN="" D ..N NAME ..S NAME=$P($G(^DIC(42,+IEN,0)),U) .. ; S CNT=CNT+1 .. I MAXNUM'="" S MAXNUM=MAXNUM-1 .. I FLAG'="B" S CNT=CNT+1 DO ADD^DGRRUTL("") .. I FLAG="B" S BACKMTCH=IEN_U_NAME Q ; -- get list of providers for patient lookup by provider ; from ORQPTQ2 PLIST(ITEM,VALUE,MAXNUM) ; NEW NAME,IEN,DGRRB,FLAG,CNT2,DGRRSCR,DGRRFMT S VALUE=$$UP^XLFSTR($G(VALUE)) S NAME=$G(VALUE) S MAXNUM=$G(MAXNUM) S DGRRB=1 ;K ^TMP("DGRRLU3-PLIST",$J) K ^TMP("DILIST",$J) I $E(MAXNUM)="-" D . S DGRRB=-1 ; ***** . I MAXNUM="-" S MAXNUM="" Q ; ***** .S MAXNUM=$$ABS^XLFMTH(MAXNUM) S (FLAG,CNT)=0 ;I $L(NAME)>0,DGRRB=1,$D(^VA(200,"B",NAME)) S NAME=$O(^VA(200,"B",NAME),-1) ;I $L(NAME)>0,DGRRB=-1,$D(^VA(200,"B",NAME)) S NAME=$O(^VA(200,"B",NAME)) ;FOR S NAME=$O(^VA(200,"B",NAME),DGRRB) Q:NAME="" DO Q:FLAG=1 ;. S IEN=0 ;. FOR S IEN=$O(^VA(200,"B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1 ;.. I $D(^XUSEC("PROVIDER",IEN)),$$ACTIVE^XUSER(IEN) DO ;... SET CNT=CNT+1 ;... S ^TMP("DGRRLU3-PLIST",$J,CNT)=IEN_U_NAME ;... I MAXNUM,CNT>(MAXNUM-1) S FLAG=1 ;S CNT2="",CNT=0 ;F S CNT2=$O(^TMP("DGRRLU3-PLIST",$J,CNT2),DGRRB) Q:CNT2="" D ;. S IEN=+^TMP("DGRRLU3-PLIST",$J,CNT2) ;. S NAME=$P(^TMP("DGRRLU3-PLIST",$J,CNT2),U,2) ;. S CNT=CNT+1 ;. DO ADD^DGRRUTL("") I $L(NAME)>0,DGRRB=1,$D(^VA(200,"AK.PROVIDER",NAME)) S NAME=$O(^VA(200,"AK.PROVIDER",NAME),-1) I $L(NAME)>0,DGRRB=-1,$D(^VA(200,"AK.PROVIDER",NAME)) S NAME=$O(^VA(200,"AK.PROVIDER",NAME)) S DGRRSCR="I $$ACTIVE^XUSER(+Y)" S DGRRFMT="P"_$S(DGRRB=-1:"B",1:"") D LIST^DIC(200,,"@;.01",DGRRFMT,MAXNUM,NAME,,"AK.PROVIDER",DGRRSCR) S (CNT2,CNT)=0 F S CNT2=$O(^TMP("DILIST",$J,CNT2)) Q:CNT2="" D . S IEN=+$G(^TMP("DILIST",$J,CNT2,0)) . S NAME=$P($G(^TMP("DILIST",$J,CNT2,0)),U,2) . S CNT=CNT+1 . DO ADD^DGRRUTL("") K ^TMP("DILIST",$J) D CLEAN^DILF QUIT ; SLIST(ITEM,VALUE,MAXNUM) ;Returns active specialties in Facility TreatingSpecialty (#45.7) file ; N NAME,IEN,CNT,FLAG,DGRRB,DGRRD,CNT2 S NAME=$$UP^XLFSTR($G(VALUE)) ; S NAME=$G(VALUE) S (FLAG,IEN,CNT)=0 S MAXNUM=$G(MAXNUM) S DGRRB=1 K ^TMP("DGRRLU3-SLIST",$J) I $E(MAXNUM)="-" D .S DGRRB=-1 .S MAXNUM=$$ABS^XLFMTH(MAXNUM) ;Capture exact matches I $L(NAME),$D(^DIC(45.7,"B",NAME)) D .N DGRRD .S DGRRD=$S(DGRRB=1:-1,1:1) .S NAME=$O(^DIC(45.7,"B",NAME),DGRRD) F S NAME=$O(^DIC(45.7,"B",NAME),DGRRB) Q:NAME="" D Q:FLAG=1 .F S IEN=$O(^DIC(45.7,"B",NAME,IEN)) Q:IEN'>0 D Q:FLAG=1 ..I $$ACTIVE^DGACT(45.7,IEN) D ...S CNT=CNT+1 ...I MAXNUM,(CNT>MAXNUM) S FLAG=1 Q ...; DO ADD^DGRRUTL("") ...S ^TMP("DGRRLU3-SLIST",$J,CNT)=IEN_U_NAME S CNT=1,CNT2="" S DGRRD=$S(DGRRB=1:1,1:-1) F S CNT2=$O(^TMP("DGRRLU3-SLIST",$J,CNT2),DGRRD) Q:CNT2="" D . S IEN=+^TMP("DGRRLU3-SLIST",$J,CNT2) . S NAME=$P(^TMP("DGRRLU3-SLIST",$J,CNT2),U,2) . DO ADD^DGRRUTL("") . S CNT=CNT+1 Q ; DISPLAY(RESULT) ; NEW I S I=-1 FOR SET I=$O(@RESULT@(I)) Q:I<1 W !!,@RESULT@(I) QUIT