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

AMHGU.m

Go to the documentation of this file.
  1. AMHGU ; IHS/CMI/MAW - AMH Behavioral Health GUI Utilities 9/8/2008 2:00:25 PM ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;**1**;JUN 18, 2010;Build 8
  1. ;
  1. ;
  1. DEBUG(RETVAL,AMHSTR) ;replace tag below to allow Serenji debug of GUI
  1. D DEBUG^%Serenji("GETPAT^AMHGU(.RETVAL,.AMHSTR)")
  1. Q
  1. ;
  1. ADO ;EP -- setup the ADO string for each call
  1. S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
  1. K ^AMHTMP($J)
  1. S RETVAL="^AMHTMP("_$J_")"
  1. Q
  1. ;
  1. CATSTR(AMHSRET,STR) ;EP -- concatenate a long string in
  1. N AMHDA
  1. S AMHSRET=""
  1. S AMHDA=0 F S AMHDA=$O(STR(AMHDA)) Q:'AMHDA D
  1. . S AMHSRET=AMHSRET_$G(STR(AMHDA))
  1. Q
  1. ;
  1. ARRAY(AMHRET,STR) ;EP -- turn a string from .Net into an array
  1. N A
  1. S A="*"
  1. N I,AMHCNT
  1. S AMHCNT=0
  1. F I=1:1 D Q:$P(STR,A,I)=""
  1. . Q:$P(STR,A,I)=""
  1. . S AMHCNT=AMHCNT+1
  1. . S AMHRET(AMHCNT)=$TR($P(STR,A,I),"^"," ")
  1. I $G(AMHRET(1))="" S AMHRET=""
  1. Q
  1. ;
  1. ARRAYD(AMHRET,STR,DNUM) ;EP -- turn a string from .Net into an array
  1. N A
  1. S A="*"
  1. N I,AMHCNT
  1. S AMHCNT=0
  1. F I=1:1 D Q:$P(STR,A,I)=""
  1. . Q:$P(STR,A,I)=""
  1. . ;S AMHCNT=AMHCNT+1
  1. . S AMHRET(DNUM)=$TR($P(STR,A,I),"^"," ")
  1. I $G(AMHRET(1))="" S AMHRET=""
  1. Q
  1. ;
  1. ARRAYTO(AMHRET,STR) ;EP -- break a long wp field into pieces for filing into a WP field
  1. K AMHRET
  1. N I,LN,CN,SCN,TCN,ST
  1. S CN=0
  1. S SCN=1
  1. S TCN=0
  1. S ST=1
  1. S STR=$TR(STR,"^"," ")
  1. S LN=$L(STR)
  1. I STR[$C(10) D Q
  1. . S LN=$L(STR,$C(10))
  1. . F I=1:1 D Q:(CN+1)>LN ;Q:$P(STR,$C(10),I)=""
  1. .. ;Q:$P(STR,$C(10),I)=""
  1. .. Q:(CN+1)>LN
  1. .. N CH
  1. .. S CH=$P(STR,$C(10),I)
  1. .. S CN=CN+1
  1. .. S AMHRET(SCN)=CH_$C(10)
  1. .. S SCN=SCN+1
  1. F I=1:1 D Q:I>LN
  1. . N CH
  1. . S CH=$E(STR,I,I)
  1. . S CN=CN+1
  1. . S TCN=TCN+1
  1. . I TCN>65,CH=" " D
  1. .. S AMHRET(SCN)=$E(STR,ST,CN)
  1. .. S ST=CN+1
  1. .. S SCN=SCN+1
  1. .. S TCN=0
  1. S AMHRET(SCN)=$E(STR,ST,CN)
  1. Q
  1. ;
  1. ARRAYT(AMHRET,STR) ;EP -- break a long wp field into pieces for filing into a WP field
  1. K AMHRET
  1. N I,CN,SCN,TCN,ST
  1. N LN
  1. S CN=0
  1. S SCN=1
  1. S TCN=0
  1. S ST=1
  1. S STR=$TR(STR,"^"," ")
  1. S LN=$L(STR)
  1. I LN=0 S AMHRET="" Q ;4.0p1 so multiple doesnt get created
  1. F I=1:1:LN D Q:I>LN
  1. . N CHAR
  1. . S CHAR=$E(STR,I,I)
  1. . S CN=CN+1
  1. . S TCN=TCN+1
  1. . I CHAR=$C(10) D Q
  1. .. S AMHRET(SCN)=$E(STR,ST,CN) ;_$C(10)
  1. .. S ST=CN+1
  1. .. S SCN=SCN+1
  1. .. S TCN=0
  1. . I TCN>65,CHAR=" " D Q
  1. .. S AMHRET(SCN)=$E(STR,ST,CN)
  1. .. S ST=CN+1
  1. .. S SCN=SCN+1
  1. .. S TCN=0
  1. I $E(STR,ST,CN)'="" S AMHRET(SCN)=$E(STR,ST,CN)
  1. I $G(AMHRET(SCN))="" K AMHRET(SCN)
  1. Q
  1. ;
  1. MERR ; MUMPS ERROR TRAP
  1. N AMHX
  1. X ("S AMHX=$"_"ZE")
  1. S AMHX="MUMPS error: """_AMHX_""""
  1. D ^%ZTER
  1. D ERR(AMHX)
  1. Q
  1. ;
  1. ERR(ERR) ; BMX ADO SCHEMA ERROR PROCESSOR
  1. N AMHXA
  1. S AMHXA="M ERROR|"_ERR_$C(30)
  1. S @RETVAL@(1)=AMHXA
  1. Q
  1. ;
  1. KEYS(RETVAL,AMHSTR) ;EP -- return keys for user
  1. S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
  1. N AMHDA,AMHNS,P,AMHDATA,AMHKEYI,AMHKEY,AMHI
  1. S AMHI=0
  1. K ^AMHTMP($J)
  1. S RETVAL="^AMHTMP("_$J_")"
  1. S ^AMHTMP($J,AMHI)="T00030KEYS"_$C(30)
  1. S P="|"
  1. S AMHNS=$P(AMHSTR,P)
  1. S AMHDA=0 F S AMHDA=$O(^VA(200,DUZ,51,AMHDA)) Q:'AMHDA D
  1. . S AMHDATA=$G(^VA(200,DUZ,51,AMHDA,0))
  1. . S AMHKEYI=$P(AMHDATA,U)
  1. . S AMHKEY=$P($G(^DIC(19.1,AMHKEYI,0)),U)
  1. . I AMHNS'="*" Q:$E(AMHKEY,1,$L(AMHNS))'[AMHNS
  1. . S AMHI=AMHI+1
  1. . S ^AMHTMP($J,AMHI)=AMHKEY_$C(30)
  1. S ^AMHTMP($J,AMHI+1)=$C(31)
  1. Q
  1. ;
  1. LVDT(PDT) ;EP - return date for list view format
  1. I PDT="" Q ""
  1. Q $E(PDT,4,5)_"/"_$E(PDT,6,7)_"/"_($E(PDT,1,3)+1700)
  1. ;
  1. TIME(TM) ;EP -- return time in .Net format
  1. N DOTNETTM
  1. S DOTNETTM=$S(($E(TM,1,2)>12):$E(TM,1,2)_":"_$E(TM,3,4)_" PM",1:$E(TM,1,2)_":"_$E(TM,3,4)_" AM")
  1. Q $G(DOTNETTM)
  1. RC(RETVAL,AMHSTR) ;EP -- return record counts for a file for the BH GUI Search Form (frmSearchSingle, frmSearchMultiple)
  1. N AMHGB
  1. S AMHGB=$G(^DIC(AMHSTR,0,"GL"))_"0)"
  1. I AMHGB'[U S RETVAL=0
  1. S RETVAL=$P($G(@AMHGB),U,4)
  1. I RETVAL="" S RETVAL=0
  1. Q
  1. ;
  1. MRUP(RETVAL,AMHSTR) ;EP -- retrieve data from AMHG MOST RECENTLY SELECTED PATIENT file
  1. S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
  1. N AMHI,AMHERRR,P,AMHIEN,AMHFL,AMHFIEN,AMHTXT,AMHDT,P
  1. S P="|"
  1. K ^AMHTMP($J)
  1. S RETVAL="^AMHTMP("_$J_")"
  1. S AMHI=0
  1. S AMHIEN=$P(AMHSTR,P)
  1. S AMHFL=$P(AMHSTR,P,2)
  1. S AMHDT=$P(AMHSTR,P,4)
  1. S @RETVAL@(AMHI)="T00010BMXIEN^T00030Value1^T00050Value2"_$C(30)
  1. I $G(AMHFL)=9002012.2 D POV^AMHGUA(RETVAL,AMHIEN,AMHDT) Q
  1. I '$O(^AMHGMRUP("B",AMHIEN,0)) D Q
  1. . S @RETVAL@(AMHI+1)=$C(31)
  1. I '$D(^AMHGMRUP(AMHIEN,1,AMHFL)) D Q
  1. . S @RETVAL@(AMHI+1)=$C(31)
  1. N AMHDA
  1. S AMHDA=0 F S AMHDA=$O(^AMHGMRUP(AMHIEN,1,AMHFL,1,AMHDA)) Q:'AMHDA D
  1. . I $G(AMHFL)=9002012.2,'$$CHKD^AMHUTIL1(AMHDA,AMHDT) Q
  1. . I $G(AMHFL)=81,'$$CHKCPT^AMHUTIL1(AMHDA,AMHDT) Q
  1. . I $G(AMHFL)=9999999.09 Q:$$ACT(AMHFL,AMHDA,.03) ;ihs/cmi/maw 12/21/2010 v4.0p1 check inactivity
  1. . I $G(AMHFL)=9999999.64 Q:$$ACT(AMHFL,AMHDA,.13) ;ihs/cmi/maw 12/21/2010 v4.0p1 check inactivity
  1. . N AMHVAL1,AMHVAL2
  1. . S AMHVAL1=$$GET1^DIQ(AMHFL,AMHDA,.01)
  1. . S AMHVAL2=$P($G(^AMHGMRUP(AMHIEN,1,AMHFL,1,AMHDA,0)),U,3)
  1. . S AMHI=AMHI+1
  1. . S @RETVAL@(AMHI)=AMHDA_U_AMHVAL1_U_AMHVAL2_$C(30)
  1. S @RETVAL@(AMHI+1)=$C(31)
  1. Q
  1. ;
  1. MRUU(RETVAL,AMHSTR) ;EP -- retrieve data from AMHG MOST RECENTLY SELECTED USER file
  1. S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
  1. N AMHI,AMHERRR,P,AMHIEN,AMHFL,AMHFIEN,AMHTXT,AMHDT,P
  1. S P="|"
  1. K ^AMHTMP($J)
  1. S RETVAL="^AMHTMP("_$J_")"
  1. S AMHI=0
  1. S AMHIEN=$P(AMHSTR,P)
  1. S AMHFL=$P(AMHSTR,P,2)
  1. S AMHDT=$P(AMHSTR,P,4)
  1. S @RETVAL@(AMHI)="T00010BMXIEN^T00030Value1^T00050Value2"_$C(30)
  1. I '$O(^AMHGMRUU("B",AMHIEN,0)) D Q
  1. . S @RETVAL@(AMHI+1)=$C(31)
  1. I '$D(^AMHGMRUU(AMHIEN,1,AMHFL)) D Q
  1. . S @RETVAL@(AMHI+1)=$C(31)
  1. N AMHDA
  1. S AMHDA=0 F S AMHDA=$O(^AMHGMRUU(AMHIEN,1,AMHFL,1,AMHDA)) Q:'AMHDA D
  1. . I $G(AMHFL)=9002012.2,'$$CHKD^AMHUTIL1(AMHDA,AMHDT) Q
  1. . I $G(AMHFL)=81,'$$CHKCPT^AMHUTIL1(AMHDA,AMHDT) Q
  1. . I $G(AMHFL)=9999999.09 Q:$$ACT(AMHFL,AMHDA,.03) ;ihs/cmi/maw 12/21/2010 v4.0p1 check inactivity
  1. . I $G(AMHFL)=9999999.64 Q:$$ACT(AMHFL,AMHDA,.13) ;ihs/cmi/maw 12/21/2010 v4.0p1 check inactivity
  1. . N AMHVAL1,AMHVAL2
  1. . S AMHVAL1=$$GET1^DIQ(AMHFL,AMHDA,.01)
  1. . S AMHVAL2=$P($G(^AMHGMRUU(AMHIEN,1,AMHFL,1,AMHDA,0)),U,3)
  1. . S AMHI=AMHI+1
  1. . S @RETVAL@(AMHI)=AMHDA_U_AMHVAL1_U_AMHVAL2_$C(30)
  1. S @RETVAL@(AMHI+1)=$C(31)
  1. Q
  1. ;
  1. ACT(FL,ADA,FLD) ;-- check to see if the entry is inactive
  1. I $$GET1^DIQ(FL,ADA,FLD,"I") Q 1
  1. Q 0
  1. ;
  1. SITE(RETVAL,AMHSTR) ;EP -- get site parameters
  1. S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
  1. N AMHI,AMHERRR,P,AMHIEN,R
  1. S P="|",R="~"
  1. K ^AMHTMP($J)
  1. S RETVAL="^AMHTMP("_$J_")"
  1. S AMHI=0
  1. S AMHIEN=$P(AMHSTR,P)
  1. S @RETVAL@(AMHI)="T00010BMXIEN^T00030TypeofVisit^T00030TypeofHS^T00030DefMHLoc^T00030DefMHComm^T00030DefMHClinic^T00030DefTypeofContact^T00001AskInterpreter^T00001AllowPCCPrbUp^T00030DefSSLoc^T00030DefSSComm^T00030DefSSClinic^T00030DefCDLoc"
  1. S @RETVAL@(AMHI)=@RETVAL@(AMHI)_"^T00030DefCDComm^T00030DefCDClinic^T00030DefOthLoc^T00030DefOthComm^T00030DefOthClinic^T00030DefEHRComm^T00001InteractivePCCLink^T00030DefAppt^T00005Lockout^T00001DeleteOverride"_$C(30)
  1. N AMHTOVI,AMHTOV,AMHTOVS,AMHHSI,AMHHS,AMHHSS,AMHDMLI,AMHDML,AMHDMLS,AMHDMCI,AMHDMC,AMHDMCS,AMHDTOCI,AMHDTOC,AMHDTOCS,AMHAI,AMHDMCLI,AMHDMCL,AMHDMCLS
  1. N AMHAPC,AMHDSLI,AMHDSL,AMHDSLS,AMHDSCI,AMHDSC,AMHDSCS,AMHDSCLI,AMHDSCL,AMHDSCLS,AMHDDLI,AMHDDL,AMHDDLS,AMHDDCI,AMHDDC,AMHDDCS,AMHDDCLI,AMHDDCL,AMHDDCLS
  1. N AMHDOLI,AMHDOL,AMHDOLS,AMHDOCI,AMHDOC,AMHDOCS,AMHDOCLI,AMHDOCL,AMHDOCLS,AMHDECI,AMHDEC,AMHDECS,AMHIPC,AMHAPPT,AMHLOCK,AMHDEL
  1. S AMHTOVI=$$GET1^DIQ(9002013,AMHIEN,.02,"I")
  1. S AMHTOV=$$GET1^DIQ(9002013,AMHIEN,.02)
  1. S AMHTOVS=$S(AMHTOVI:AMHTOVI_R_AMHTOV,1:"")
  1. S AMHHSI=$$GET1^DIQ(9002013,AMHIEN,.04,"I")
  1. S AMHHS=$$GET1^DIQ(9002013,AMHIEN,.04)
  1. S AMHHSS=$S(AMHHSI:AMHHSI_R_AMHHS,1:"")
  1. S AMHDMLI=$$GET1^DIQ(9002013,AMHIEN,.05,"I")
  1. S AMHDML=$$GET1^DIQ(9002013,AMHIEN,.05)
  1. S AMHDMLS=$S(AMHDMLI:AMHDMLI_R_AMHDML,1:"")
  1. S AMHDMCI=$$GET1^DIQ(9002013,AMHIEN,.06,"I")
  1. S AMHDMC=$$GET1^DIQ(9002013,AMHIEN,.06)
  1. S AMHDMCS=$S(AMHDMCI:AMHDMCI_R_AMHDMC,1:"")
  1. S AMHDTOCI=$$GET1^DIQ(9002013,AMHIEN,.09,"I")
  1. S AMHDTOC=$$GET1^DIQ(9002013,AMHIEN,.09)
  1. S AMHDTOCS=$S(AMHDTOCI:AMHDTOCI_R_AMHDTOC,1:"")
  1. S AMHAI=$$GET1^DIQ(9002013,AMHIEN,.11,"I")
  1. S AMHDMCLI=$$GET1^DIQ(9002013,AMHIEN,.17,"I")
  1. S AMHDMCL=$$GET1^DIQ(9002013,AMHIEN,.17)
  1. S AMHDMCLS=$S(AMHDMCLI:AMHDMCLI_R_AMHDMCL,1:"")
  1. S AMHAPC=$$GET1^DIQ(9002013,AMHIEN,.18,"I")
  1. S AMHDSLI=$$GET1^DIQ(9002013,AMHIEN,.19,"I")
  1. S AMHDSL=$$GET1^DIQ(9002013,AMHIEN,.19)
  1. S AMHDSLS=$S(AMHDSLI:AMHDSLI_R_AMHDSL,1:"")
  1. S AMHDSCI=$$GET1^DIQ(9002013,AMHIEN,.21,"I")
  1. S AMHDSC=$$GET1^DIQ(9002013,AMHIEN,.21)
  1. S AMHDSCS=$S(AMHDSCI:AMHDSCI_R_AMHDSC,1:"")
  1. S AMHDSCLI=$$GET1^DIQ(9002013,AMHIEN,.22,"I")
  1. S AMHDSCL=$$GET1^DIQ(9002013,AMHIEN,.22)
  1. S AMHDSCLS=$S(AMHDSCLI:AMHDSCLI_R_AMHDSCL,1:"")
  1. S AMHDDLI=$$GET1^DIQ(9002013,AMHIEN,.28,"I")
  1. S AMHDDL=$$GET1^DIQ(9002013,AMHIEN,.28)
  1. S AMHDDLS=$S(AMHDDLI:AMHDDLI_R_AMHDDL,1:"")
  1. S AMHDDCI=$$GET1^DIQ(9002013,AMHIEN,.29,"I")
  1. S AMHDDC=$$GET1^DIQ(9002013,AMHIEN,.29)
  1. S AMHDDCS=$S(AMHDDCI:AMHDDCI_R_AMHDDC,1:"")
  1. S AMHDDCLI=$$GET1^DIQ(9002013,AMHIEN,.31,"I")
  1. S AMHDDCL=$$GET1^DIQ(9002013,AMHIEN,.31)
  1. S AMHDDCLS=$S(AMHDDCLI:AMHDDCLI_R_AMHDDCL,1:"")
  1. S AMHDOLI=$$GET1^DIQ(9002013,AMHIEN,1801,"I")
  1. S AMHDOL=$$GET1^DIQ(9002013,AMHIEN,1801)
  1. S AMHDOLS=$S(AMHDOLI:AMHDOLI_R_AMHDOL,1:"")
  1. S AMHDOCI=$$GET1^DIQ(9002013,AMHIEN,1802,"I")
  1. S AMHDOC=$$GET1^DIQ(9002013,AMHIEN,1802)
  1. S AMHDOCS=$S(AMHDOCI:AMHDOCI_R_AMHDOC,1:"")
  1. S AMHDOCLI=$$GET1^DIQ(9002013,AMHIEN,1803,"I")
  1. S AMHDOCL=$$GET1^DIQ(9002013,AMHIEN,1803)
  1. S AMHDOCLS=$S(AMHDOCLI:AMHDOCLI_R_AMHDOCL,1:"")
  1. S AMHDECI=$$GET1^DIQ(9002013,AMHIEN,1804,"I")
  1. S AMHDEC=$$GET1^DIQ(9002013,AMHIEN,1804)
  1. S AMHDECS=$S(AMHDECI:AMHDECI_R_AMHDEC,1:"")
  1. S AMHIPC=$S($$GET1^DIQ(9002013,AMHIEN,.33,"I"):"1",1:"0")
  1. S AMHAPPT=$$GET1^DIQ(9002013,AMHIEN,.24)
  1. S AMHLOCK=$S($$GET1^DIQ(9002013,AMHIEN,1809):$$GET1^DIQ(9002013,AMHIEN,1809),$$GET1^DIQ(200,DUZ,200.1):$$GET1^DIQ(200,DUZ,200.1),$$GET1^DIQ(8989.3,1,210):$$GET1^DIQ(8989.3,1,210),1:300)
  1. S AMHDEL=$S($O(^AMHSITE(AMHIEN,21,"B",DUZ,0)):1,1:0) ;get delete override boolean
  1. S AMHI=AMHI+1
  1. S @RETVAL@(AMHI)=AMHIEN_U_AMHTOVS_U_AMHHSS_U_AMHDMLS_U_AMHDMCS_U_AMHDMCLS_U_AMHDTOCS_U_AMHAI_U_AMHAPC_U_AMHDSLS_U_AMHDSCS_U_AMHDSCLS_U_AMHDDLS_U_AMHDDCS_U_AMHDDCLS_U_AMHDOLS_U_AMHDOCS_U_AMHDOCLS_U_AMHDECS_U_AMHIPC_U_AMHAPPT_U_AMHLOCK
  1. S @RETVAL@(AMHI)=@RETVAL@(AMHI)_U_AMHDEL_$C(30)
  1. S @RETVAL@(AMHI+1)=$C(31)
  1. Q
  1. ;
  1. TM(TIME) ;EP -- return time in fileman format
  1. I $L(TIME)=4 D
  1. . I $E(TIME,4,4)=0 S TIME=$E(TIME,1,3)
  1. I $L(TIME)=3 D
  1. . I $E(TIME,3,3)=0 S TIME=$E(TIME,1,2)
  1. I $L(TIME)=2 D
  1. . I $E(TIME,2,2)=0 S TIME=$E(TIME,1,1)
  1. Q $G(TIME)
  1. ;
  1. VCDT(VALUE) ;EP -- return date/time into a C# DateTime constructor
  1. N TDT,ETDT,YR,MO,DY,HR,MN,C
  1. S C=","
  1. S TDT=$P(VALUE,".")
  1. S YR=($E(TDT,1,3)+1700)
  1. S MO=$E(TDT,4,5)
  1. S DY=$E(TDT,6,7)
  1. S ETDT=$$FMTE^XLFDT(VALUE)
  1. S TTM=$TR($P(ETDT,"@",2),":")
  1. I $G(TTM) D
  1. . S HR=$E(TTM,1,2)
  1. . S MN=$E(TTM,3,4)
  1. I '$G(TTM) D
  1. . S HR="12"
  1. . S MN="00"
  1. S TM=YR_C_MO_C_DY_C_+$G(HR)_C_+$G(MN)
  1. Q TM
  1. ;
  1. FNDNARR(NARR,FLG) ;EP -- find the provider narrative based on input
  1. S APCDOVRR=1
  1. S X=NARR
  1. S DIC="^AUTNPOV(",DIC(0)="L",DLAYGO=9999999.27 D ^DIC
  1. K DLAYGO
  1. Q $S($G(Y)>0:+Y,1:"")
  1. ;
  1. GETPRV(IEN,PS) ;EP -- get provider based on ien and type for MHSS RECORD
  1. N DA,PRVI
  1. S DA=0 F S DA=$O(^AMHRPROV("AD",IEN,DA)) Q:'DA D
  1. . Q:$P($G(^AMHRPROV(DA,0)),U,4)'=PS
  1. . S PRVI=$P($G(^AMHRPROV(DA,0)),U)
  1. Q $G(PRVI)
  1. ;
  1. FNDPRV(IEN,PS,PIEN) ;EP -- return the ien of the provider entry based upon what is passed in
  1. N DA,PRVI
  1. S DA=0 F S DA=$O(^AMHRPROV("AD",IEN,DA)) Q:'DA D
  1. . Q:$P($G(^AMHRPROV(DA,0)),U,4)'=PS
  1. . I PS="P" D
  1. .. I $P(^AMHRPROV(DA,0),U)'=PIEN D CHNGPP(DA,PIEN)
  1. .. S PRVI=DA
  1. . I PS="S",+$G(^AMHRPROV(DA,0))=PIEN S PRVI=DA
  1. Q $G(PRVI)
  1. ;
  1. CHNGPP(D,PI) ;EP -- change the primary provider
  1. N FDA,FIEN,FERR
  1. S FIEN=D_","
  1. S FDA(9002011.02,FIEN,.01)=PI
  1. D FILE^DIE("K","FDA","FERR(1)")
  1. Q
  1. ;
  1. FNDCPT(IEN,CIEN) ;EP -- return a 1 if cpt already exists
  1. N DA,CPTI,MAT
  1. S MAT=0
  1. S DA=0 F S DA=$O(^AMHRPROC("AD",IEN,DA)) Q:'DA!($G(MAT)) D
  1. . I $P(^AMHRPROC(DA,0),U)=CIEN S MAT=1 Q
  1. Q $G(MAT)
  1. ;
  1. FNDPA(IEN,PIEN) ;EP -- return a 1 if prevention activity already exists
  1. N DA,PTI,MAT
  1. S MAT=0
  1. S DA=0 F S DA=$O(^AMHRPA("AD",IEN,DA)) Q:'DA!($G(MAT)) D
  1. . I $P(^AMHRPA(DA,0),U)=PIEN S MAT=1 Q
  1. Q $G(MAT)
  1. ;
  1. FNDPH(IEN,PIEN) ;EP -- return a 1 if persona; history already exists
  1. N DA,PHI,MAT
  1. S MAT=0
  1. S DA=0 F S DA=$O(^AMHPPHX("AA",IEN,DA)) Q:'DA!($G(MAT)) D
  1. . I DA=PIEN S MAT=1 Q
  1. Q $G(MAT)
  1. ;
  1. FNDEDU(IEN,EIEN) ;EP -- return ien of education topic
  1. N DA,EDUI
  1. S DA=0 F S DA=$O(^AMHREDU("AD",IEN,DA)) Q:'DA!($G(EDUI)) D
  1. . I $P(^AMHREDU(DA,0),U)=EIEN S EDUI=DA Q
  1. Q $G(EDUI)
  1. ;
  1. FNDHF(IEN,HIEN) ;EP -- return ien of health factor
  1. N DA,HFI
  1. S DA=0 F S DA=$O(^AMHRHF("AD",IEN,DA)) Q:'DA!($G(HFI)) D
  1. . I $P(^AMHRHF(DA,0),U)=HIEN S HFI=DA Q
  1. Q $G(HFI)
  1. ;
  1. FNDMSR(IEN,MSRIEN) ;EP -- return ien of measurement
  1. N DA,MSRI
  1. S DA=0 F S DA=$O(^AMHRMSR("AD",IEN,DA)) Q:'DA!($G(MSRI)) D
  1. . I $P(^AMHRMSR(DA,0),U)=MSRIEN S MSRI=DA Q
  1. Q $G(MSRI)
  1. ;
  1. FNDPOV(IEN,R) ;EP -- find POV based on ien of pov and amhrec ptr
  1. N DA,POV
  1. S POV=0
  1. S DA=0 F S DA=$O(^AMHRPRO("AD",R,DA)) Q:'DA!($G(POV)) D
  1. . N AMHPOV
  1. . S AMHPOV=$P($G(^AMHRPRO(DA,0)),U)
  1. . I AMHPOV=IEN S POV=DA Q
  1. Q $G(POV)
  1. ;
  1. PRV(IEN,PRVI) ;EP -- return 1 if the provider was part of the encounter, 0 if not, used to determine records on record selector screen
  1. N DA,PRV
  1. S PRV=0
  1. S DA=0 F S DA=$O(^AMHRPROV("AD",IEN,DA)) Q:'DA D
  1. . I $P($G(^AMHRPROV(DA,0)),U)=PRVI S PRV=1
  1. Q $G(PRV)
  1. ;
  1. PRVG(IEN,PRVI) ;EP -- return 1 if the provider was part of the encounter, 0 if not, used to determine records on record selector screen
  1. N DA,PRV
  1. S PRV=0
  1. S DA=0 F S DA=$O(^AMHGROUP(IEN,11,DA)) Q:'DA D
  1. . I $P($G(^AMHGROUP(IEN,11,DA,0)),U)=PRVI S PRV=1
  1. Q $G(PRV)
  1. ;
  1. GETPRVG(IEN,PS) ;EP -- get the primary provider for the group
  1. N DA,PRV
  1. S PRV=0
  1. S DA=0 F S DA=$O(^AMHGROUP(IEN,11,DA)) Q:'DA D
  1. . I $P($G(^AMHGROUP(IEN,11,DA,0)),U,2)=PS S PRV=$P($G(^AMHGROUP(IEN,11,DA,0)),U)
  1. Q $G(PRV)
  1. ;Q $G(PRV)
  1. ;
  1. WP(AMHERRR,AMHFL,AMHIENS,AMHFLD,AMHWP) ;EP - WP
  1. D WP^DIE(AMHFL,AMHIENS,AMHFLD,,"AMHWP","AMHERRR")
  1. Q
  1. ;
  1. ACTCODE(IEN) ;EP -- return 1 if admin activity code
  1. N CODE
  1. S CODE=$$GET1^DIQ(9002011,IEN,.06)
  1. I CODE=32 Q 1
  1. I (CODE>49)&(CODE<61) Q 1
  1. I CODE=66 Q 1
  1. Q 0
  1. ;
  1. GETREC(PAT,IEN) ;EP -- get the group amhrec entry based on the patient and ien passed in
  1. N DA,RECIEN
  1. S DA=0 F S DA=$O(^AMHGROUP(IEN,61,DA)) Q:'DA D
  1. . N REC
  1. . S REC=$G(^AMHGROUP(IEN,61,DA,0))
  1. . I $P($G(^AMHREC(REC,0)),U,8)=PAT S RECIEN=REC
  1. Q $G(RECIEN)
  1. ;