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

APCHS1.m

Go to the documentation of this file.
  1. APCHS1 ; IHS/CMI/LAB - PART 1 OF APCHS -- SUMMARY PRODUCTION COMPONENTS ;
  1. ;;2.0;IHS PCC SUITE;**2,5,10,11**;MAY 14, 2009;Build 58
  1. ;CMI/TUCSON/LAB - patch 2 fix age display
  1. ;IHS/CMI/LAB - patch 11, added check for LR nodes to prevent undef
  1. ; patch 11, added Notice of Privacy Act data per Shirley Lujan email
  1. ;IHS/CMI/LAB - patch 12 added chronic pain registry data per ANMC
  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",APCHSEX="U":"UNKNOWN",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(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(^("VET"),U)="Y" D VSTAT
  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 APCHSNL=$P($G(^APCHSITE(DUZ(2),0)),U,4)
  1. S APCHSFLD=$P($G(^APCHSITE(DUZ(2),0)),U,5)
  1. I 'APCHSNL S APCHSNL=2
  1. I APCHSFLD="" S APCHSFLD="F"
  1. K APCHSRE1
  1. S C=0,APCHTCNT=0
  1. S X=0 F S X=$O(^AUPNPAT(APCHSPAT,13,X)) Q:X'=+X S APCHTCNT=APCHTCNT+1
  1. I APCHSFLD="F" S X=0 F S X=$O(^AUPNPAT(APCHSPAT,13,X)) Q:X'=+X!(C=APCHSNL) S C=C+1,APCHSRE1(C)=^AUPNPAT(APCHSPAT,13,X,0)
  1. I APCHSFLD="L" S X=9999999 F S X=$O(^AUPNPAT(APCHSPAT,13,X),-1) Q:X<1!(C=APCHSNL) S C=C+1,APCHSRE1(99999-C)=^AUPNPAT(APCHSPAT,13,X,0)
  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=^(.11) F E=1:1:6 S APCHSP=$P(APCHSN,U,E) I APCHSP]"" S:E=5 APCHSP=$P($G(^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. G DEMDSP
  1. VSTAT S APCHSVST="VETERAN"
  1. I $D(^DPT(APCHSPAT,.3))#2,$P(^(.3),U)="Y" S APCHSVST="SERVICE-CONNECTED "_APCHSVST
  1. S APCHSN=$G(^DPT(APCHSPAT,.32))
  1. I $P(APCHSN,U,5) S APCHSVST=APCHSVST_" "_$P(^DIC(23,$P(APCHSN,U,5),0),U,2)
  1. S Y=$P(APCHSN,U,6) I Y D VSDT S APCHSVST=APCHSVST_" ("_Y_"-" S Y=$P(APCHSN,U,7) S:'Y APCHSVST=APCHSVST_"?)" I Y D VSDT S APCHSVST=APCHSVST_Y_")"
  1. I $D(^DPT(APCHSPAT,.31))#2 S APCHSN=^(.31) S Y=$P(APCHSN,U,3) I Y S APCHSVST=APCHSVST_" CLAIM# "_Y
  1. Q
  1. VSDT S Y=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_(1700+$E(Y,1,3))
  1. Q
  1. DEMDSP ; <DISPLAY>
  1. X APCHSBRK
  1. I $$DOD^AUPNPAT(APCHSPAT)]""!($$VAL^XBDIQ1(9000001,APCHSPAT,1114)]"") D
  1. .W "*** DOD: ",$$VAL^XBDIQ1(2,APCHSPAT,.351),!
  1. .W "*** CAUSE OF DEATH: " I $$VAL^XBDIQ1(9000001,APCHSPAT,1114)]"" D I 1
  1. ..W $$VAL^XBDIQ1(9000001,APCHSPAT,1114)
  1. ..K APCHSDSC
  1. ..S APCHSDSC=$$ICDD^AUPNVUTL($$VAL^XBDIQ1(9000001,APCHSPAT,1114),"APCHSDSC",$$DOD^AUPNPAT(APCHSPAT)) I $P(APCHSDSC,U)=-1 S APCHSDSC(1)=$P($$ICDDX^ICDEX($P(^AUPNPAT(APCHSPAT,11),U,14),$$DOD^AUPNPAT(APCHSPAT)),U,4)
  1. ..K ^UTILITY($J,"W")
  1. ..S APCHSX=0
  1. ..S DIWL=0,DIWR=45 F S APCHSX=$O(APCHSDSC(APCHSX)) Q:APCHSX'=+APCHSX!($D(APCHSQIT)) D
  1. ...S X=APCHSDSC(APCHSX)
  1. ...Q:X="CODE TEXT MAY BE INACCURATE"
  1. ...Q:X=" "
  1. ...D ^DIWP
  1. ..S APCHSZ=0 F S APCHSZ=$O(^UTILITY($J,"W",DIWL,APCHSZ)) Q:APCHSZ'=+APCHSZ D
  1. ...X APCHSCKP Q:$D(APCHSQIT)
  1. ...W ?28,^UTILITY($J,"W",DIWL,APCHSZ,0),!
  1. .E W !!
  1. .;W !
  1. K ^UTILITY($J,"W"),APCHSDSC,DIWL,APCHSX,APCHSZ,DIWL,DIWR
  1. Q:$D(APCHSQIT)
  1. W APCHSNAM
  1. W:APCHSDOB]"" ?34,"DOB: ",APCHSDOB,?51,$$AGE(APCHSPAT,DT,"R")
  1. W:APCHSEX]"" ?59,APCHSEX
  1. ; start - vjm 9/20/2001 - to accomodate the display of ABO/Rh
  1. ;W:APCHSBT]"" ?67,APCHSBT
  1. ;W !
  1. D
  1. . I APCHSBT["/" W !,?34,APCHSBT,! Q
  1. . W:APCHSBT]"" ?67,APCHSBT,!
  1. . Q
  1. ; end - vjm 9/20/2001
  1. I APCHSTR]""!(APCHSMNM]"") W:APCHSTR]"" $E(APCHSTR,1,33) W:APCHSSN]"" ?34,"SSN: ",APCHSSN W !
  1. W:APCHSMNM]"" ?34,"MOTHER'S MAIDEN NAME: ",APCHSMNM W !
  1. W APCHSHPH,APCHSOPH W:APCHSFNM]"" ?34,"FATHER'S NAME: ",APCHSFNM W !
  1. S APCHPLNG=$$PREFLANG^APCLAPI7(APCHSPAT,DT,"E")
  1. D
  1. .I APCHOTPH]"" W "OTHER PHONE: ",APCHOTPH
  1. .I APCHPLNG]"" W ?34,"PREFERRED LANGUAGE: ",APCHPLNG
  1. .I APCHOTPH]""!(APCHPLNG)]"" W !
  1. I APCHSCMR]"" W APCHSCMR,!!
  1. I APCHSLUD]""!(APCHSEL]"") W:APCHSLUD]"" "LAST UPDATED: ",APCHSLUD," " W:APCHSEL]"" ?34,"ELIGIBILITY: ",APCHSEL W !
  1. W:APCHSVST]"" APCHSVST,!
  1. ;IHS/CMI/LAB - patch 11 added Notice of Privacy act display
  1. S APCHSNPP=$G(^AUPNNPP(APCHSPAT,0))
  1. W !,"NOTICE OF PRIVACY PRACTICES REC'D BY PATIENT? ",$$VAL^XBDIQ1(9000038,APCHSPAT,.02)
  1. W !," DATE RECEIVED BY PATIENT: ",$$FMTE^XLFDT($P(APCHSNPP,U,3))
  1. W !," WAS ACKNOWLEDGEMENT SIGNED? ",$$VAL^XBDIQ1(9000038,APCHSPAT,.04)
  1. I $P(APCHSNPP,U,5)]"" D
  1. .W !," REASON: ",$P(APCHSNPP,U,5)
  1. W !
  1. K APCHSNPP
  1. W !
  1. I $D(^AUPNPAT(APCHSPAT,41)) W "HEALTH RECORD NUMBERS:" F APCHSFP=0:0 S APCHSFP=$O(^AUPNPAT(APCHSPAT,41,APCHSFP)) Q:'APCHSFP S APCHSHRN=$P(^(APCHSFP,0),U,2),APCHSFAC=$P(^DIC(4,APCHSFP,0),U,1) W ?24,$E(1000000+APCHSHRN,2,7)," ",APCHSFAC,!
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. I $O(^BDPRECN("C",APCHSPAT,0)) D BDPDISP G REM
  1. W "DESIGNATED PRIMARY CARE PROVIDER: ",APCHSPP,!
  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" W ?(38-$L(A)),A,": "_$$VAL^XBDIQ1(9002086,APCHSPAT,.25),!
  1. I $P($G(^AUPNPAT(APCHSPAT,17)),U,1) S A="PRIMARY MENTAL HEALTH PROVIDER" W ?(38-$L(A)),A,": ",$E($$VAL^XBDIQ1(9000001,APCHSPAT,1701),1,22),!
  1. I $P($G(^AUPNPAT(APCHSPAT,17)),U,4) S A="SECONDARY MENTAL HEALTH PROVIDER" W ?(38-$L(A)),A,": ",$$VAL^XBDIQ1(9000001,APCHSPAT,1704),!
  1. ;I APCHSRE1]"" W "REMARKS:",?9,APCHSRE1,! W:APCHSRE2]"" ?9,APCHSRE2,!
  1. I $D(APCHSRE1) W "REMARKS:",! D
  1. .S APCHSX=0 F S APCHSX=$O(APCHSRE1(APCHSX)) Q:APCHSX=""!($D(APCHSQIT)) D
  1. ..X APCHSCKP Q:$D(APCHSQIT)
  1. ..W ?1,APCHSRE1(APCHSX),!
  1. I APCHSNL<APCHTCNT W ?1,"[more]",!
  1. I $D(^BCPP(APCHSPAT)) D ;IHS/ANMC/LAB
  1. .S X="BCPAPI" X ^%ZOSF("TEST") I '$T Q
  1. .W !,"CHRONIC PAIN REGISTRY STATUS: ",$$VAL^XBDIQ1(90246,APCHSPAT,.02) ;IHS/ANMC/LAB - added for chronic pain registry
  1. .D ACTAGR^BCPAPI(.APCHAG,APCHSPAT,1) W ?45,$S(APCHAG:"Opioid Agreement",1:"No Opioid Agreement"),! ;IHS/ANMC/LAB
  1. I $P($G(^AUPNPAT(APCHSPAT,40)),U,2)]"" W !,"Preferred Method of Receiving Reminders: ",$$VAL^XBDIQ1(9000001,APCHSPAT,4002),!
  1. D DSPCMSRG
  1. ; CIA/PLS - 11/24/04 - WiseWoman Modification per Mike Mosley
  1. ;D WWDSPL(APCHSPAT) ; WW modification per Mike Mosley
  1. ; <CLEANUP>
  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. K APCHSX,APCHSRE1,APCHSNL,APCHSFLD
  1. Q
  1. DSPCMSRG ; DISPLAY MEMBERSHIP IN CMS REGISTER
  1. D DSPCMSRG^APCHS
  1. Q
  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. ;end Y2K
  1. ;
  1. BDPDISP ;EP - display providers from desg prov package
  1. W ?30,"DESIGNATED PROVIDERS",!
  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:A="DESIGNATED PRIMARY PROVIDER" A="DESIGNATED PRIMARY CARE PROVIDER" W ?(38-$L(A)),A,": "_$$VAL^XBDIQ1(90360.1,APCHSX,.03),!
  1. .Q
  1. Q
  1. WWDSPL(DFN) ;
  1. N AGE,STAT,SDATE,WW
  1. Q:$E(APCHSEX,1)'="F" "" ; Must be a female patient
  1. S STAT="",SDATE=0
  1. S WW=$$WWENPROC(DFN)
  1. I WW D
  1. .S STAT="ENROLLED",SDATE=WW
  1. E D
  1. .S STAT=$$GET1^DIQ(9000001,DFN,1709)
  1. .I $L(STAT) D
  1. ..S SDATE=$$GET1^DIQ(9000001,DFN,1710,"I")
  1. .E D
  1. ..S AGE=$$AGE^AUPNPAT(DFN)
  1. ..S:AGE>29&(AGE<65) STAT="UNKNOWN"
  1. I $L(STAT) D
  1. .W !,"WW Status: ",STAT W:SDATE ?30,"WW Update Date: ",$$FMTE^XLFDT(SDATE)
  1. .W !!
  1. Q
  1. ; Return date of WW Enrollment Procedure or Zero
  1. WWENPROC(DFN) ;
  1. N IEN,PDT
  1. S PDT=0
  1. Q:'$G(DFN) PDT
  1. S (IEN,PDT)=0 F S IEN=$O(^BWPCD("C",DFN,IEN)) Q:'IEN D
  1. .I $$GET1^DIQ(9002086.1,IEN,4.01,"I")=1 D
  1. ..S PDT=+$$GET1^DIQ(9002086.1,IEN,4.02,"I")
  1. Q PDT
  1. SSN(P) ;EP
  1. I '$G(P) Q ""
  1. I '$D(^DPT(P,0)) Q ""
  1. Q $S($L($P(^DPT(P,0),U,9))=9:$J("XXX-XX-"_$E($P(^DPT(P,0),U,9),6,9),11),1:$J($P(^DPT(P,0),U,9),11))