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

AUPNCIX.m

Go to the documentation of this file.
  1. AUPNCIX ; IHS/CMI/LAB - CREATE COMPOUND "AQ" INDICIES LAB&MEAS ; 08 May 2014 5:24 PM
  1. ;;2.0;IHS PCC SUITE;**2,10,11**;MAY 14, 2009;Build 58
  1. ;; MODIFIED TO SUPPORT Q-MAN 1.3 BY GIS/OHPRD MAY 24,1991
  1. ; The old compound index "BA" is no longer created and will be killed
  1. ;
  1. VMSR04 ;EP - V MEASUREMENT:MEASUREMENT (9000010.01,.04)
  1. G:X="" EXIT
  1. S AUPNCIXK="AUPNCIX1,AUPNCIX2,AUPNCIXA,AUPNCIXB,AUPNCIXK,AUPNCIXT,AUPNCIXX,AUPNCIXY,AUPNCIXZ,AUPNCIXV"
  1. S AUPNCIXT=$P(^AUTTMSR(+^AUPNVMSR(DA,0),0),U)
  1. S AUPNCIXA="^BP^VC^VU^",AUPNCIXB="^HC^HT^WT^",AUPNCIXZ=U_AUPNCIXT_U
  1. I (AUPNCIXA_AUPNCIXB)'[AUPNCIXZ G EXIT
  1. I AUPNCIXB[AUPNCIXZ D VMSR04X G EXIT
  1. I AUPNCIXA[AUPNCIXZ S AUPNCIXX=$P(X,"/",1),AUPNCIXY=$P(X,"/",2) D @("VMSR04"_AUPNCIXT) G EXIT
  1. W !!,"AUPNCIX:VMSR04 ERROR",!!,"NOTIFY YOUR SUPERVISOR IMMEDIATELY - CROSS REFERENCE IS BAD!!"
  1. ;
  1. VMSRPCT ;EP Calls ^AUPNPCT for "AQ" x-ref of .05 percentile field
  1. S AUPNSAVX=X,X="AUPNPCT" X ^%ZOSF("TEST") S X=AUPNSAVX K AUPNSAVX I $T D ^AUPNPCT
  1. Q
  1. ;
  1. EXIT ; COMMON ROUTINE EXIT
  1. K @AUPNCIXK
  1. Q
  1. ;
  1. VMSR04X S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIXT_$E("000",1,3-$L($P(X,".",1)))_X,DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. Q
  1. ;
  1. VMSR04B ; ENTRY POINT MAINTAINED FOR BACKWARD COMPATIBILITY
  1. VMSR04BP S AUPNCIX1="BPS",AUPNCIX2="BPD" G VMSR04XX
  1. VMSR04VU S AUPNCIX1="VUR",AUPNCIX2="VUL" G VMSR04XX
  1. VMSR04VC S AUPNCIX1="VCR",AUPNCIX2="VCL"
  1. VMSR04XX S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIX1_$E("000",1,3-$L(AUPNCIXX))_AUPNCIXX,DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIX2_$E("000",1,3-$L(AUPNCIXY))_AUPNCIXY,DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. Q
  1. ;
  1. VMSR01 ;EP V MEASUREMENT:MEASUREMENT (9000010.01,.01)
  1. S AUPNCIXK="AUPNCIX1,AUPNCIX2,AUPNCIXA,AUPNCIXB,AUPNCIXK,AUPNCIXT,AUPNCIXX,AUPNCIXY,AUPNCIXZ,AUPNCIXV"
  1. G:$P(^AUPNVMSR(DA,0),U,4)="" EXIT
  1. S AUPNCIXT=$P(^AUTTMSR(X,0),U)
  1. S AUPNCIXA="^BP^VC^VU^",AUPNCIXB="^HC^HT^WT^",AUPNCIXZ=U_AUPNCIXT_U
  1. I (AUPNCIXA_AUPNCIXB)'[AUPNCIXZ G EXIT
  1. I AUPNCIXB[AUPNCIXZ D VMSR01X G EXIT
  1. I AUPNCIXA[AUPNCIXZ S AUPNCIXX=$P($P(^AUPNVMSR(DA,0),U,4),"/",1),AUPNCIXY=$P($P(^AUPNVMSR(DA,0),U,4),"/",2) D @("VMSR01"_AUPNCIXT) G EXIT
  1. W !!,"AUPNCIX:VMSR01 ERROR",!!,"NOTIFY YOUR SUPERVISOR IMMEDIATELY - CROSS REFERENCE IS BAD!!"
  1. G EXIT
  1. ;
  1. ;
  1. VMSR01X S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIXT_$E("000",1,3-$L($P($P(^AUPNVMSR(DA,0),U,4),".",1)))_$P(^AUPNVMSR(DA,0),U,4),DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. Q
  1. ;
  1. VMSR01B ; ENTRY POINT MAINTAINED FOR BACKWARD COMPATIBILITY
  1. VMSR01BP S AUPNCIX1="BPS",AUPNCIX2="BPD" G VMSR01XX
  1. VMSR01VU S AUPNCIX1="VUR",AUPNCIX2="VUL" G VMSR01XX
  1. VMSR01VC S AUPNCIX1="VCR",AUPNCIX2="VCL"
  1. VMSR01XX S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIX1_$E("000",1,3-$L(AUPNCIXX))_AUPNCIXX,DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. S AUPNCIXV=$D(^AUPNVMSR("AQ",AUPNCIX2_$E("000",1,3-$L(AUPNCIXY))_AUPNCIXY,DA)) S:AUPNCIXF="S" ^(DA)="" K:AUPNCIXF="K" ^(DA)
  1. Q
  1. ;
  1. AUTO ; SETS V MEASUREMENT "AQ" XREF WITHOUT CALLING FILEMAN
  1. K ^AUPNVMSR("AQ")
  1. F DA=0:0 S DA=$O(^AUPNVMSR(DA)) Q:'DA S AUPNCIXF="S",AUPNCIXV=$G(^(DA,0)),X=$P(AUPNCIXV,U,4) I X'="" D VMSR04 W "."
  1. Q
  1. AUTO1 ;
  1. ;
  1. K ^AUPNVMSR("AQ")
  1. F DA=0:0 S DA=$O(^AUPNVMSR(DA)) Q:'DA S AUPNCIXF="S",AUPNCIXV=^(DA,0),X=$P(^AUPNVMSR(DA,0),U,1) D VMSR01 W "."
  1. Q
  1. ;
  1. VLAB04 ;EP - called from input transform on .04 of vlab
  1. ;if entry is made from PCC Data entry AND BLRENPUT routine exists
  1. ;then apply input tx check on result field
  1. ;IHS/TUCSON/LAB - added this sub routine to support lab 5.2 - patch 6 6/23/97
  1. Q:DUZ=.5 ;postmaster - filegram
  1. Q:$D(BLRLINK) ;in lab 5.2
  1. Q:'$D(APCDEIN) ;not in direct data entry
  1. Q:$D(BLRCHKIP) ;override variable is set
  1. Q:'$D(X)
  1. Q:X=""
  1. NEW AUPNX
  1. S AUPNX=X,X="BLRENPUT"
  1. X ^%ZOSF("TEST")
  1. S X=AUPNX
  1. I '$T S X=AUPNX K AUPNX Q
  1. K AUPNX
  1. D ^BLRENPUT
  1. I $D(X) K:$L(X)>200!($L(X)<1)!($D(BLRKILL)) X
  1. I $D(BLRKILL) D EN^DDIOL($C(7)_"Results can not be entered for this test!") K BLRKILL
  1. Q
  1. ;
  1. VXAMR(V,RETVAL) ;PEP - send back list of allowable result values
  1. I $G(V)="" Q ""
  1. NEW C,Y,S
  1. K @RETVAL
  1. I $E(V)'?.N S V=$O(^AUTTEXAM("B",V,0))
  1. I 'V Q ""
  1. S C=$P($G(^AUTTEXAM(V,0)),U,2)
  1. I C="" Q ""
  1. S S=0
  1. F Y="A","N","PR","PAP","PA","PO","L","M","H","RF","PS" S X=Y D VXAM04C I $D(X) S S=S+1,@RETVAL@(S)=X_U_$$EXTSET^XBFUNC(9000010.13,.04,X)
  1. Q C
  1. ;
  1. VXAM04 ;EP - called from input tx on .04 field of V EXAM
  1. Q:'$D(X)
  1. Q:'$G(DA)
  1. NEW C S C=$P(^AUTTEXAM($P(^AUPNVXAM(DA,0),U),0),U,2)
  1. VXAM04C ;
  1. I X="RF" Q ;referral good for all exam types
  1. I X="PS",(C'=38&(C'=39)) K X Q
  1. I C=38!(C=39),X'="PS" K X Q
  1. I X="PA",C'=34 K X Q
  1. I X="PR",C'=34 K X Q
  1. I X="PAP",C'=34 K X Q
  1. I X="A",C=34 K X Q
  1. I X="A",C=35 K X Q
  1. I X="A",C=36 K X Q
  1. I X="PO",(C'=35&(C'=36)&(C'=99)) K X Q ;TAKE OUT 99
  1. I X="L",(C'=42&(C'=43)) K X Q
  1. I X="M",(C'=42&(C'=43)) K X Q
  1. I X="H",(C'=42&(C'=43)) K X Q
  1. I C=42!(C=43),X'="L",X'="M",X'="H" K X Q
  1. Q
  1. VXAM04H ;EP
  1. D EN^DDIOL("RF (Referral Needed) is a valid choice for all exam types","","!")
  1. D EN^DDIOL("N is a valid for all exam types, except VTE/Newborn Hearing/Suicide Assmt ","","!")
  1. ;D EN^DDIOL("and Suicide Assessment","","!")
  1. D EN^DDIOL("PR, PAP, PA are only valid for Intimate Partner Violence exam type","","!")
  1. D EN^DDIOL("A is not valid for Intimate Partner Violence/Alcohol Screening/Depression ","","!")
  1. D EN^DDIOL("Screening/VTE Risk Assessment/Suicide Risk Assessment/Newborn Hearing exam types","","!")
  1. D EN^DDIOL("PO is valid for Depression Screening and Alcohol Screening and BIMS exam types","","!")
  1. D EN^DDIOL("L, M and H are only valid for VTE Risk Assessment/Suicide Risk Assessment exams","","!")
  1. D EN^DDIOL("PS (Pass) is only valid for Newborn Hearing Right and Left","","!")
  1. Q
  1. INPH ;EP - called from help 9000024
  1. D EN^DDIOL("Must begin with a numeric value.")
  1. D EN^DDIOL("Must contain a D for Days, W for Weeks, M for Months or Y for years.")
  1. D EN^DDIOL("Examples: 2W for 2 weeks, 10M for 10 Months, 365D for 365 days, 2Y for 2 years.")
  1. Q
  1. OUTTX(%) ;EP called from input transform
  1. I $G(%)="" Q ""
  1. I %["D" Q +%_" Day"_$S(+%>1:"s",1:"")
  1. I %["M" Q +%_" Month"_$S(+%>1:"s",1:"")
  1. I %["Y" Q +%_" Year"_$S(+%>1:"s",1:"")
  1. I %["W" Q +%_" Week"_$S(+%>1:"s",1:"")
  1. Q %
  1. INP ;EP - called from input transform 9000024
  1. I $G(X)="" K X Q
  1. I '(+X) D EN^DDIOL("Must begin with a numeric value.") K X Q
  1. I "MDYW"'[$E(X,$L(X)) D EN^DDIOL("Must contain a D for Days, W for Weeks, M for Months or Y for Years.") K X Q
  1. Q
  1. CONVDAYS(V) ;EP
  1. NEW VAL
  1. I V="" Q ""
  1. I V["D" Q +V
  1. I V["M" S VAL=+V*30.5 Q $P(VAL,".")
  1. I V["Y" S VAL=+V*365 Q $P(VAL,".")
  1. I V["W" S VAL=+V*7 Q $P(VAL,".")
  1. Q ""
  1. KGLB(V) ;EP
  1. I V="" Q ""
  1. NEW VAL
  1. S VAL=V*2.2046226
  1. Q $P(VAL,".")
  1. KGOZ(V) ;EP
  1. I V="" Q ""
  1. NEW VAL
  1. S VAL=V*2.2046226
  1. S VAL="."_$P(VAL,".",2)
  1. S VAL=VAL*16
  1. Q $$STRIP^XLFSTR($J($P(VAL,5,0)," "))
  1. LBKG(V) ;EP
  1. I V="" Q ""
  1. NEW VAL
  1. S VAL=V*.453592
  1. Q $$STRIP^XLFSTR(VAL," ")
  1. OZ(V) ;EP
  1. NEW VAL
  1. I V="" Q ""
  1. S VAL=$P(V,".",2)
  1. I VAL="" Q 0
  1. S VAL="."_VAL
  1. S VAL=VAL*16
  1. S VAL=$$STRIP^XLFSTR(VAL," ")
  1. Q VAL
  1. CMPLDATE(%) ;EP - called from trigger on TREATMENT PLAN File
  1. I $G(%)="" Q ""
  1. NEW A,B,C
  1. S A=$P(^AUPNTP(%,0),U,3)
  1. I A="" Q ""
  1. S B=$P(^AUPNTP(%,0),U,4)
  1. I B="" Q ""
  1. S C=$$CONVDAYS(B)
  1. Q $$FMADD^XLFDT(A,C)
  1. ICD(Y,N,D) ;EP - called from input transforms
  1. S N=$G(N)
  1. S D=$G(D)
  1. I $$CHK(Y,N,D)
  1. Q:$D(^ICD9(Y))
  1. Q
  1. CHK(Y,N,D) ; SCREEN OUT E CODES AND INACTIVE CODES
  1. I $D(DIFGLINE) Q 1
  1. NEW %,A,I,V
  1. I $G(D) G CHK1
  1. I $G(N) S D=$P($P(^AUPNTP(N,0),U,2),".")
  1. I D="" S D=DT
  1. CHK1 ;
  1. S I=$$IMP^AUPNSICD(D)
  1. S %=$$ICDDX^ICDEX(Y,D,,"I")
  1. I $P(%,U,20)'=I Q 0 ;not correct coding system
  1. S I="CHKDX"_I
  1. G @I
  1. ;Q
  1. CHKDX1 ;CODING SYSTEM 1 - ICD9
  1. I $E($P(%,U,2),1)="E" Q 0 ;no E codes
  1. I $$VERSION^XPDUTL("BCSV")]"",'$P(%,U,10) Q 0 ;STATUS IS INACTIVE
  1. I $$VERSION^XPDUTL("BCSV")]"" G CSEX
  1. S A=$P($G(^ICD9(Y,9999999)),U,4),I=$P(^ICD9(Y,0),U,11)
  1. I D]"",I]"",D>I Q 0
  1. I D]"",A]"",D<A Q 0
  1. ;
  1. CSEX ; IF 'USE WITH SEX' FIELD HAS A VALUE CHECK THAT VALUE AGAINST AUPNSEX
  1. I '$D(AUPNSEX) Q 1
  1. I $P(%,U,11)]"",$P(%,U,11)'=AUPNSEX Q 0
  1. Q 1
  1. ;
  1. CHKDX30 ;coding system 30 - ICD10
  1. I $E($P(%,U,2),1)="V" Q 0 ;no codes V00-Y99 per Leslie Racine.
  1. I $E($P(%,U,2),1)="W" Q 0
  1. I $E($P(%,U,2),1)="X" Q 0
  1. I $E($P(%,U,2),1)="Y" Q 0
  1. I '$P(%,U,10) Q 0 ;STATUS IS INACTIVE
  1. ;
  1. CSEX30 ; IF 'USE WITH SEX' FIELD HAS A VALUE CHECK THAT VALUE AGAINST AUPNSEX
  1. I '$D(AUPNSEX) Q 1
  1. I $P(%,U,11)]"",$P(%,U,11)'=AUPNSEX Q 0
  1. Q 1
  1. WT ;EP (WEIGHT)
  1. D:X?.E.A.E MWT
  1. Q:'$D(X)
  1. D WTC
  1. ;S:$P(X,".",2)?1N.N X=X+.00005,X=$P(X,".",1)_"."_$E($P(X,".",2),1,4)
  1. S X=+X
  1. Q:'$D(X)
  1. K:+X'=X!(X>1000) X
  1. Q:'$D(X)
  1. ;K:X-(X\1)#.0625 X
  1. Q
  1. WTC Q:+X=X!(X'[" ")
  1. Q:'(X?1.3N1" "1.2N!(X?1.3N1" "1.2N1"/"1.2N))
  1. I X'["/" Q:+$P(X," ",2)>16 S X=+X+(+$P(X," ",2)/16) Q
  1. Q:+$P($P(X," ",2),"/",1)'<+$P($P(X," ",2),"/",2)
  1. S X=+X+((+$P(X," ",2)/$P($P(X," ",2),"/",2)))
  1. Q
  1. ;
  1. MWT ;
  1. NEW AUPNC,AUPNI,AUPNJ
  1. S AUPNJ=$L(X) F AUPNI=1:1:AUPNJ S AUPNC=$E(X,AUPNI) I AUPNC?1A S AUPNC=$S(AUPNC?1L:$C($A(AUPNC)-32),1:AUPNC)
  1. S (AUPNI,AUPNC)="" F AUPNI=1:1:AUPNJ S AUPNC=$E(X,AUPNI) Q:"GK"[AUPNC
  1. I "GK"[AUPNC D @AUPNC
  1. K AUPNC,AUPNI,AUPNJ
  1. Q
  1. MWTC ;
  1. Q:+X=X!(X'[" ")!(X'["/")
  1. K:'(X?1.6N1" "1.2N1"/"1.2N) X
  1. Q:'$D(X)
  1. S X=+X+((+$P(X," ",2)/$P($P(X," ",2),"/",2)))
  1. Q
  1. K ;
  1. I X["/" S X=$P(X,AUPNC,1) D MWTC
  1. Q:'$D(X)
  1. S X=+X
  1. S X=(X*2.2046226)
  1. Q
  1. G ;
  1. I X["/" S X=$P(X,AUPNC,1) D MWTC
  1. Q:'$D(X)
  1. S X=+X
  1. S X=(X*.0022046226)
  1. Q
  1. C ;
  1. I X["/" S X=$P(X,AUPNC,1) D MWTC
  1. Q:'$D(X)
  1. S X=+X
  1. S X=(X*.393701)
  1. Q
  1. ;
  1. V4906 ;EP - help
  1. D EN^DDIOL("Select whether the patient has any high risk weight issues.")
  1. D EN^DDIOL("For adults, this might be: <80% IBW; 1 week > 2% weight change;")
  1. D EN^DDIOL("1 month > 5% weight change; 3 months > 7.5% weight change;")
  1. D EN^DDIOL("6 months > 10% weight change. For pediatrics, this might ")
  1. D EN^DDIOL("be: < 80% IBW; Wt < 5%ile; L < 5%ile; Wt/L < 5%ile.")
  1. Q
  1. V4907 ;EP - help
  1. D EN^DDIOL("Select whether the patient has any high risk diagnoses; ")
  1. D EN^DDIOL("for example: acute renal failure; AIDS; bone marrow transplant; ")
  1. D EN^DDIOL("new-onset diabetes; pancreatitis; sepsis; congenital heart ")
  1. D EN^DDIOL("disease; failure to thrive; high risk pregnancy.")
  1. Q
  1. NY(%) ;EP - called from computed field
  1. I $G(%)="" Q ""
  1. I '$D(^AUPNVNTS(%,0)) Q ""
  1. NEW T,A
  1. S T=0
  1. F A=4:1:12 S T=T+$P(^AUPNVNTS(%,0),U,A)
  1. Q T
  1. DURENDDT(%) ;EP - called from trigger on V ANTI-COAG File
  1. I $G(%)="" Q ""
  1. NEW A,B,C
  1. S A=$P(^AUPNVACG(%,0),U,7)
  1. I A="" Q ""
  1. S B=$P(^AUPNVACG(%,0),U,8)
  1. I B="" Q ""
  1. S C=$$CONVDUR(A)
  1. I C="" Q ""
  1. Q $$FMADD^XLFDT(B,C)
  1. CONVDUR(B) ;
  1. I B=1 Q 90
  1. I B=2 Q 180
  1. I B=3 Q 365
  1. Q ""