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

BSDX41A.m

Go to the documentation of this file.
  1. BSDX41A ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ; Support routines for BSDX HEALTH SUMMARY remote procedure
  1. ;
  1. DEMOG ; ******************** DEMOGRAPHICS ********************
  1. ; <SETUP>
  1. S APCHSN=^DPT(APCHSPAT,0)
  1. S APCHSNAM=$P(APCHSN,U,1)
  1. S APCHSEX=$P(APCHSN,U,2),APCHSEX=$S(APCHSEX="M":"MALE",APCHSEX="F":"FEMALE",1:"<no sex>")
  1. S Y=$P(APCHSN,U,3)
  1. I 'Y S APCHSDOB="<NO DATE OF BIRTH>"
  1. E X ^DD("DD") S APCHSDOB=Y
  1. S APCHSSN=$$SSN^APCHS1(APCHSPAT)
  1. ;S APCHSSN=$P(APCHSN,U,9) S:APCHSSN]"" APCHSSN=$E(APCHSSN,1,3)_"-"_$E(APCHSSN,4,5)_"-"_$E(APCHSSN,6,9)
  1. S APCHSN=$G(^DPT(APCHSPAT,.24))
  1. S APCHSMNM=$P(APCHSN,U,3)
  1. S APCHSFNM=$P(APCHSN,U)
  1. S APCHSN=^AUPNPAT(APCHSPAT,0)
  1. S Y=$P(APCHSN,U,3)
  1. I 'Y S APCHSLUD=""
  1. E X ^DD("DD") S APCHSLUD=Y
  1. ;S APCHSBT=$P(APCHSN,U,13) S:APCHSBT="" APCHSBT="no blood type"
  1. ; start - vjm 9/20/01 logic for Blood Bank blood type
  1. ; 1) use BB's ABO/Rh - if it exists
  1. ; 2) use PCC blood type - if it exists
  1. ; 3) otherwise, say 'no blood type'
  1. ;S APCHSBT=$P(APCHSN,U,13) S:APCHSBT="" APCHSBT="no blood type"
  1. D
  1. . Q:'$D(^DPT(APCHSPAT,"LR"))
  1. . S APCHX("LRDFN")=^DPT(APCHSPAT,"LR") ; get pt's LRDFN
  1. . D ; get Blood Bank blood type
  1. .. Q:'$D(APCHX("LRDFN"))
  1. .. Q:APCHX("LRDFN")=""
  1. .. Q:'$D(^LR(APCHX("LRDFN"),0))
  1. .. S APCHX("LR")=^LR(APCHX("LRDFN"),0)
  1. .. S APCHX("ABO")=$P($G(APCHX("LR")),U,5)
  1. .. Q:APCHX("ABO")=""
  1. .. S APCHX("Rh")=$P($G(APCHX("LR")),U,6)
  1. .. Q:APCHX("Rh")=""
  1. .. S APCHX("ABO/Rh")=APCHX("ABO")_"/"_APCHX("Rh")
  1. .. S:$D(APCHX("ABO/Rh")) APCHSBT="ABO/Rh: "_APCHX("ABO/Rh")
  1. .. Q
  1. . Q
  1. I '$D(APCHX("ABO/Rh")) D ; no BB data - data from ^DPT BType
  1. . S APCHSBT=$P(APCHSN,U,13)
  1. . S:APCHSBT="" APCHSBT="no blood type"
  1. . Q
  1. K APCHX ; kill APCHX vars
  1. ; end - vjm 9/20/01
  1. ;S APCHSPP=$P(APCHSN,U,14) S:APCHSPP="" APCHSPP="<none identified>" I +APCHSPP S APCHSPP=$P(^DIC(6,+APCHSPP,0),U,1) I +APCHSPP S APCHSPP=$P(^DIC(16,+APCHSPP,0),U,1) ;*** file 200 conversion ***
  1. S APCHSPP=$P(APCHSN,U,14)
  1. S:APCHSPP=-1 APCHSPP="" ;IHS/ANMC/LJF 8/5/99 prevent UNDEF
  1. S:APCHSPP="" APCHSPP="<none identified>"
  1. I +APCHSPP,$P(^DD(9000001,.14,0),U,2)[200 S APCHSPP=$P(^VA(200,APCHSPP,0),U) ;*** file 200 conversion ***
  1. I +APCHSPP,$P(^DD(9000001,.14,0),U,2)[6 S APCHSPP=$P(^DIC(6,+APCHSPP,0),U,1) I +APCHSPP S APCHSPP=$P(^DIC(16,+APCHSPP,0),U,1)
  1. V ;
  1. S APCHSVST="" I $D(^DPT(APCHSPAT,"VET"))#2,$P(^DPT(APCHSPAT,"VET"),U)="Y" D VSTAT^APCHS1
  1. S APCHSN=$G(^AUPNPAT(APCHSPAT,11))
  1. S APCHSTR=$P(APCHSN,U,8)
  1. I 'APCHSTR S APCHSTR="<no tribe>"
  1. E S APCHSTR=^AUTTTRI(APCHSTR,0) S APCHSTR=$P(APCHSTR,U,1)_$S($P(APCHSTR,U,4)="Y":" <old code>",1:"")
  1. S APCHSEL=$P(APCHSN,U,12)
  1. S X=$P(^DD(9000001,1112,0),U,3) F APCHSI=1:1 S APCHSP=$P(X,";",APCHSI) Q:APCHSP="" I $P(APCHSP,":",1)=APCHSEL S APCHSEL=$P(APCHSP,":",2) Q
  1. S APCHSCMR=$P(APCHSN,U,18) S:APCHSCMR="" APCHSCMR="<NO COMMUNITY OF RESIDENCE>"
  1. S APCHSI=$O(^AUPNPAT(APCHSPAT,13,0)) S APCHSRE1=$S(APCHSI:^(APCHSI,0),1:"") S APCHSI=$O(^AUPNPAT(APCHSPAT,13,APCHSI)) S APCHSRE2=$S(APCHSI:^(APCHSI,0),1:"") S:$O(^AUPNPAT(APCHSPAT,13,APCHSI)) APCHSRE2=APCHSRE2_" [more]"
  1. S APCHSADR=""
  1. I $D(^DPT(APCHSPAT,.11)) S APCHSN=^DPT(APCHSPAT,.11) F E=1:1:6 S APCHSP=$P(APCHSN,U,E) I APCHSP]"" S:E=5 APCHSP=$P(^DIC(5,APCHSP,0),U,2) S APCHSADR=APCHSADR_","_APCHSP
  1. S APCHSADR=$E(APCHSADR,2,255)
  1. S:APCHSADR]"" APCHSCMR=APCHSCMR_" ("_APCHSADR_") "
  1. S APCHSN=$G(^DPT(APCHSPAT,.13))
  1. S APCHSHPH=$P(APCHSN,U,1),APCHSOPH=$P(APCHSN,U,2)
  1. I APCHSHPH="",APCHSOPH="" S APCHSHPH="<no phone numbers recorded>"
  1. S:+APCHSHPH APCHSHPH="(H) "_APCHSHPH
  1. S:APCHSOPH]"" APCHSOPH="(W) "_APCHSOPH S:APCHSHPH]"" APCHSOPH=" "_APCHSOPH
  1. S APCHOTPH=$P($G(^AUPNPAT(APCHSPAT,18)),U,1)
  1. ;demographics output
  1. DEMDSP ; output for demographics taken from APCHS1
  1. I $G(APCHSBRK)]"" X APCHSBRK
  1. I $$DOD^AUPNPAT(APCHSPAT)]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)="*** DOD: "_$$FMTE^XLFDT($$DOD^AUPNPAT(APCHSPAT),"2D")_" ***"_$C(30)
  1. S BSDXTMP=APCHSNAM_$$FILL^BSDX41(34-$L(APCHSNAM)," ")
  1. I APCHSDOB]"" S BSDXTMP=BSDXTMP_"DOB: "_APCHSDOB_" "_$$AGE(APCHSPAT,DT,"R")_" "
  1. I APCHSEX]"" S BSDXTMP=BSDXTMP_APCHSEX_" "
  1. D
  1. . I APCHSBT["/" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_$C(30) S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$$FILL^BSDX41(33)_APCHSBT_$C(30) Q
  1. . I APCHSBT]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_APCHSBT_$C(30)
  1. . Q
  1. I APCHSTR]""!(APCHSMNM]"") S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$S(APCHSTR]"":$E(APCHSTR,1,33),1:"")_$S(APCHSSN]"":$$FILL^BSDX41($S((APCHSTR]"")&(APCHSSN]""):34-$L(APCHSTR),1:34))_"SSN: "_APCHSSN,1:"")_$C(30)
  1. I APCHSMNM]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$$FILL^BSDX41(33)_"MOTHER'S MAIDEN NAME: "_APCHSMNM_$C(30)
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=APCHSHPH_APCHSOPH_$S(APCHSFNM]"":$$FILL^BSDX41(33-($L(APCHSHPH)+$L(APCHSOPH)))_"FATHER'S NAME: "_APCHSFNM,1:"")_$C(30)
  1. I APCHOTPH]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)="OTHER PHONE: "_APCHOTPH_$C(30)
  1. I APCHSCMR]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=APCHSCMR_$C(30) S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$C(30)
  1. I APCHSLUD]""!(APCHSEL]"") D
  1. . I APCHSLUD]"" S BSDXTMP="LAST UPDATED: "_APCHSLUD_" "
  1. . I APCHSEL]"" D
  1. . . S BSDXTMP=BSDXTMP_$$FILL^BSDX41(33-$L("LAST UPDATED: "_APCHSLUD_" "))_"ELIGIBILITY: "_APCHSEL
  1. . S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_$C(30)
  1. I APCHSVST]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=APCHSVST_$C(30)
  1. ;IHS/CMI/LAB - patch 11 added Notice of Privacy act display
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$C(30)
  1. S APCHSNPP=$G(^AUPNNPP(APCHSPAT,0))
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)="NOTICE OF PRIVACY PRACTICES REC'D BY PATIENT? "_$$VAL^XBDIQ1(9000038,APCHSPAT,.02)_$C(30)
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=" DATE RECEIVED BY PATIENT: "_$$FMTE^XLFDT($P(APCHSNPP,U,3))_$C(30)
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=" WAS ACKNOWLEDGEMENT SIGNED? "_$$VAL^XBDIQ1(9000038,APCHSPAT,.04)_$C(30)
  1. I $P(APCHSNPP,U,5)]"" D
  1. .S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=" REASON: "_$P(APCHSNPP,U,5)_$C(30)
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$C(30)
  1. K APCHSNPP
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$C(30)
  1. I $D(^AUPNPAT(APCHSPAT,41)) S LCNT=0 S BSDXTMP="HEALTH RECORD NUMBERS:" F APCHSFP=0:0 S LCNT=LCNT+1 S APCHSFP=$O(^AUPNPAT(APCHSPAT,41,APCHSFP)) Q:'APCHSFP D
  1. . S APCHSHRN=$P(^AUPNPAT(APCHSPAT,41,APCHSFP,0),U,2),APCHSFAC=$P(^DIC(4,APCHSFP,0),U,1)
  1. . S BSDXTMP=BSDXTMP_$S(LCNT=1:" ",1:" ")_$E(1000000+APCHSHRN,2,7)_" "_APCHSFAC
  1. I $G(APCHSKP)]"" X APCHSCKP Q:$D(APCHSQIT) ;SAT What is this.
  1. I $O(^BDPRECN("C",APCHSPAT,0)) D BDPDISP G REM
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_"DESIGNATED PROVIDER: "_APCHSPP_$C(30)
  1. REM ;
  1. ;IHS/ANMC/LAB - added next 3 lines per Mosley 2/12/01
  1. I $P($G(^BWP(APCHSPAT,0)),U,25) S A="WOMEN'S HEALTH DESIGNATED PROVIDER" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$$FILL^BSDX41(38-$L(A))_A_": "_$$VAL^XBDIQ1(9002086,APCHSPAT,.25)_$C(30)
  1. I $P($G(^AUPNPAT(APCHSPAT,17)),U,1) S A="PRIMARY MENTAL HEALTH PROVIDER" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$$FILL^BSDX41(38-$L(A))_A_": "_$E($$VAL^XBDIQ1(9000001,APCHSPAT,1701),1,22)_$C(30)
  1. I $P($G(^AUPNPAT(APCHSPAT,17)),U,4) S A="SECONDARY MENTAL HEALTH PROVIDER" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$$FILL^BSDX41(38-$L(A))_A_": "_$$VAL^XBDIQ1(9000001,APCHSPAT,1704)_$C(30)
  1. I APCHSRE1]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)="REMARKS: "_APCHSRE1_$C(30) I APCHSRE2]"" S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=" "_APCHSRE2_$C(30)
  1. I $D(^BCPP(APCHSPAT)) D ;IHS/ANMC/LAB
  1. .S X="BCPAPI" X ^%ZOSF("TEST") I '$T Q
  1. .S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=$C(30)
  1. .S BSDXTMP="CHRONIC PAIN REGISTRY STATUS: "_$$VAL^XBDIQ1(90246,APCHSPAT,.02) ;IHS/ANMC/LAB - added for chronic pain registry
  1. .D ACTAGR^BCPAPI(.APCHAG,APCHSPAT,1) S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_" "_$S(APCHAG:"Opioid Agreement",1:"No Opioid Agreement")_$C(30)
  1. D DSPCMSRG
  1. DEMOGX K APCHSNAM,APCHSTR,APCHSEX,APCHSDOB,APCHSSN,APCHSMNM,APCHSCMR,APCHSEL,APCHSFP,APCHSFAC,APCHSHRN,APCHSBT,APCHSPP,APCHSADR,APCHSN,APCHSP,APCHSI,APCHSJ,APCHSHPH,APCHSOPH,APCHSVST,APCHSLUD,APCHSRE1,APCHSRE2,E,X,Y
  1. Q
  1. ;
  1. DSPCMSRG ; DISPLAY MEMBERSHIP IN CMS REGISTER
  1. Q:'$D(^ACM(41,"D",APCHSPAT))
  1. S APCHSJ=1
  1. F APCHSI=0:0 S APCHSI=$O(^ACM(41,"AC",APCHSPAT,APCHSI)) Q:'APCHSI I $P(^ACM(41.1,APCHSI,0),U,7) S BSDXTMP=APCHSJ_" ON CMS REGISTER(S): " D
  1. .S APCHSJ=0 S BSDXTMP=BSDXTMP_$P(^ACM(41.1,APCHSI,0),U)
  1. .S APCHSK=^ACM(41,"AC",APCHSPAT,APCHSI) S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=BSDXTMP_" Status: "_$$VAL^XBDIQ1(9002241,APCHSK,1)_$C(30)
  1. Q
  1. ;
  1. AGE(DFN,D,F) ;EP - Given DFN, return Age.
  1. I '$G(DFN) Q -1
  1. I '$D(^DPT(DFN,0)) Q -1
  1. I $$DOB^AUPNPAT(DFN,"")<0 Q -1
  1. S:$G(D)="" D=DT
  1. S:$G(F)="" F="Y"
  1. NEW %
  1. S %=$$FMDIFF^XLFDT(D,$$DOB^AUPNPAT(DFN,""))
  1. S %1=%\365.25
  1. I F="Y" Q %1
  1. ;beginning Y2K fix
  1. ;Q $S(%1>2:%1_" YRS",%<31:%1_" DYS",1:%\30_" MOS") ;Y2000
  1. Q $S(%1>2:%1_" YRS",%<31:%_" DYS",1:%\30_" MOS") ;Y2000
  1. ;
  1. BDPDISP ;EP - display providers from desg prov package
  1. S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)="DESIGNATED PROVIDERS"_$C(30)
  1. S APCHSX=0 F S APCHSX=$O(^BDPRECN("C",APCHSPAT,APCHSX)) Q:APCHSX'=+APCHSX D
  1. .X APCHSCKP Q:$D(APCHSQIT)
  1. .;get category and check health summary status
  1. .S A=$P($G(^BDPRECN(APCHSX,0)),U)
  1. .Q:A=""
  1. .Q:'$D(^BDPTCAT(A,0))
  1. .Q:$P(^BDPTCAT(A,0),U,8)="N"
  1. .S A=$$VAL^XBDIQ1(90360.1,APCHSX,.01) S BSDXI=BSDXI+1 S ^BSDXTMP($J,BSDXI)=A_": "_$$VAL^XBDIQ1(90360.1,APCHSX,.03)_$C(30)
  1. .Q
  1. Q
  1. ;