DVBAB1 ;ALB/SPH - CAPRI UTILITIES ;01/01/00 ;;2.7;AMIE;**35,37,50,42,53,57,73,104,109**;Apr 10, 1995 ; VERSION(ZMSG,DVBGUIV) ; ; Must have a letter at the end of the Version for Delphi compatibility ; 1st piece is version description ; 2nd piece can be YESOLD or NOOLD ; YESOLD = Allow old GUI to run with new KID ; NOOLD = Do not allow old GUI to run with newer version S ZMSG="CAPRI GUI V2.7*71*1*A^NOOLD" S DVBABVR1="CAPRI Server Version: "+ZMSG I '$D(DVBGUIV) S DVBGUIV="CAPRI GUI Version: UNKNOWN - Version is prior to DVBA*2.7*71" S DVBABVR2="CAPRI GUI Version: "+DVBGUIV S DVBABVR3=$P(^VA(200,DUZ,0),"^",1) Q ; REQUESTS(Y,TYPE) ; ; TYPE is the internal value of field 17 in file 396.3 ; This relates to which status of request should be returned N DVBABCNT,DVBABIEN S DVBABCNT=0,DVBABIEN=0 F S DVBABIEN=$O(^DVB(396.3,DVBABIEN)) Q:'DVBABIEN D .S DVBABST=$P($G(^DVB(396.3,DVBABIEN,0)),"^",18) .I DVBABST=TYPE D ..S DVBABNM=$P($G(^DVB(396.3,DVBABIEN,0)),"^",1) ..S DVBABPT=DVBABNM ..I DVBABNM'="" S DVBABNM=$P($G(^DPT(DVBABNM,0)),"^",1) ..S DVBABDT=$$FMTE^XLFDT($P($G(^DVB(396.3,DVBABIEN,0)),"^",2),"2D") ..S DVBABWHO=$P($G(^DVB(396.3,DVBABIEN,0)),"^",4) ..I DVBABWHO'="" S DVBABWHO=$P($G(^VA(200,DVBABWHO,0)),"^",1) ..E S DVBABWHO="UNKNOWN" ..S DVBABRO=$P($G(^DVB(396.3,DVBABIEN,0)),"^",3) ..I DVBABRO'="" S DVBABRO=$P($G(^DIC(4,DVBABRO,0)),"^",1) ..E S DVBABRO="UNKNOWN" ..S ^TMP("DVBAREQ",DUZ,DVBABCNT)=DVBABST_"^"_DVBABPT_"^"_DVBABNM_"^"_DVBABDT_"^"_DVBABWHO_"^"_DVBABRO_"^"_DVBABIEN_$C(13),DVBABCNT=DVBABCNT+1 S Y=$NA(^TMP("DVBAREQ",DUZ)) K DVBABCNT,DVBABIEN,TYPE,DVBABNM,DVBABDT,DVBABST,DVBABWHO,DVBABPT Q TEAMPTS(DVBORY,TEAM,TMPFLAG) ; RETURN LIST OF PATIENTS IN A TEAM ; If TMPFLAG passed and = TRUE, code expects a "^TMP(xxx" ; global root string passed in ORY, and builds the returned ; list in that global instead of to a memory array. N DOTMP,NEWTMP,DVBSSN,DVBORI,DVBORPT,I K ^TMP("DVBATMPT",DUZ) S (I,DOTMP,DVBORI)=0 I $G(TMPFLAG) D ; Was value passed? .I TMPFLAG S DOTMP=1 ; Is value TRUE? I +$G(TEAM)<1 D .I DOTMP S NEWTMP=DVBORY_1_")",@NEWTMP="^No team identified" .E S DVBORY(1)="^No team identified" F S DVBORI=$O(^OR(100.21,+TEAM,10,DVBORI)) Q:DVBORI<1 D .S DVBORPT=^OR(100.21,+TEAM,10,DVBORI,0) .I DOTMP D ..S I=I+1,NEWTMP=DVBORY_+I_")" ..S @NEWTMP=+DVBORPT_U_$P(^DPT(+DVBORPT,0),U) .S DVBSSN=$P($G(^DPT($P(DVBORPT,";",1),0)),U,9) .E S I=I+1,^TMP("DVBATMPT",DUZ,I)=+DVBORPT_U_$P(^DPT(+DVBORPT,0),U)_U_DVBSSN_$C(13) I DOTMP S:I<1 NEWTMP=DVBORY_1_")",@NEWTMP="^No patients found." E S:I<1 ^TMP("DVBATMPT",DUZ,1)="^No patients found." S DVBORY=$NA(^TMP("DVBATMPT",DUZ)) Q DIVISION(Y) ; Returns Name for an Institution N DVBARR,DVBERR,DVBATP S Y="" Q:$G(DUZ(2))="" D GETS^DIQ(4,DUZ(2)_",0",".01","I","DVBARR","DVBERR") Q:$D(DVBERR) S Y=$G(DVBARR(4,DUZ(2)_",0,",.01,"I")) D GETS^DIQ(4,DUZ(2)_",0",13,"I","DVBARR","DVBERR") S DVBATP=$G(DVBARR(4,DUZ(2)_",0,",13,"I")) I DVBATP'="" S DVBATP=$P($G(^DIC(4.1,DVBATP,0)),"^",1) S Y=Y_"-"_DVBATP Q ; DT(Y,X1,X2) ; Returns date X1 minus X2 days ; change the '00:00' that could be passed so Fileman doesn't reject ;C^%DTC(X1,X2) ;S %DT=$G(%DT,"TS") D ^%DT ;K %DT,X1,X2 ;Q DTTM(Y) ; S Y=$$HTE^XLFDT($H,"P") Q CHKCRED(Y) ;KLB S Y="[OK]" I '$D(DUZ(2)) S Y="Your division number is missing." Q I $D(DUZ)#2=0 S Y="Your user number is invalid." Q I +DUZ(2)<1 S Y="Invalid division." Q PTINQ(REF,DFN) ; Return formatted pt inquiry report K ^TMP("ORDATA",$J,1) ; DVBA*2.7*109 - Added $D to next line I ($D(^DPT(DFN,0))) D START^ORWRP(80,"DGINQB^ORCXPND1(DFN)") S REF=$NA(^TMP("ORDATA",$J,1)) Q TEMPLATE(Y) ; Returns list of CAPRI exam templates N DVBABCNT,DVBABIEN,DVBABNM,DVBABAD,DVBABDD,DVBABSL,DVBABOC K Y,^TMP("DVBALAB1",DUZ) S DVBABCNT=0,DVBABIEN=0 F S DVBABIEN=$O(^DVB(396.18,DVBABIEN)) Q:'DVBABIEN D .S DVBABNM=$P($G(^DVB(396.18,DVBABIEN,0)),"^",1) .S DVBABAD=$P($G(^DVB(396.18,DVBABIEN,2)),"^",1) .S DVBABDD=$P($G(^DVB(396.18,DVBABIEN,2)),"^",2) .S DVBABSL=$P($G(^DVB(396.18,DVBABIEN,6)),"^",1) .S DVBABOC=$P($G(^DVB(396.18,DVBABIEN,6)),"^",2) .S ^TMP("DVBATMPL",DUZ,DVBABCNT)=DVBABNM_"^"_DVBABAD_"^"_DVBABDD_"^"_DVBABSL_"^"_DVBABOC_"^"_DVBABIEN_$C(13),DVBABCNT=DVBABCNT+1 S Y=$NA(^TMP("DVBATMPL",DUZ)) Q ; LABLIST(Y) ; Returns list of LAB TEST NAMES N DVBABCNT,DVBABIEN,DVBABLNM K Y,^TMP("DVBALAB1",DUZ) S DVBABCNT=0,DVBABIEN=0 F S DVBABIEN=$O(^LAB(60,DVBABIEN)) Q:'DVBABIEN D .S DVBABLNM=$P($G(^LAB(60,DVBABIEN,0)),"^",1) .S ^TMP("DVBALAB1",DUZ,DVBABCNT)=DVBABLNM_"^"_DVBABIEN_$C(13),DVBABCNT=DVBABCNT+1 S Y=$NA(^TMP("DVBALAB1",DUZ)) Q ; INSTLIST(Y) ; Returns full list of Institutions N DVBABCNT,DVBABIEN,DVBABNM,DVBABSTN,DVBABST,DVBABDS,DVBARR,DVBERR,DVBATP K Y,^TMP("DVBAINST",$J,DUZ) S (DVBABCNT,DVBABIEN)=0 F S DVBABIEN=$O(^DIC(4,DVBABIEN)) Q:'DVBABIEN D . K DVBARR,DVBERR . D GETS^DIQ(4,DVBABIEN_",0",".01:.02:.03:","I","DVBARR","DVBERR") . Q:$D(DVBERR) . S DVBABNM=$G(DVBARR(4,DVBABIEN_",0,",.01,"I")) . Q:DVBABNM="" . S DVBABSTN=$G(DVBARR(4,DVBABIEN_",0,",.02,"I")) . Q:DVBABSTN="" . S DVBABDS=$G(DVBARR(4,DVBABIEN_",0,",.03,"I")) . K DVBARR,DVBERR . D GETS^DIQ(5,DVBABSTN_",0",.01,"I","DVBARR","DVBERR") . Q:$D(DVBERR) . S DVBABST=$G(DVBARR(5,DVBABSTN_",0,",.01,"I")) . K DVBARR,DVBERR . D GETS^DIQ(4,DVBABIEN_",0",13,"I","DVBARR","DVBERR") . S DVBATP=$G(DVBARR(4,DVBABIEN_",0,",13,"I")) . I DVBATP'="" D .. S DVBATP=$P($G(^DIC(4.1,DVBATP,0)),"^",1) . S ^TMP("DVBAINST",$J,DUZ,DVBABCNT)=DVBABNM_"-"_DVBATP_"^"_DVBABST_"^"_DVBABDS_"^"_DVBABIEN_$C(13) . S DVBABCNT=DVBABCNT+1 S Y=$NA(^TMP("DVBAINST",$J,DUZ)) Q ; INCEXAM(ZMSG) ;Increased exam # in file and passes back the # to user S ZMSG=+$G(^DVB(396.1,1,5))+1 S ^DVB(396.1,1,5)=ZMSG Q ; MSG(ERR,DUZ,XMSUB,XMTEXT,MGN) ;Generate mail message;KLB S ERR="" K ^TMP($J,"AMIE") I '$D(DUZ) S ERR="MISSING DUZ" Q I '$D(XMSUB) S ERR="MISSING SUBJECT" Q I '$D(XMTEXT) S ERR="MISSING TEXT" Q I '$D(MGN) S ERR="MISSING MAIL GROUP NAME" Q S XMDUZ=DUZ,J=0 F S J=$O(XWBS1(J)) Q:'J S ^TMP($J,"AMIE",J)=$G(XWBS1(J)) S XMTEXT="^TMP($J,""AMIE""," S DIC="^XMB(3.8,",DIC(0)="QM",X=MGN D ^DIC S MG=+Y I +Y<0 S ERR="INVALID MAIL GROUP NAME" Q I '$$GOTLOCAL^XMXAPIG(MGN) S ERR="NO ACTIVE LOCAL MEMBERS IN MAIL GROUP" K ^TMP("XMERR",$J) Q S ZZ=0,ZZ1=0 F S ZZ=$O(^XMB(3.8,MG,1,"B",ZZ)) Q:'ZZ D .F S ZZ1=$O(^XMB(3.8,MG,1,"B",ZZ,ZZ1)) Q:'ZZ1 S XMY(ZZ)="" D ^XMD I $D(XMMG) S ERR=XMMG E S ERR="MESSAGE SENT" K XMSUB,XMTEXT,MGN,DIC,DIC(0),ZZ,XMY,XWBS1,J,ZZ1,MG,^TMP($J,"AMIE"),XMMG,Y,XMDUZ Q FINDEXAM(ZMSG,ZIEN) ;Returns list of exams in 396.4 that are linked to ZIEN in 396.3 N DVBABCNT,DVBABIEN S DVBABCNT=0,DVBABIEN=0 F S DVBABIEN=$O(^DVB(396.4,"C",ZIEN,DVBABIEN)) Q:'DVBABIEN D .S DVBABD1=$P($G(^DVB(396.4,DVBABIEN,0)),"^",2) .S DVBABD2=$P($G(^DVB(396.6,+$P($G(^DVB(396.4,DVBABIEN,0)),"^",3),0)),"^",1) ;Name of Exam .S DVBABD3=$P($G(^DVB(396.4,DVBABIEN,0)),"^",4) .I DVBABD3="O" S DVBABD3="[OPEN]" .I DVBABD3="C" S DVBABD3="[COMPLETE]" .I DVBABD3="X" S DVBABD3="[CANCELED BY MAS]" .I DVBABD3="RX" S DVBABD3="[CANCELED BY RO]" .I DVBABD3="T" S DVBABD3="[TRANSFERRED OUT]" .I ZIEN=DVBABD1 D ..S ZMSG(DVBABCNT)=DVBABIEN_"^"_DVBABD2_" "_DVBABD3 ..S DVBABCNT=DVBABCNT+1 K DVBABCNT,DVBABIEN,ZIEN,DVBABD1,DVBABD2,DVBABD3 Q