[613] | 1 | DGRRLU3 ;alb/aas - DG Replacement and Rehosting RPC for VADPT ;8/8/05 15:38
|
---|
| 2 | ;;5.3;Registration;**538**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | QUIT
|
---|
| 5 | ; -- Get list of wards or clinics for patient lookup by ward
|
---|
| 6 | ;
|
---|
| 7 | ; -- Does not currently limit display by division, institution, etc. May need to.
|
---|
| 8 | ;
|
---|
| 9 | GETLIST(RESULT,PARAM) ;
|
---|
| 10 | ; Input: PARAM("TYPE")="ward" returns a list of wards
|
---|
| 11 | ; PARAM("TYPE")="clinic" returns a list of clinics
|
---|
| 12 | ; PARAM("TYPE")="provider" returns a list of providers
|
---|
| 13 | ; PARAM("TYPE")="specialty" returns a list of specialties
|
---|
| 14 | ; PARAM("VALUE")= Beginning lookup value or null to start
|
---|
| 15 | ; at the beginning or end of the file.
|
---|
| 16 | ; PARAM("MAXNUM")= Number of records to be returned. If a
|
---|
| 17 | ; negative number, traverse backwards.
|
---|
| 18 | ;
|
---|
| 19 | NEW X,CNT,DGRRLINE,DGRRESLT,OKAY
|
---|
| 20 | SET (CNT,OKAY)=0
|
---|
| 21 | IF '$D(DT) D DT^DICRW
|
---|
| 22 | ;
|
---|
| 23 | SET DGRRLINE=0
|
---|
| 24 | K ^TMP($J,"PLU-FILTER")
|
---|
| 25 | SET DGRRESLT="^TMP($J,""PLU-FILTER"")"
|
---|
| 26 | SET RESULT=$NA(@DGRRESLT)
|
---|
| 27 | ;
|
---|
| 28 | DO ADD^DGRRUTL($$XMLHDR^DGRRUTL)
|
---|
| 29 | ;
|
---|
| 30 | IF $$UP^XLFSTR($G(PARAM("TYPE")))="WARD" S OKAY=1 D
|
---|
| 31 | . D ADD^DGRRUTL("<filterlist type='ward'>")
|
---|
| 32 | . D WLIST("ward",$G(PARAM("VALUE")),$G(PARAM("MAXNUM")))
|
---|
| 33 | . D ADD^DGRRUTL("</filterlist>")
|
---|
| 34 | ;
|
---|
| 35 | IF $$UP^XLFSTR($G(PARAM("TYPE")))="CLINIC" S OKAY=2 D
|
---|
| 36 | . D ADD^DGRRUTL("<filterlist type='clinic'>")
|
---|
| 37 | . D CLIST("clinic","C",$G(PARAM("VALUE")),$G(PARAM("MAXNUM")))
|
---|
| 38 | . D ADD^DGRRUTL("</filterlist>")
|
---|
| 39 | ;
|
---|
| 40 | IF $$UP^XLFSTR($G(PARAM("TYPE")))="PROVIDER" S OKAY=3 D
|
---|
| 41 | . D ADD^DGRRUTL("<filterlist type='provider'>")
|
---|
| 42 | . D PLIST("provider",$G(PARAM("VALUE")),$G(PARAM("MAXNUM")))
|
---|
| 43 | . D ADD^DGRRUTL("</filterlist>")
|
---|
| 44 | ;
|
---|
| 45 | IF $$UP^XLFSTR($G(PARAM("TYPE")))="SPECIALTY" S OKAY=4 D
|
---|
| 46 | . D ADD^DGRRUTL("<filterlist type='specialty'>")
|
---|
| 47 | . D SLIST("specialty",$G(PARAM("VALUE")),$G(PARAM("MAXNUM")))
|
---|
| 48 | . D ADD^DGRRUTL("</filterlist>")
|
---|
| 49 | ;
|
---|
| 50 | IF OKAY<1 D
|
---|
| 51 | . D ADD^DGRRUTL("<unspecified>")
|
---|
| 52 | . D ADD^DGRRUTL("<error message='List type not supported or not specified!'>")
|
---|
| 53 | . D ADD^DGRRUTL("</unspecified>")
|
---|
| 54 | ;
|
---|
| 55 | QUIT
|
---|
| 56 | ;
|
---|
| 57 | ; -- get list of clinics for patient lookup by clinic
|
---|
| 58 | CLIST(ITEM,CHKVAL,VALUE,MAXNUM) ;
|
---|
| 59 | NEW NAME,IEN,IDATE,RDATE,DIR,CNT2,DGRRB,FLAG
|
---|
| 60 | S VALUE=$$UP^XLFSTR($G(VALUE))
|
---|
| 61 | S NAME=$G(VALUE)
|
---|
| 62 | S MAXNUM=$G(MAXNUM)
|
---|
| 63 | S DGRRB=0
|
---|
| 64 | K ^TMP("DGRRLU3-CLIST",$J)
|
---|
| 65 | I $E(MAXNUM)="-" D
|
---|
| 66 | . S DGRRB=1 ; ****
|
---|
| 67 | .I MAXNUM="-" S MAXNUM="" Q ; ****
|
---|
| 68 | .S MAXNUM=$$ABS^XLFMTH(MAXNUM)
|
---|
| 69 | S (FLAG,CNT)=0
|
---|
| 70 | I $L(NAME)>0,DGRRB=0,$D(^SC("B",NAME)) S NAME=$O(^SC("B",NAME),-1) ; ****
|
---|
| 71 | I $L(NAME)>0,DGRRB=1,$D(^SC("B",NAME)) S NAME=$O(^SC("B",NAME)) ; ****
|
---|
| 72 | I 'DGRRB D
|
---|
| 73 | . S DIR=1
|
---|
| 74 | .FOR S NAME=$O(^SC("B",NAME)) Q:NAME="" DO Q:FLAG=1
|
---|
| 75 | .. S IEN=0
|
---|
| 76 | .. FOR S IEN=$O(^SC("B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1
|
---|
| 77 | ...N STATUS
|
---|
| 78 | ...S STATUS=$$STATUS(IEN,CHKVAL)
|
---|
| 79 | ...I STATUS=1 D
|
---|
| 80 | ....S CNT=CNT+1 I MAXNUM,CNT>MAXNUM S FLAG=1 Q ; ****
|
---|
| 81 | .... ;DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 82 | .... S ^TMP("DGRRLU3-CLIST",$J,CNT)=IEN_U_NAME
|
---|
| 83 | I DGRRB D
|
---|
| 84 | . S DIR=-1
|
---|
| 85 | .FOR S NAME=$O(^SC("B",NAME),-1) Q:NAME="" DO Q:FLAG=1
|
---|
| 86 | .. S IEN=0
|
---|
| 87 | .. FOR S IEN=$O(^SC("B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1
|
---|
| 88 | ...N STATUS
|
---|
| 89 | ...S STATUS=$$STATUS(IEN,CHKVAL)
|
---|
| 90 | ...I STATUS=1 D
|
---|
| 91 | ....S CNT=CNT+1 I MAXNUM,CNT>MAXNUM S FLAG=1 Q ; ****
|
---|
| 92 | .... ; DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 93 | .... S ^TMP("DGRRLU3-CLIST",$J,CNT)=IEN_U_NAME
|
---|
| 94 | S CNT2="",CNT=0
|
---|
| 95 | F S CNT2=$O(^TMP("DGRRLU3-CLIST",$J,CNT2),DIR) Q:CNT2="" D
|
---|
| 96 | . S IEN=+^TMP("DGRRLU3-CLIST",$J,CNT2)
|
---|
| 97 | . S NAME=$P(^TMP("DGRRLU3-CLIST",$J,CNT2),U,2)
|
---|
| 98 | . S CNT=CNT+1
|
---|
| 99 | . DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 100 | QUIT
|
---|
| 101 | STATUS(IEN,CHKVAL) ;
|
---|
| 102 | N IDATE,RDATE,STATUS
|
---|
| 103 | S STATUS=0
|
---|
| 104 | IF $P($G(^SC(IEN,0)),"^",3)=CHKVAL DO ;is a clinic
|
---|
| 105 | .S IDATE=$P($G(^SC(IEN,"I")),"^",1) ;inactivate date
|
---|
| 106 | .S RDATE=$P($G(^SC(IEN,"I")),"^",2) ;reactivate date
|
---|
| 107 | .IF (IDATE="")!(IDATE'<DT)!((IDATE<DT)&(RDATE>IDATE)) S STATUS=1
|
---|
| 108 | Q STATUS
|
---|
| 109 | ;
|
---|
| 110 | WLIST(ITEM,VALUE,MAXNUM) ;
|
---|
| 111 | ; Input: VALUE - Beginning value or null to start at the beginning
|
---|
| 112 | ; or end of the file.
|
---|
| 113 | ; MAXNUM - Number of entries to be returned. Defaults to
|
---|
| 114 | ; traversing forward but if MAXNUM is a negative
|
---|
| 115 | ; number, traverses through the file backwards.
|
---|
| 116 | N FLAG,ERROR,CNT,DGRRB,BACKMTCH,CNT2
|
---|
| 117 | S CNT=0
|
---|
| 118 | ;I VALUE is null and MAXNUM is set to "-" or null, all wards returned
|
---|
| 119 | S VALUE=$$UP^XLFSTR($G(VALUE))
|
---|
| 120 | S MAXNUM=$G(MAXNUM)
|
---|
| 121 | S FLAG=""
|
---|
| 122 | I $E(MAXNUM)="-" D
|
---|
| 123 | .;Set direction for traversing file to backwards and remove - from
|
---|
| 124 | .;maximum number of records returned.
|
---|
| 125 | .S FLAG="B"
|
---|
| 126 | .I MAXNUM="-" S MAXNUM="" Q
|
---|
| 127 | .S MAXNUM=$$ABS^XLFMTH(MAXNUM)
|
---|
| 128 | ;Look for exact match
|
---|
| 129 | K ^TMP("DILIST",$J)
|
---|
| 130 | I ($G(VALUE)'="") D EXMTCH
|
---|
| 131 | ;Call File Manager for remaining matches
|
---|
| 132 | ; K ^TMP("DILIST",$J)
|
---|
| 133 | I MAXNUM'=0 D LIST^DIC(42,,.01,$G(FLAG),MAXNUM,VALUE,,"B",,,,"ERROR")
|
---|
| 134 | Q:$D(ERROR)
|
---|
| 135 | N DGRRI
|
---|
| 136 | S DGRRI=""
|
---|
| 137 | I $G(BACKMTCH) D
|
---|
| 138 | . S ^TMP("DILIST",$J,2,"ZZ")=+BACKMTCH
|
---|
| 139 | . S ^TMP("DILIST",$J,1,"ZZ")=$P(BACKMTCH,U,2)
|
---|
| 140 | S DGRRB=1 ; I FLAG="B" S DGRRB=-1
|
---|
| 141 | F S DGRRI=$O(^TMP("DILIST",$J,1,DGRRI),DGRRB) Q:DGRRI="" D
|
---|
| 142 | .N IEN,NAME
|
---|
| 143 | .S CNT=CNT+1
|
---|
| 144 | .S NAME=$G(^TMP("DILIST",$J,1,DGRRI))
|
---|
| 145 | .S IEN=$G(^TMP("DILIST",$J,2,DGRRI))
|
---|
| 146 | .DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 147 | ; I FLAG="B",($G(VALUE)'="") D EXMTCH
|
---|
| 148 | Q
|
---|
| 149 | EXMTCH ;Look for exact match
|
---|
| 150 | I $D(^DIC(42,"B",VALUE)) D
|
---|
| 151 | .N IEN
|
---|
| 152 | .S IEN=0
|
---|
| 153 | .F S IEN=$O(^DIC(42,"B",VALUE,IEN)) Q:IEN="" D
|
---|
| 154 | ..N NAME
|
---|
| 155 | ..S NAME=$P($G(^DIC(42,+IEN,0)),U)
|
---|
| 156 | .. ; S CNT=CNT+1
|
---|
| 157 | .. I MAXNUM'="" S MAXNUM=MAXNUM-1
|
---|
| 158 | .. I FLAG'="B" S CNT=CNT+1 DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 159 | .. I FLAG="B" S BACKMTCH=IEN_U_NAME
|
---|
| 160 | Q
|
---|
| 161 | ; -- get list of providers for patient lookup by provider
|
---|
| 162 | ; from ORQPTQ2
|
---|
| 163 | PLIST(ITEM,VALUE,MAXNUM) ;
|
---|
| 164 | NEW NAME,IEN,DGRRB,FLAG,CNT2,DGRRSCR,DGRRFMT
|
---|
| 165 | S VALUE=$$UP^XLFSTR($G(VALUE))
|
---|
| 166 | S NAME=$G(VALUE)
|
---|
| 167 | S MAXNUM=$G(MAXNUM)
|
---|
| 168 | S DGRRB=1
|
---|
| 169 | ;K ^TMP("DGRRLU3-PLIST",$J)
|
---|
| 170 | K ^TMP("DILIST",$J)
|
---|
| 171 | I $E(MAXNUM)="-" D
|
---|
| 172 | . S DGRRB=-1 ; *****
|
---|
| 173 | . I MAXNUM="-" S MAXNUM="" Q ; *****
|
---|
| 174 | .S MAXNUM=$$ABS^XLFMTH(MAXNUM)
|
---|
| 175 | S (FLAG,CNT)=0
|
---|
| 176 | ;I $L(NAME)>0,DGRRB=1,$D(^VA(200,"B",NAME)) S NAME=$O(^VA(200,"B",NAME),-1)
|
---|
| 177 | ;I $L(NAME)>0,DGRRB=-1,$D(^VA(200,"B",NAME)) S NAME=$O(^VA(200,"B",NAME))
|
---|
| 178 | ;FOR S NAME=$O(^VA(200,"B",NAME),DGRRB) Q:NAME="" DO Q:FLAG=1
|
---|
| 179 | ;. S IEN=0
|
---|
| 180 | ;. FOR S IEN=$O(^VA(200,"B",NAME,IEN)) Q:IEN<1 DO Q:FLAG=1
|
---|
| 181 | ;.. I $D(^XUSEC("PROVIDER",IEN)),$$ACTIVE^XUSER(IEN) DO
|
---|
| 182 | ;... SET CNT=CNT+1
|
---|
| 183 | ;... S ^TMP("DGRRLU3-PLIST",$J,CNT)=IEN_U_NAME
|
---|
| 184 | ;... I MAXNUM,CNT>(MAXNUM-1) S FLAG=1
|
---|
| 185 | ;S CNT2="",CNT=0
|
---|
| 186 | ;F S CNT2=$O(^TMP("DGRRLU3-PLIST",$J,CNT2),DGRRB) Q:CNT2="" D
|
---|
| 187 | ;. S IEN=+^TMP("DGRRLU3-PLIST",$J,CNT2)
|
---|
| 188 | ;. S NAME=$P(^TMP("DGRRLU3-PLIST",$J,CNT2),U,2)
|
---|
| 189 | ;. S CNT=CNT+1
|
---|
| 190 | ;. DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 191 | I $L(NAME)>0,DGRRB=1,$D(^VA(200,"AK.PROVIDER",NAME)) S NAME=$O(^VA(200,"AK.PROVIDER",NAME),-1)
|
---|
| 192 | I $L(NAME)>0,DGRRB=-1,$D(^VA(200,"AK.PROVIDER",NAME)) S NAME=$O(^VA(200,"AK.PROVIDER",NAME))
|
---|
| 193 | S DGRRSCR="I $$ACTIVE^XUSER(+Y)"
|
---|
| 194 | S DGRRFMT="P"_$S(DGRRB=-1:"B",1:"")
|
---|
| 195 | D LIST^DIC(200,,"@;.01",DGRRFMT,MAXNUM,NAME,,"AK.PROVIDER",DGRRSCR)
|
---|
| 196 | S (CNT2,CNT)=0
|
---|
| 197 | F S CNT2=$O(^TMP("DILIST",$J,CNT2)) Q:CNT2="" D
|
---|
| 198 | . S IEN=+$G(^TMP("DILIST",$J,CNT2,0))
|
---|
| 199 | . S NAME=$P($G(^TMP("DILIST",$J,CNT2,0)),U,2)
|
---|
| 200 | . S CNT=CNT+1
|
---|
| 201 | . DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 202 | K ^TMP("DILIST",$J)
|
---|
| 203 | D CLEAN^DILF
|
---|
| 204 | QUIT
|
---|
| 205 | ;
|
---|
| 206 | SLIST(ITEM,VALUE,MAXNUM) ;Returns active specialties in Facility TreatingSpecialty (#45.7) file
|
---|
| 207 | ;
|
---|
| 208 | N NAME,IEN,CNT,FLAG,DGRRB,DGRRD,CNT2
|
---|
| 209 | S NAME=$$UP^XLFSTR($G(VALUE))
|
---|
| 210 | ; S NAME=$G(VALUE)
|
---|
| 211 | S (FLAG,IEN,CNT)=0
|
---|
| 212 | S MAXNUM=$G(MAXNUM)
|
---|
| 213 | S DGRRB=1
|
---|
| 214 | K ^TMP("DGRRLU3-SLIST",$J)
|
---|
| 215 | I $E(MAXNUM)="-" D
|
---|
| 216 | .S DGRRB=-1
|
---|
| 217 | .S MAXNUM=$$ABS^XLFMTH(MAXNUM)
|
---|
| 218 | ;Capture exact matches
|
---|
| 219 | I $L(NAME),$D(^DIC(45.7,"B",NAME)) D
|
---|
| 220 | .N DGRRD
|
---|
| 221 | .S DGRRD=$S(DGRRB=1:-1,1:1)
|
---|
| 222 | .S NAME=$O(^DIC(45.7,"B",NAME),DGRRD)
|
---|
| 223 | F S NAME=$O(^DIC(45.7,"B",NAME),DGRRB) Q:NAME="" D Q:FLAG=1
|
---|
| 224 | .F S IEN=$O(^DIC(45.7,"B",NAME,IEN)) Q:IEN'>0 D Q:FLAG=1
|
---|
| 225 | ..I $$ACTIVE^DGACT(45.7,IEN) D
|
---|
| 226 | ...S CNT=CNT+1
|
---|
| 227 | ...I MAXNUM,(CNT>MAXNUM) S FLAG=1 Q
|
---|
| 228 | ...; DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 229 | ...S ^TMP("DGRRLU3-SLIST",$J,CNT)=IEN_U_NAME
|
---|
| 230 | S CNT=1,CNT2=""
|
---|
| 231 | S DGRRD=$S(DGRRB=1:1,1:-1)
|
---|
| 232 | F S CNT2=$O(^TMP("DGRRLU3-SLIST",$J,CNT2),DGRRD) Q:CNT2="" D
|
---|
| 233 | . S IEN=+^TMP("DGRRLU3-SLIST",$J,CNT2)
|
---|
| 234 | . S NAME=$P(^TMP("DGRRLU3-SLIST",$J,CNT2),U,2)
|
---|
| 235 | . DO ADD^DGRRUTL("<lineitem number='"_CNT_"' id='"_IEN_"' name='"_$$CHARCHK^DGRRUTL(NAME)_"'></lineitem>")
|
---|
| 236 | . S CNT=CNT+1
|
---|
| 237 | Q
|
---|
| 238 | ;
|
---|
| 239 | DISPLAY(RESULT) ;
|
---|
| 240 | NEW I
|
---|
| 241 | S I=-1 FOR SET I=$O(@RESULT@(I)) Q:I<1 W !!,@RESULT@(I)
|
---|
| 242 | QUIT
|
---|