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

APCDCPOV.m

Go to the documentation of this file.
  1. APCDCPOV ; IHS/CMI/LAB - POV LOOKUP ;
  1. ;;2.0;IHS PCC SUITE;**11,13,16,20**;MAY 14, 2009;Build 25
  1. ;
  1. START ;
  1. D EN^XBNEW("LEX^APCDCPOV","APCDDATE;APCDTCLK;APCDVSIT;APCDTDIA,APCDT90;APCDTIN9")
  1. Q
  1. LEX ;EP - called from input template
  1. I APCDTDIA=".09" S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code)",1:" CAUSE (V00-Y99 Code Range)")
  1. I APCDTDIA=".18" S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code) #2",1:" CAUSE (V00-Y99 Code Range) #2")
  1. I APCDTDIA=".19" S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code) #3",1:" CAUSE (V00-Y99 Code Range) #3")
  1. S APCDTPCC="",APCDINPE=1
  1. ;FOR NOW IF ICD9 CALL LEX, AFTER VA SENDS OUT ICD10 LEX JUST D LEX Q
  1. I $G(APCDTIN9) S APCDD=$$FMADD^XLFDT($$IMP^ICDEX(30),-2),APCDIMP=1 G LEX1
  1. S APCDD=""
  1. I $G(APCDINAD) S APCDD=$S($D(APCDDATE):APCDDATE,1:DT) G I
  1. I $G(APCDVSIT),$D(^AUPNVSIT(APCDVSIT)) D
  1. .I $P(^AUPNVSIT(APCDVSIT,0),U,7)="H",$$DSCHDATE^APCLV(APCDVSIT)]"" S APCDD=$$DSCHDATE^APCLV(APCDVSIT) Q
  1. .S APCDD=$P($P(^AUPNVSIT(APCDVSIT,0),U),".")
  1. I APCDD="" S APCDD=$P($G(APCDDATE),".")
  1. I APCDD="" S APCDD=DT
  1. NEW APCDIMP,APCDANS
  1. I ;
  1. S APCDIMP=$$IMP^AUPNSICD(APCDD)
  1. ;EP - called from input template
  1. LEX1 ;reader call to get TEXT for code
  1. K DIR
  1. K ^TMP("LEXSCH",$J)
  1. I APCDIMP=1 D CONFIG^LEXSET("ICD","ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D CONFIG^LEXSET("10D","10D",$P(APCDD,"."))
  1. S DIR(0)="FO^1:60",DIR("A")=$S($G(APCDTDIA)]"":APCDTDIA,1:"Enter PURPOSE OF VISIT")
  1. S DIR("?")=$S($G(APCDTIN9):"^D HELPE9^AUPNSIC9",1:"^D HELPE^AUPNSICH")
  1. S DIR("??")=$S($G(APCDTIN9):"^D HELPE9^AUPNSIC9",1:"^D HELPE^AUPNSICH")
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S APCDTSKI=1,APCDLOOK="" G XITL
  1. I Y="" S APCDTSKI=1,APCDLOOK="" G XITL
  1. S APCDUINP=Y
  1. K ^TMP("LEXSCH",$J),^TMP("LEXHIT",$J),LEX,^TMP("LEXFND",$J)
  1. I APCDIMP=1 D CONFIG^LEXSET("ICD","ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D CONFIG^LEXSET("10D","10D",$P(APCDD,"."))
  1. S X=APCDUINP
  1. I APCDIMP=1 S DIC("S")=$S('$G(APCDTIN9):"I $$ICDONE9^APCDCPOV(+Y,LEXVDT)",1:"I $$ICDONE99^APCDCPOV(+Y,LEXVDT)")
  1. I APCDIMP=30 S DIC("S")="I $$ICDONE1^APCDCPOV(+Y,LEXVDT)"
  1. S DIC("A")=$S($G(APCDTDIA)]"":APCDTDIA_": ",1:"Enter PURPOSE OF VISIT: ")
  1. I APCDIMP=1 D LOOK^LEXA(X,"ICD",999,"ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D LOOK^LEXA(X,"10D",999,"10D",$P(APCDD,"."))
  1. I 'LEX D G:%="" LEX G:% LEXN
  1. .S X=0 F S X=$O(LEX("HLP",X)) Q:X'=+X W !,LEX("HLP",X)
  1. .;now check fileman V2.0 PATCH 20 CR#554
  1. .W !!,"now trying secondary fileman lookup..."
  1. .S %="" S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ",DIC("S")="D CHKE^AUPNSICD" D ^DIC K DIC
  1. .S %="" I $P(Y,U)'=-1 S %=+Y
  1. ;display all codes and call reader
  1. S APCDANS=""
  1. D GETANS^APCDAPOV
  1. I APCDY="^" W ! D G:%="" LEX G:% LEXN
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="QME" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I APCDY="" W ! D G:%="" LEX G:% LEXN
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I '$G(APCDY) W ! D G:%="" LEX G:% LEXN
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I APCDIMP=1 S Y=$$ICDONE^LEXU($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."))
  1. I APCDIMP=30 S Y=$$ONE^LEXU($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."),"10D")
  1. K DO,^TMP("LEXSCH",$J)
  1. I $G(Y)="" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDTCLK="" G XITL
  1. S %=$$ICDDX^ICDEX(Y,$P(APCDD,"."),APCDIMP,"E")
  1. I $P(%,U,1)="-1" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDTCLK="" G XITL
  1. LEXN ;
  1. S APCDTCLK="`"_+%
  1. W !
  1. XITL K Y,X,DO,D,DD,DIPGM,APCDTPCC
  1. Q
  1. INJ(C,S) ;EP
  1. NEW %
  1. S %=""
  1. I S=1 D Q %
  1. .I $E(C,1)="E" S %=0 Q
  1. .I $E(C,1)="V" S %=0 Q
  1. .I $P(C,".",1)<800 S %=0 Q
  1. .S %=1
  1. I $E(C,1)="S" Q 1 ;only codes V00-Y99 per Leslie Racine.
  1. I $E(C,1)="T",$E(C,2,3)<89 Q 1
  1. Q 0
  1. ICDONE9(ALEX,ALEXVDT) ;EP - Return one ICD code for an expression
  1. ; LEX IEN of file 757.01
  1. ; LEXVDT Date to use for screening by codes
  1. N ALEXICD
  1. S ALEXVDT=$S(+$G(ALEXVDT)>0:ALEXVDT,1:$$DT^XLFDT)
  1. S ALEX=$$ICDONE^LEXU(ALEX,ALEXVDT) Q:ALEX="" ""
  1. S ALEXICD=$$ICDDX^ICDEX(ALEX,ALEXVDT,1,"E")
  1. Q:$P(ALEXICD,"^",2)="INVALID CODE" ""
  1. Q:'$$CHKE1^AUPNSICD($P(ALEXICD,U,1)) ""
  1. Q 1
  1. ;
  1. ICDONE99(ALEX,ALEXVDT) ;EP - Return one ICD code for an expression
  1. ; LEX IEN of file 757.01
  1. ; LEXVDT Date to use for screening by codes
  1. N ALEXICD
  1. S ALEXVDT=$S(+$G(ALEXVDT)>0:ALEXVDT,1:$$DT^XLFDT)
  1. S ALEX=$$ICDONE^LEXU(ALEX,ALEXVDT) Q:ALEX="" ""
  1. S ALEXICD=$$ICDDX^ICDEX(ALEX,ALEXVDT,1,"E")
  1. Q:$P(ALEXICD,"^",2)="INVALID CODE" ""
  1. Q:'$$CHKE91^AUPNSIC9($P(ALEXICD,U,1)) ""
  1. Q 1
  1. ;
  1. ICDONE1(ALEX,ALEXVDT) ;EP - Return one ICD code for an expression
  1. ; LEX IEN of file 757.01
  1. ; LEXVDT Date to use for screening by codes
  1. N ALEXICD
  1. ;S ALEXVDT=$S(+$G(ALEXVDT)>0:ALEXVDT,1:$$DT^XLFDT)
  1. S ALEX=$$ONE^LEXU(ALEX,ALEXVDT,"10D") Q:ALEX="" ""
  1. S ALEXICD=$$ICDDX^ICDEX(ALEX,ALEXVDT,30,"E")
  1. Q:$P(ALEXICD,"^",2)="INVALID CODE" ""
  1. Q:'$$CHKE1^AUPNSICD($P(ALEXICD,U,1)) ""
  1. Q 1
  1. EDITCAU1 ;
  1. I APCDTFIE=".09"!(APCDTFIE=".25") S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code)",1:" CAUSE (V00-Y99 Code Range)")
  1. I APCDTFIE=".18"!(APCDTFIE=".26") S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code) #2",1:" CAUSE (V00-Y99 Code Range) #2")
  1. I APCDTFIE=".19"!(APCDTFIE=".27") S APCDTDIA=$S(APCDT90=1!($G(APCDTIN9)):" CAUSE (E-Code) #3",1:" CAUSE (V00-Y99 Code Range) #3")
  1. S APCDTPCC="",APCDINPE=1
  1. K DIR
  1. S APCDTPCC="",APCDINPE=1,APCDTNPV="",APCDTNOG=""
  1. I $G(APCDTIN9) S APCDD=$$FMADD^XLFDT($$IMP^AUPNVUTL(30),-2),APCDIMP=1 G CLEX
  1. S APCDD=""
  1. I $G(APCDINAD) S APCDD=$S($D(APCDDATE):APCDDATE,1:DT) G CI
  1. I $G(APCDVSIT),$D(^AUPNVSIT(APCDVSIT)) D
  1. .I $P(^AUPNVSIT(APCDVSIT,0),U,7)="H",$$DSCHDATE^APCLV(APCDVSIT)]"" S APCDD=$$DSCHDATE^APCLV(APCDVSIT) Q
  1. .S APCDD=$P($P(^AUPNVSIT(APCDVSIT,0),U),".")
  1. I APCDD="" S APCDD=$P($G(APCDDATE),".")
  1. I APCDD="" S APCDD=DT
  1. NEW APCDIMP,APCDANS
  1. CI ;
  1. S APCDIMP=$$IMP^AUPNSICD(APCDD)
  1. CLEX ;EP
  1. ;reader call to get TEXT for code
  1. K DIR,APCDTDEL,APCDTUPH
  1. K ^TMP("LEXSCH",$J)
  1. I APCDIMP=1 D CONFIG^LEXSET("ICD","ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D CONFIG^LEXSET("10D","10D",$P(APCDD,"."))
  1. S DIR(0)="FO^1:60",DIR("A")=APCDTDIA
  1. S DIR("?")=$S($G(APCDTIN9):"^D HELPE9^AUPNSIC9",1:"^D HELPE^AUPNSICH")
  1. S DIR("??")=$S($G(APCDTIN9):"^D HELPE9^AUPNSIC9",1:"^D HELPE^AUPNSICH")
  1. I $$VAL^XBDIQ1(9000010.07,APCDTDA,APCDTFIE)]"" S DIR("B")=$$VAL^XBDIQ1(9000010.07,APCDTDA,APCDTFIE)
  1. KILL DA D ^DIR KILL DIR
  1. I X="@",$G(APCDIAIE) S APCDTDEL=1 G XITC
  1. I X=U S APCDTUPH=1 G XITC
  1. I $D(DIRUT) S APCDTSKI=1 G XITC
  1. I Y="" G XITC
  1. S APCDUINP=Y
  1. I APCDUINP=$$VAL^XBDIQ1(9000010.07,APCDTDA,APCDTFIE) G XITC
  1. S %=""
  1. I APCDUINP=".9999" S %=+$$ICDDX^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ.999"),,APCDIMP,"E") G LEXC
  1. I APCDIMP=30,APCDUINP="ZZZ.999" S %=+$$ICDDX^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ.999")) G LEXC
  1. I APCDIMP=30,$E(APCDUINP,1,4)="ZZZ." S %=+$$ICDDX^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ.999")) G LEXC
  1. I $E(APCDUINP,1,7)="UNCODED" S %=+$$ICDDX^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ.999")) G LEXC
  1. I APCDUINP["UNCODED D" S %=+$$ICDDX^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ.999")) G LEXC
  1. K ^TMP("LEXSCH",$J),^TMP("LEXHIT",$J),LEX,^TMP("LEXFND",$J)
  1. I APCDIMP=1 D CONFIG^LEXSET("ICD","ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D CONFIG^LEXSET("10D","10D",$P(APCDD,"."))
  1. S X=APCDUINP
  1. I APCDIMP=1 S DIC("S")=$S('$G(APCDTIN9):"I $$ICDONE9^APCDCPOV(+Y,LEXVDT)",1:"I $$ICDONE99^APCDCPOV(+Y,LEXVDT)")
  1. I APCDIMP=30 S DIC("S")="I $$ICDONE1^APCDCPOV(+Y,LEXVDT)"
  1. I $G(APCDTDIA)]"" S DIC("A")=$G(APCDTDIA)
  1. I APCDIMP=1 D LOOK^LEXA(X,"ICD",999,"ICD",$P(APCDD,"."))
  1. I APCDIMP=30 D LOOK^LEXA(X,"10D",999,"10D",$P(APCDD,"."))
  1. I 'LEX D G:%="" CLEX G:% LEXC
  1. .S X=0 F S X=$O(LEX("HLP",X)) Q:X'=+X W !,LEX("HLP",X)
  1. .;now check fileman V2.0 PATCH 20 CR#554
  1. .W !!,"now trying secondary fileman lookup..."
  1. .S %="" S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ",DIC("S")="D CHKE^AUPNSICD" D ^DIC K DIC
  1. .S %="" I $P(Y,U)'=-1 S %=+Y
  1. ;display all codes and call reader
  1. S APCDANS=""
  1. D GETANS^APCDAPOV
  1. I APCDY="^" W ! D G:%="" CLEX G:% LEXC
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="QME" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I APCDY="" W ! D G:%="" CLEX G:% LEXC
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I '$G(APCDY) W ! D G:%="" CLEX G:% LEXC
  1. .;now check fileman
  1. .;W !!,"now trying fileman lookup..."
  1. .S %="" ;S X=APCDUINP,DIC="^ICD9(",DIC(0)="MEQ" D ^DIC K DIC
  1. .;S %="" I $P(Y,U)'=-1 S %=+Y
  1. I APCDIMP=1 S Y=$$ICDONE^LEXU($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."))
  1. I APCDIMP=30 S Y=$$ONE^LEXU($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."),"10D")
  1. K DO,^TMP("LEXSCH",$J)
  1. I $G(Y)="" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDTNPV="" G XITC
  1. S %=$$ICDDX^ICDEX(Y,$P(APCDD,"."),APCDIMP,"E")
  1. I $P(%,U,1)="-1" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDTNPV="" G XITC
  1. LEXC ;
  1. S APCDTNPV="`"_+%
  1. W !
  1. XITC K Y,X,DO,D,DD,DIPGM,APCDTPCC
  1. Q