Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BGP4GUA

BGP4GUA.m

Go to the documentation of this file.
  1. BGP4GUA ; IHS/CMI/LAB - BGP Gui Utilities 10/29/2004 3:28:39 PM 19 Sep 2005 5:28 PM 27 Apr 2010 10:28 PM ;
  1. ;;14.1;IHS CLINICAL REPORTING;;MAY 29, 2014;Build 114
  1. ;
  1. ;
  1. DEBUG(RETVAL,BGPSTR) ;run the debugger
  1. D DEBUG^%Serenji("LABTAXC^BGP4GU(.RETVAL,.BGPSTR)")
  1. Q
  1. ;
  1. GETPAT(BGPRET,BGPSTR) ;-- return patient in ADO table
  1. S X="MERR^BGPGU",@^%ZOSF("TRAP") ; m error trap
  1. N BGPI,BGPERR,BGPUIEN,P
  1. S P="|"
  1. K ^BGPTMP($J)
  1. S BGPRET="^BGPTMP("_$J_")"
  1. S BGPI=0
  1. S BGPERR=""
  1. S ^BGPTMP($J,BGPI)="T00010IEN^T00030PATIENTNAME^T00015DOB^T00001SEX^T00007CHART^T00009SSN^T00010REG^T00030LAST UPDATE^T00030CLASSBEN^T00010AGE"_$C(30)
  1. S BGPPAT=$P(BGPSTR,P,2)
  1. S BGPMT=$P(BGPSTR,P,3)
  1. S BGPNPAT=$P(BGPSTR,P,4)
  1. I BGPMT="ALL" S BGPMT=9999999
  1. S BGPMT=(BGPMT-1)
  1. I BGPPAT?9N D
  1. . S BGPPIEN=$$PATSSN(BGPPAT)
  1. I BGPPAT?1.6N D
  1. . S BGPPIEN=$$PATCHT(.BGPPIEN,BGPPAT)
  1. I BGPPAT?1.2N1"/"1.2N1"/"4N D
  1. . S X=BGPPAT D ^%DT S BGPPAT=Y
  1. . S BGPPIEN=$$PATDOB(.BGPPIEN,BGPPAT)
  1. I '$G(BGPPIEN) D PATNAM(.BGPPIEN,BGPPAT,BGPNPAT)
  1. I $G(BGPPIEN),'$G(BGPPATS) D PATADO(.BGPPIEN)
  1. S ^BGPTMP($J,BGPI+1)=$C(31)_$G(BGPERR)
  1. K BGPPAT,BGPPIEN,BGPCNT,BGPDA,BGPIEN,BGPPATE,BGPNM,BGPDB,BGPSX,BGPCT,BGPSSN
  1. K BGPPATS
  1. Q
  1. ;
  1. PATSSN(PAT) ;-- look up by ssn
  1. S BGPPIEN=$O(^DPT("SSN",PAT,0))
  1. S BGPPIEN(1)=BGPPIEN
  1. Q $G(BGPPIEN)
  1. ;
  1. PATCHT(BGPPIEN,PAT) ;-- lookup by chart
  1. N BGPCNT
  1. S BGPCNT=0,BGPPATE=0,BGPMCNT=0
  1. S BGPDA=(PAT-1) F S BGPDA=$O(^AUPNPAT("D",BGPDA)) Q:'BGPDA!(BGPDA>PAT)!(BGPCNT>BGPMT) D
  1. . S BGPIEN=0 F S BGPIEN=$O(^AUPNPAT("D",BGPDA,BGPIEN)) Q:'BGPIEN D
  1. .. I $O(^AUPNPAT("D",BGPDA,BGPIEN,0))=DUZ(2) S BGPPIEN=BGPIEN
  1. .. Q:'$G(BGPPIEN)
  1. .. ;
  1. .. S BGPCNT=BGPCNT+1
  1. .. S:'$D(BGPPIEN(BGPCNT)) BGPPIEN(BGPCNT)=0
  1. .. S BGPPIEN(BGPCNT)=BGPPIEN
  1. Q $G(BGPPIEN)
  1. ;
  1. PATDOB(BGPPATE,PAT) ;-- lookup by DOB
  1. N BGPCNT
  1. S BGPCNT=0,BGPPATE=0
  1. S BGPDOB=PAT-1 F S BGPDOB=$O(^DPT("ADOB",BGPDOB)) Q:'BGPDOB!(BGPDOB'=+PAT)!(BGPCNT>BGPMT) D
  1. . S BGPIEN=0 F S BGPIEN=$O(^DPT("ADOB",BGPDOB,BGPIEN)) Q:'BGPIEN D
  1. .. S:'$D(BGPPATE(BGPCNT)) BGPPATE(BGPCNT)=0
  1. .. S BGPCNT=BGPCNT+1,BGPPATE=1
  1. .. S BGPPATE(BGPCNT)=BGPIEN
  1. S BGPPATE=BGPCNT
  1. Q $G(BGPPATE)
  1. ;
  1. PATNAM(BGPPATE,PAT,NPAT) ;lookup by name
  1. S BGPCNT=0,BGPPATE=0
  1. N BGPLEN
  1. S BGPLEN=$L(PAT)
  1. S BGPNAM=PAT
  1. S BGPNAM=$$BEGIN(PAT)
  1. I $G(NPAT)]"" S BGPNAM=NPAT
  1. F S BGPNAM=$O(^DPT("B",BGPNAM)) Q:BGPNAM=""!($E(BGPNAM,1,BGPLEN)'=PAT)!(BGPCNT>BGPMT) D
  1. . S BGPIEN=0 F S BGPIEN=$O(^DPT("B",BGPNAM,BGPIEN)) Q:'BGPIEN D
  1. .. Q:$O(^DPT("B",BGPNAM,BGPIEN,0)) ;cmi/maw 4/25/2005 don't get aliases
  1. .. S BGPCNT=BGPCNT+1
  1. .. S:'$D(BGPPATE(BGPCNT)) BGPPATE(BGPCNT)=0
  1. .. S BGPPATE(BGPCNT)=BGPIEN
  1. S BGPPATE=BGPCNT
  1. Q $G(BGPPATE)
  1. ;
  1. BEGIN(PT) ;-- get begin point
  1. N BGPPDA,BGPPIEN,BGPPCNT
  1. S BGPPCNT=0
  1. S BGPPDA=PT
  1. I $O(^DPT("B",BGPPDA,0)) D
  1. . S BGPPDA=$O(^DPT("B",BGPPDA),-1)
  1. F S BGPPDA=$O(^DPT("B",BGPPDA)) Q
  1. I $G(BGPPDA)="" Q ""
  1. Q $O(^DPT("B",BGPPDA),-1)
  1. ;
  1. PATADO(PIEN) ;-- ado return
  1. S BGPCNTR=0
  1. S BGPDA=0 F S BGPDA=$O(PIEN(BGPDA)) Q:'BGPDA D
  1. . S BGPCNTR=BGPCNTR+1
  1. . S BGPPI=$G(PIEN(BGPDA))
  1. . S BGPNM=$P($G(^DPT(BGPPI,0)),U)
  1. . S BGPDB=$$FMTE^XLFDT($P($G(^DPT(BGPPI,0)),U,3))
  1. . S BGPSX=$P($G(^DPT(BGPPI,0)),U,2)
  1. . S BGPCT=$$HRN^AUPNPAT(BGPPI,DUZ(2))
  1. . S BGPSSN=$P($G(^DPT(BGPPI,0)),U,9)
  1. . S BGPUPD=$P($G(^AUPNPAT(BGPPI,0)),U,3) ;cmi/maw 5/17/2009 added last reg update
  1. . S BGPELG=$$GET1^DIQ(9000001,BGPPI,1111) ;cmi/maw 5/17/2009 added class/ben for status bar
  1. . S BGPAGE=$$AGE^AUPNPAT(BGPPI,DT)
  1. . S BGPI=BGPI+1
  1. . S ^BGPTMP($J,BGPI)=BGPPI_U_BGPNM_U_BGPDB_U_BGPSX_U_BGPCT_U_BGPSSN_U_$G(BGPHD)_U_BGPUPD_U_BGPELG_U_BGPAGE_$C(30)
  1. Q
  1. ;
  1. SELSP(RETVAL) ;-- return all sites in the site file for selection
  1. N BGPI
  1. S BGPI=0
  1. S RETVAL="^BGPTMP("_$J_")"
  1. K ^BGPTMP($J)
  1. S ^BGPTMP($J,BGPI)="T00050Site"_$C(30)
  1. N BGPDA
  1. S BGPDA=0 F S BGPDA=$O(^BGPSITE("B",BGPDA)) Q:'BGPDA D
  1. . N BGPSE
  1. . S BGPSE=$P($G(^DIC(4,BGPDA,0)),U)
  1. . S BGPI=BGPI+1
  1. . S ^BGPTMP($J,BGPI)=BGPSE_$C(30)
  1. S ^BGPTMP($J,BGPI+1)=$C(31)
  1. Q
  1. ;
  1. DEMO(RETVAL,BGPSTR) ;-- cmi/maw 8.0 p2 get demo patients based on Search Template passed in
  1. N BGPI,BGPST,BGPSTI,P
  1. S P="|"
  1. S BGPI=0
  1. S BGPSTI=$P(BGPSTR,P)
  1. ;S BGPSTI=$O(^DIBT("B",BGPST,0))
  1. S RETVAL="^BGPTMP("_$J_")"
  1. K ^BGPTMP($J)
  1. S ^BGPTMP($J,BGPI)="T00010IEN^T00030PATIENTNAME^T00015DOB^T00001SEX^T00007CHART^T00009SSN^T00010REG^T00030LAST UPDATE^T00030CLASSBEN^T00010AGE"_$C(30)
  1. N BGPDA
  1. S BGPDA=0 F S BGPDA=$O(^DIBT(BGPSTI,1,BGPDA)) Q:'BGPDA D
  1. . N BGPNM,BGPDB,BGPSX,BGPCT,BGPSSN
  1. . S BGPI=BGPI+1
  1. . S BGPNM=$P($G(^DPT(BGPDA,0)),U)
  1. . S BGPDB=$$FMTE^XLFDT($P($G(^DPT(BGPDA,0)),U,3))
  1. . S BGPSX=$P($G(^DPT(BGPDA,0)),U,2)
  1. . S BGPCT=$$HRN^AUPNPAT(BGPDA,DUZ(2))
  1. . S BGPSSN=$P($G(^DPT(BGPDA,0)),U,9)
  1. . S ^BGPTMP($J,BGPI)=BGPDA_U_BGPNM_U_BGPDB_U_BGPSX_U_BGPCT_U_BGPSSN_U_U_U_U_$C(30)
  1. S ^BGPTMP($J,BGPI+1)=$C(31)
  1. Q
  1. ;
  1. DEMOS(RETVAL,BGPSTR) ;-- cmi/maw 6/11/2010 8.0 p1 save demo template
  1. N P,R,BGPI,BGPST,BGPSTI,BGPPATS,BGPFDA,BGPERR,BGPIENS
  1. S P="|",R="~"
  1. S BGPI=0
  1. S RETVAL="^BGPTMP("_$J_")"
  1. S BGPST=$P(BGPSTR,P)
  1. S BGPPATS=$P(BGPSTR,P,2)
  1. S BGPSTI=$S($G(BGPST):BGPST,1:$O(^DIBT("B",BGPST,0)))
  1. S ^BGPTMP($J,BGPI)="T00001Error"_$C(30)
  1. S P="|"
  1. I $G(BGPSTI) D Q
  1. . D CLNDEMO(BGPSTI)
  1. . N I
  1. . F I=1:1 D Q:$P(BGPPATS,R,I)=""
  1. .. Q:$P(BGPPATS,R,I)=""
  1. .. N BGPPAT
  1. .. S BGPPAT=$P(BGPPATS,R,I)
  1. .. S ^DIBT(BGPSTI,1,BGPPAT)=""
  1. . S ^BGPTMP($J,BGPI+1)=$C(31)
  1. ;S BGPIENS=""
  1. ;S BGPFDA(.401,"+1,",.01)=BGPST
  1. ;D UPDATE^DIE("","BGPFDA","BGPIENS","BGPERR(1)")
  1. ;S BGPSTI=$G(BGPIENS(1))
  1. ;N I
  1. ;F I=1:1 D Q:$P(BGPPATS,R,I)=""
  1. ;. Q:$P(BGPPATS,R,I)=""
  1. ;. N BGPPAT
  1. ;. S BGPPAT=$P(BGPPATS,R,I)
  1. ;. S ^DIBT(BGPSTI,1,BGPPAT)=""
  1. S ^BGPTMP($J,BGPI+1)=$C(31)
  1. Q
  1. ;
  1. CLNDEMO(STI) ;-- cmi/maw 6/11/2010 8.0 p1 clean up demo template first
  1. N BGPDA
  1. S DA(1)=STI
  1. S DIK="^DIBT("_DA(1)_",1,"
  1. S BGPDA=0 F S BGPDA=$O(^DIBT(STI,1,BGPDA)) Q:'BGPDA D
  1. . S DA=BGPDA
  1. . D ^DIK
  1. K DIK
  1. Q
  1. ;
  1. VC(RETVAL,BGPSTR) ;-- get version number to see if client matches
  1. N P
  1. S P="|"
  1. K ^BGPTMP($J)
  1. N BGPVER,BGPVERI,BGPVERIN,BGPPKG,BGPI,BGPPTCH,BGPPTCHI,BGPVERI
  1. S BGPI=0
  1. S BGPVERIN=$P(BGPSTR,P)
  1. ;S BGPVERIN=8.3
  1. S RETVAL="^BGPTMP("_$J_")"
  1. S ^BGPTMP($J,BGPI)="T00001VersionPresent"_$C(30)
  1. S BGPI=BGPI+1
  1. S BGPPKG=$O(^DIC(9.4,"C","BGP",0))
  1. I '$G(BGPPKG) D Q
  1. . S ^BGPTMP($J,BGPI)=0_$C(30)
  1. . S ^BGPTMP($J,BGPI+1)=$C(31)
  1. S BGPVER=$G(^DIC(9.4,BGPPKG,"VERSION"))
  1. S BGPVERI=$O(^DIC(9.4,BGPPKG,22,"B",BGPVER,0))
  1. S BGPPTCH=$O(^DIC(9.4,BGPPKG,22,BGPVERI,"PAH","B",""),-1)
  1. I ($E(BGPVER,1,2)_BGPPTCH)=BGPVERIN D Q
  1. . S ^BGPTMP($J,BGPI)=1_$C(30)
  1. . S ^BGPTMP($J,BGPI+1)=$C(31)
  1. ;S ^BGPTMP($J,BGPI)=0_$C(30) ;remove the line below when done with testing and uncomment this one
  1. S ^BGPTMP($J,BGPI)=1_$C(30)
  1. S ^BGPTMP($J,BGPI+1)=$C(31)
  1. Q
  1. ;
  1. DEMOCHK(RETVAL) ;-- check to see if the demo template exists
  1. N BGPI,BGPMSG
  1. S BGPI=0
  1. S RETVAL="^BGPTMP("_$J_")"
  1. K ^BGPTMP($J)
  1. S @RETVAL@(BGPI)="T00080Message"_$C(30)
  1. S BGPMSG=$$CHKDST^BGP4UTL2()
  1. I +$G(BGPMSG) D Q
  1. . S BGPI=BGPI+1
  1. . ;S @RETVAL@(BGPI)=$C(30)
  1. . S @RETVAL@(BGPI+1)=$C(31)
  1. S BGPMSG=$P(BGPMSG,U,2)
  1. S BGPI=BGPI+1
  1. S @RETVAL@(BGPI)=BGPMSG_$C(30)
  1. S @RETVAL@(BGPI+1)=$C(31)
  1. Q
  1. ;
  1. COMCHK(BGPRET,BGPSTR) ;EP
  1. S X="MERR^BGPGU",@^%ZOSF("TRAP") ; m error trap
  1. N P,BGPOPT,BGPI,T
  1. S P="|"
  1. S BGPI=0
  1. K ^BGPTMP($J)
  1. S BGPRET="^BGPTMP("_$J_")"
  1. S ^BGPTMP($J,BGPI)="T00200COMMUNITIES"_$C(30)
  1. S BGPI=0
  1. S T=$P(BGPSTR,P)
  1. K BGPC
  1. I '$G(T) Q 0
  1. I '$D(^ATXAX(T)) Q 0
  1. S X=0,G=0
  1. F S X=$O(^ATXAX(T,21,X)) Q:'X D
  1. .S C=$P(^ATXAX(T,21,X,0),U)
  1. .S BGPI=BGPI+1
  1. .I '$D(^AUTTCOM("B",C)) S ^BGPTMP($J,BGPI)="Warning "_C_" is in the taxonomy but not in the standard community table."_$C(30)
  1. S ^BGPTMP($J,BGPI+1)=$C(31)
  1. Q
  1. ;
  1. LOGPAT(RETVAL,BGPSTR) ;-- log sensitive patient information
  1. S X="MERR^BGPGU",@^%ZOSF("TRAP") ; m error trap
  1. N BGPI,BGPERRR,BGPPAT,P,BGPFLAG,BGPDGMSG,BGPDGDA,RESULT
  1. S P="|"
  1. K ^BGPTMP($J)
  1. S RETVAL="^BGPTMP("_$J_")"
  1. S BGPI=0
  1. S BGPPAT=$P(BGPSTR,P)
  1. D DGSEC(.RESULT,BGPPAT,DUZ,0) ;cmi/maw 3/4/2010 logging takes place in NOTICE^DGSEC4
  1. I $G(RESULT(1))=4 S BGPFLAG=1
  1. I $G(RESULT(1))=3 S BGPFLAG=1
  1. I '$G(BGPFLAG),$G(RESULT(1))'=0 D NOTICE^DGSEC4(.RESULT,BGPPAT,"BGPGRPC^Behavioral Health GUI",3)
  1. I $G(RESULT(1))=0,$$GET1^DIQ(43,1,9999999.01)="YES" D ;ihs/cmi/maw 12/6/2010 added for track all
  1. . D NOTICE^DGSEC4(.RESULT,BGPPAT,"BGPGRPC^Behavioral Health GUI",$S($P($G(^DGSL(38.1,BGPPAT,0)),U,2):3,1:1))
  1. S @RETVAL@(BGPI)="T00001Return"_$C(30)
  1. S BGPI=BGPI+1
  1. S @RETVAL@(BGPI)=$G(RESULT)_$C(30)
  1. S @RETVAL@(BGPI+1)=$C(31)
  1. Q
  1. ;
  1. DGSEC(RESULT,DFN,DUZ,DGMSG) ;EP -- mock the dgsec call but dont log, couldnt find a way to call PTSEC^DGSEC4 without logging
  1. S DGMSG=$G(DGMSG,1)
  1. I $$STATUS^BDGSPT2(DUZ,DFN,1)["RESTRICTED ACCESS" D Q
  1. .S RESULT(1)=5 Q:DGMSG'=1
  1. .S RESULT(2)="Sorry, you are restricted from accessing this patient's record."
  1. .S RESULT(3)="If you have questions, please contact your HIM department."
  1. D OWNREC^DGSEC4(.RESULT,DFN,$G(DUZ),DGMSG)
  1. I RESULT(1)=1 S RESULT(1)=3 Q
  1. I RESULT(1)=2 S RESULT(1)=4 Q
  1. K RESULT
  1. D SENS^DGSEC4(.RESULT,DFN,$G(DUZ))
  1. Q
  1. ;