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

APCLVL03.m

Go to the documentation of this file.
  1. APCLVL03 ; IHS/CMI/LAB - SCREEN LOGIC ;
  1. ;;2.0;IHS PCC SUITE;**2,4,7**;MAY 14, 2009
  1. ;
  1. MEAS ;EP - measurements and values
  1. ;get measurement type and value range and store as T_U_RANGE
  1. W !,"With this selection item you will be prompted to enter which measurement types"
  1. W !,"you want included in the VGEN search. When you select a measurement type you"
  1. W !,"will be asked to include all values of the measurement or to just include"
  1. W !,"a user specified range of values.",!
  1. GETMEAS ;
  1. K APCLMSR
  1. GETMEAS1 ;
  1. W !
  1. K DIC S DIC="^AUTTMSR(",DIC(0)="AEMQ" D ^DIC K DIC,DA
  1. I Y=-1,'$D(APCLMSR) W !,"no measurements selected." D PAUSE^APCLVL01 Q
  1. I Y=-1 D SETRPT Q
  1. S APCLMT=+Y,APCLMSR(APCLMT)="",APCLMTT=$P(^AUTTMSR(APCLMT,0),U)
  1. ;now get value
  1. S DIR(0)="S^A:ANY/ALL "_APCLMTT_" Values;S:Selected Range of "_APCLMTT_" Values",DIR("A")="Include which "_APCLMTT_" Values" KILL DA
  1. S DIR("B")="A" D ^DIR KILL DIR
  1. I $D(DIRUT) S APCLMSR(APCLMT)="" W !,"skipping measurement ",APCLMTT K APCLMSR(APCLMT) G GETMEAS1
  1. I Y="A" G GETMEAS1
  1. MVAL ;GET VALUE RANGE
  1. S DIR(0)="F^1:999",DIR("A")="Enter the value range for "_APCLMTT
  1. S APCLMTVG=$O(^APCLVGMS("B",APCLMT,0))
  1. I 'APCLMTVG W !,"value range search not available for that measurement, all values will be included." G GETMEAS1
  1. S DIR("?")="Enter the value range for "_APCLMTT
  1. S X=0,C=0 F S X=$O(^APCLVGMS(APCLMTVG,1,X)) Q:X'=+X S C=C+1,DIR("?",C)=^APCLVGMS(APCLMTVG,1,X,0)
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) K APCLMSR(APCLMT) G GETMEAS1
  1. S (X,APCLVR)=Y X ^APCLVGMS(APCLMTVG,2)
  1. I '$D(X) W !,"Invalid range for ",APCLMTT D G MVAL
  1. .S X=0,C=0 F S X=$O(^APCLVGMS(APCLMTVG,1,X)) Q:X'=+X W !,^APCLVGMS(APCLMTVG,1,X,0)
  1. S APCLMSR(APCLMT)=APCLVR
  1. G GETMEAS1
  1. ;
  1. SETRPT ;
  1. S (X,Y)=0 F S X=$O(APCLMSR(X)) Q:X'=+X D
  1. .S Y=Y+1
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,0)=APCLCRIT,^APCLVRPT(APCLRPT,11,"B",APCLCRIT,APCLCRIT)=""
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,Y,0)=X_"^"_APCLMSR(X)
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,"B",X,Y)=""
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,0)="^9001003.8110101A^"_Y_"^"_Y
  1. Q
  1. HESCR ;
  1. I V=R S D=1 Q
  1. Q
  1. EDIP ;
  1. NEW A,M,B,H,S
  1. S H=X,S=""
  1. S A=$$STRIP^XLFSTR(X," ")
  1. F B=1:1 S C=$P(A,",",B) Q:C="" D
  1. .S X=C X ^AUTTMSR($P(^APCLVGMS(APCLMTVG,0),U),12) I '$D(X) S S=1
  1. I S K X Q
  1. S APCLVR=A
  1. Q
  1. NUMIP ;
  1. NEW A,M
  1. S M=$P(^APCLVGMS(APCLMTVG,0),U)
  1. S A=X
  1. S X=$P(A,"-",1) X ^AUTTMSR(M,12) I '$D(X) Q
  1. S X=$P(A,"-",2) X ^AUTTMSR(M,12) I '$D(X) Q
  1. S X=A
  1. Q
  1. MSRSCR ;
  1. NEW A,B,C,D,R,F,S,E,G
  1. S Y=0 F S Y=$O(^AUPNVMSR("AD",APCLVIEN,Y)) Q:Y'=+Y!(X=1) I '$P($G(^AUPNVMSR(Y,2)),U,1) S A=$P(^AUPNVMSR(Y,0),U,1) I $D(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A)) D
  1. .;check value if need be
  1. .S B=$O(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A,0))
  1. .S R=$P(^APCLVRPT(APCLRPT,11,APCLI,11,B,0),U,2)
  1. .I R="" S X=1,X(1)="" Q
  1. .S V=$P(^AUPNVMSR(Y,0),U,4)
  1. .S C=$P(^AUTTMSR(A,0),U)
  1. .S E=$O(^APCLVGMS("B",A,0))
  1. .S G=$P(^APCLVGMS(E,0),U,2)
  1. .K D
  1. .I G D NUMSCR I 1
  1. .E D @(C_"SCR")
  1. .Q:'$D(D)
  1. .S X=1,X(1)=""
  1. .Q
  1. Q
  1. NUMSCR ;
  1. S F=$P(R,"-"),S=$P(R,"-",2)
  1. I +V<F Q
  1. I +V>S Q
  1. S D=1
  1. Q
  1. EDSCR ;
  1. NEW A,B
  1. F A=1:1 S B=$P(V,",",A) Q:B="" I V=B S D=1
  1. Q
  1. BPIP ;
  1. NEW A,M,S,D
  1. I X'["," K X Q
  1. S A=$P(X,",")
  1. I A]"",A'?1.3N1"-"1.3N K X Q
  1. S A=$P(X,",",2)
  1. I A]"",A'?1.3N1"-"1.3N K X Q
  1. S M=$P(^APCLVGMS(APCLMTVG,0),U)
  1. S A=X
  1. S S=$P(A,",",1) I S]"" D Q:'$D(X)
  1. .S X=$P(S,"-",1) I X<20!(X>275) K X Q
  1. .S X=$P(S,"-",2) I X<20!(X>275) K X Q
  1. S D=$P(A,",",2) I D]"" D Q:'$D(X)
  1. .S X=$P(D,"-",1) I X<20!(X>200) K X Q
  1. .S X=$P(D,"-",2) I X<20!(X>200) K X Q
  1. S X=A
  1. Q
  1. BPSCR ;
  1. NEW S,E,A,B,F,Z
  1. S E=0,F=0
  1. S S=$P(R,",",1) I S]"" D
  1. .S A=$P(S,"-",1) I $P(V,"/",1)<A Q
  1. .S A=$P(S,"-",2) I $P(V,"/",1)>A Q
  1. .S E=1
  1. I S]"",'E Q
  1. S E=1
  1. S Z=$P(R,",",2) I Z]"" D
  1. .S B=$P(Z,"-",1) I $P(V,"/",2)<B Q
  1. .S B=$P(Z,"-",2) I $P(V,"/",2)>B Q
  1. .S F=1
  1. I Z]"",'F Q
  1. I E,F S D=1 Q
  1. Q
  1. PRIP ;
  1. NEW A,M,S,D
  1. S A=$$STRIP^XLFSTR(X," ")
  1. F S=1:1 S D=$P(A,",",S) Q:D="" D
  1. .I D=1 Q
  1. .I D=2 Q
  1. .I D=3 Q
  1. .I D=4 Q
  1. .I D=5 Q
  1. .I D=6 Q
  1. .I D=7 Q
  1. .I D=8 Q
  1. .I D=9 Q
  1. .I D="U" Q
  1. .K X
  1. S APCLVR=A
  1. Q
  1. PRSCR ;
  1. NEW A,B
  1. F A=1:1 S B=$P(V,",",A) Q:B="" I V=B S D=1
  1. Q
  1. OTHSPEC ;EP - other speciaty providers
  1. ;get provider type and list of providers
  1. W !,"With this selection item you will be prompted to enter which specialty "
  1. W !,"provider type you want included in the search. When you select a provider "
  1. W !,"type you will be asked to include all providers in that category or to "
  1. W !,"just include certain providers.",!
  1. GETTYPE ;
  1. NEW APCLPROV,APCLPRVN,APCLPRVD
  1. K APCLMSR
  1. GETTYPE1 ;
  1. W !
  1. K DIC S DIC="^BDPTCAT(",DIC(0)="AEMQ" D ^DIC K DIC,DA
  1. I Y=-1,'$D(APCLMSR) W !,"no provider types selected." D PAUSE^APCLVL01 Q
  1. I Y=-1 D SETRPT Q
  1. S APCLMT=+Y,APCLMSR(APCLMT)="",APCLMTT=$P(^BDPTCAT(APCLMT,0),U)
  1. ;now get value
  1. S DIR(0)="S^A:ANY/ALL "_APCLMTT_" Providers;S:Selected Set of "_APCLMTT_" Providers",DIR("A")="Include which "_APCLMTT_" Providers" KILL DA
  1. S DIR("B")="A" D ^DIR KILL DIR
  1. I $D(DIRUT) S APCLMSR(APCLMT)="" W !,"skipping provider type ",APCLMTT K APCLMSR(APCLMT) G GETTYPE1
  1. I Y="A" G GETTYPE1
  1. PROV ;GET VALUE RANGE
  1. K APCLPROV,APCLPRVN,APCLPRVD
  1. S X="PRIMARY CARE PROVIDER",DIC="^AMQQ(5,",DIC(0)="FM",DIC("S")="I $P(^(0),U,14)" D ^DIC K DIC,DA I Y=-1 W "OOPS - QMAN NOT CURRENT - QUITTING" G GETTYPE1
  1. D PEP^AMQQGTX0(+Y,"APCLPROV(")
  1. I '$D(APCLPROV) W !,"no providers selected, will search for all ",APCLMTT," providers." G GETTYPE1
  1. I $D(APCLPROV("*")) W !,"all ",APCLMTT," will be searched for" K APCLPROV G GETTYPE1
  1. S APCLVR=""
  1. S Y=0 F S Y=$O(APCLPROV(Y)) Q:Y'=+Y D
  1. .I APCLVR="" S APCLVR=Y Q
  1. .S APCLVR=APCLVR_","_Y
  1. S APCLMSR(APCLMT)=APCLVR
  1. G GETTYPE1
  1. ;
  1. OTHSPECS ;EP
  1. NEW D,G
  1. ;S D=$S(APCLPTVS="P":DT,1:$P($P(APCLVREC,U),"."))
  1. K D
  1. D ALLDPVG^BDPAPI(DFN,,.D)
  1. I '$D(D) Q
  1. NEW A,B,C,R,E
  1. S G=0
  1. S A=0 F S A=$O(D(A)) Q:A'=+A!(G=1) I $D(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A)) D
  1. .S B=$O(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A,0))
  1. .S R=$P(^APCLVRPT(APCLRPT,11,APCLI,11,B,0),U,2)
  1. .I R="" S G=1 Q ;patient has a provider of this category
  1. .F E=1:1 S C=$P(R,",",E) Q:C=""!(G) I $P(D(A),U,3)=C S G=1
  1. .Q
  1. I G S X=1,X(1)=""
  1. Q
  1. OTHSPED ;EP - other speciaty providers
  1. ;get provider type and list of providers
  1. W !,"With this selection item you will be prompted to enter which specialty "
  1. W !,"provider type you want included in the search. When you select a provider "
  1. W !,"type you will then be asked the date range to search for date last update.",!
  1. GTD ;
  1. NEW APCLPROV,APCLPRVN,APCLPRVD
  1. K APCLMSR
  1. GTD1 ;
  1. W !
  1. K DIC S DIC="^BDPTCAT(",DIC(0)="AEMQ" D ^DIC K DIC,DA
  1. I Y=-1,'$D(APCLMSR) W !,"no provider types selected." D PAUSE^APCLVL01 Q
  1. I Y=-1 D SETRPT Q
  1. S APCLMT=+Y,APCLMSR(APCLMT)="",APCLMTT=$P(^BDPTCAT(APCLMT,0),U)
  1. ;
  1. DATE ;GET VALUE RANGE
  1. BD ;
  1. W ! S DIR(0)="D^::EP",DIR("A")="Enter beginning Update Date for Search" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) W !,"No date selected. Choose again." K APCLMSR(APCLMT) G GTD
  1. S APCLBDAT=Y
  1. ED ;get ending date
  1. W ! S DIR(0)="D^"_APCLBDAT_"::EP",DIR("A")="Enter ending Update Date for Search" S Y=APCLBDAT D DD^%DT S DIR("B")=Y,Y="" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G BD
  1. S APCLEDAT=Y
  1. S APCLMSR(APCLMT)=APCLBDAT_":"_APCLEDAT
  1. G GTD1
  1. ;
  1. SETRPT1 ;
  1. S (X,Y)=0 F S X=$O(APCLMSR(X)) Q:X'=+X D
  1. .S Y=Y+1
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,0)=APCLCRIT,^APCLVRPT(APCLRPT,11,"B",APCLCRIT,APCLCRIT)=""
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,Y,0)=X_"^"_APCLMSR(X)
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,"B",X,Y)=""
  1. .S ^APCLVRPT(APCLRPT,11,APCLCRIT,11,0)="^9001003.8110101A^"_Y_"^"_Y
  1. Q
  1. OTHSPECD ;EP
  1. NEW D,G
  1. K D
  1. D ALLDPVG^BDPAPI(DFN,,.D)
  1. I '$D(D) Q
  1. NEW A,B,C,R,E,B,T
  1. S G=0
  1. S A=0 F S A=$O(D(A)) Q:A'=+A!(G=1) I $D(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A)) D
  1. .S B=$O(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A,0))
  1. .S R=$P(^APCLVRPT(APCLRPT,11,APCLI,11,B,0),U,2)
  1. .I R="" S G=1 Q ;patient has a provider of this category
  1. .S B=$P(R,":",1),E=$P(R,":",2)
  1. .S T=$P(D(A),U,5)
  1. .I B>T Q
  1. .I E<T Q
  1. .S G=1
  1. .Q
  1. I G S X=1,X(1)=""
  1. Q
  1. OTHSPECU ;EP
  1. NEW D,G
  1. K D
  1. D ALLDPVG^BDPAPI(DFN,,.D)
  1. I '$D(D) Q
  1. NEW A,B,C,R,E
  1. S G=0
  1. S A=0 F S A=$O(D(A)) Q:A'=+A!(G=1) I $D(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A)) D
  1. .S B=$O(^APCLVRPT(APCLRPT,11,APCLI,11,"B",A,0))
  1. .S R=$P(^APCLVRPT(APCLRPT,11,APCLI,11,B,0),U,2)
  1. .I R="" S G=1 Q ;patient has a provider of this category
  1. .F E=1:1 S C=$P(R,",",E) Q:C=""!(G) I $P(D(A),U,6)=C S G=1
  1. .Q
  1. I G S X=1,X(1)=""
  1. Q
  1. OTHSPEU ;EP - other speciaty providers
  1. ;get provider type and list of providers
  1. W !,"With this selection item you will be prompted to enter which specialty "
  1. W !,"provider type you want included in the search. When you select a provider "
  1. W !,"type you will be asked to include all users who last updated that provider"
  1. W !,"or to include on a selected set of users",!
  1. GTU ;
  1. NEW APCLPROV,APCLPRVN,APCLPRVD
  1. K APCLMSR
  1. GTU1 ;
  1. W !
  1. K DIC S DIC="^BDPTCAT(",DIC(0)="AEMQ" D ^DIC K DIC,DA
  1. I Y=-1,'$D(APCLMSR) W !,"no provider types selected." D PAUSE^APCLVL01 Q
  1. I Y=-1 D SETRPT Q
  1. S APCLMT=+Y,APCLMSR(APCLMT)="",APCLMTT=$P(^BDPTCAT(APCLMT,0),U)
  1. ;now get value
  1. S DIR(0)="S^A:ANY/ALL "_APCLMTT_" Users who Updated the Provider;S:Selected Set of "_APCLMTT_" Users who Updated the Provider",DIR("A")="Include which Users who Updated "_APCHMTT KILL DA
  1. S DIR("B")="A" D ^DIR KILL DIR
  1. I $D(DIRUT) S APCLMSR(APCLMT)="" W !,"skipping provider type ",APCLMTT K APCLMSR(APCLMT) G GTU1
  1. I Y="A" G GTU1
  1. PU ;GET VALUE RANGE
  1. K APCLPROV,APCLPRVN,APCLPRVD
  1. S X="PRIMARY CARE PROVIDER",DIC="^AMQQ(5,",DIC(0)="FM",DIC("S")="I $P(^(0),U,14)" D ^DIC K DIC,DA I Y=-1 W "OOPS - QMAN NOT CURRENT - QUITTING" G GTU1
  1. D PEP^AMQQGTX0(+Y,"APCLPROV(")
  1. I '$D(APCLPROV) W !,"no users selected, will search for all ",APCLMTT," users." G GTU1
  1. I $D(APCLPROV("*")) W !,"all ",APCLMTT," will be searched for" K APCLPROV G GTU1
  1. S APCLVR=""
  1. S Y=0 F S Y=$O(APCLPROV(Y)) Q:Y'=+Y D
  1. .I APCLVR="" S APCLVR=Y Q
  1. .S APCLVR=APCLVR_","_Y
  1. S APCLMSR(APCLMT)=APCLVR
  1. G GTU1
  1. ;