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

APCHS12.m

Go to the documentation of this file.
  1. APCHS12 ; IHS/CMI/LAB - PART 12 OF APCHS -- SUMMARY PRODUCTION COMPONENTS ;
  1. ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
  1. ;
  1. ;cmi/anch/maw 8/28/2007 code set versioning in PVCH and FLOWCP
  1. ;
  1. FLOW ; ********** FLOWSHEET PRODUCTION **********
  1. ; <SETUP>
  1. Q:'$D(^AUPNVSIT("AA",APCHSPAT))
  1. S APCHSFNM=0
  1. S APCHSND2=APCHSNDM
  1. F APCHSFOR=0:0 S APCHSFOR=$O(^APCHSCTL(APCHSTYP,6,APCHSFOR)) Q:'APCHSFOR S APCHSNDM=APCHSND2 D FLOWOUT Q:$D(APCHSQIT)
  1. FLOWX K APCHSFOR,APCHSND2,APCHSDUS,APCHSFCN,APCHSIVD,APCHSTB,APCHSDB,APCHSI,APCHST,APCHSW,APCHSFDF,APCHSAS,APCHSVDF,APCHSN,APCHSIT,APCHSCLN
  1. K APCHSDAT,APCHSIDF,APCHSITP,APCHSJ,APCHSL,APCHSMXL,APCHSTTL,APCHSVGL,APCHSX,APCHSXT,APCHSII,APCHSNGL,APCHSXS,APCHSFXF
  1. K APCHSFOK,APCHSPI,APCHSCI,APCHSC1,APCHSC2,APCHSCM,APCHSFNM
  1. Q
  1. FLOWOUT ; <DISPLAY>
  1. S APCHSFDF=$P(^APCHSCTL(APCHSTYP,6,APCHSFOR,0),U,2)
  1. D FLOWCHK Q:'APCHSFOK
  1. Q:'$$GENDER(APCHSFDF,APCHSPAT) ;not correct gender
  1. Q:'$$AGE(APCHSFDF,APCHSPAT) ;not correct age
  1. S APCHSFNM=APCHSFNM+1 I APCHSFNM=1 X APCHSCKP Q:$D(APCHSQIT) X:'APCHSNPG APCHSBRK
  1. S APCHSFCN=$P(^APCHSFLC(APCHSFDF,0),U,1)
  1. D FLOWTB
  1. X APCHSCKP Q:$D(APCHSQIT) D FLOWHD
  1. S APCHSIVD="" F APCHSQ=0:0 S APCHSIVD=$O(^AUPNVSIT("AA",APCHSPAT,APCHSIVD)) Q:APCHSIVD=""!(APCHSIVD>APCHSDLM) D FLOWBD Q:$D(APCHSQIT) I APCHSDUS S APCHSNDM=APCHSNDM-1 Q:APCHSNDM=0
  1. X APCHSCKP Q:$D(APCHSQIT) I 'APCHSNPG S APCHSP="",$P(APCHSP,"-",APCHSMXL+9)="" W ?2,APCHSP,!
  1. X APCHSCKP Q:$D(APCHSQIT) I 'APCHSNPG W !
  1. Q
  1. FLOWCHK ; <SCREEN>
  1. I '$O(^APCHSFLC(APCHSFDF,2,0)) S APCHSFOK=1 Q
  1. S APCHSFOK=0
  1. ;Q:'$O(^AUPNPROB("AC",APCHSPAT,0))
  1. F APCHSPI=0:0 S APCHSPI=$O(^AUPNPROB("AC",APCHSPAT,APCHSPI)) Q:'APCHSPI D FLOWCP Q:APCHSFOK
  1. Q:APCHSFOK ;found on Problem list
  1. PVCH ;IHS/CMI/LAB - now check for dx in past year per Bill and Charlton by pcp
  1. K APCHY,APCHV,^TMP($J,"ALL VISITS")
  1. S APCHSNVN=$S($P($G(^APCHSITE(DUZ(2),12,APCHSFDF,0)),U,2):$P($G(^APCHSITE(DUZ(2),12,APCHSFDF,0)),U,2),1:1)
  1. S APCHSNYR=$S($P($G(^APCHSITE(DUZ(2),12,APCHSFDF,0)),U,3):$P($G(^APCHSITE(DUZ(2),12,APCHSFDF,0)),U,3),1:1)
  1. S APCHSNYR=APCHSNYR*365
  1. S APCHSBD=$$FMADD^XLFDT(DT,-(APCHSNYR))
  1. S APCHY="^TMP($J,""ALL VISITS"",",%=APCHSPAT_"^ALL VISITS;DURING "_$$FMTE^XLFDT(APCHSBD)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,APCHY)
  1. I '$D(^TMP($J,"ALL VISITS",1)) Q
  1. S (X,APCHSCNT,APCHSFOK)=0 F S X=$O(^TMP($J,"ALL VISITS",X)) Q:X'=+X!(APCHSFOK) S V=$P(^TMP($J,"ALL VISITS",X),U,5) D
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:"DAHO"'[$P(^AUPNVSIT(V,0),U,7)
  1. .Q:'$D(^AUPNVPRV("AD",V))
  1. .Q:'$D(^AUPNVPOV("AD",V))
  1. .;cmi/anch/maw 8/27/2007 mods for code set versioning
  1. .;S (D,Y)=0 F S Y=$O(^AUPNVPOV("AD",V,Y)) Q:Y'=+Y!(D) S APCHSCM=$P($G(^AUPNVPOV(Y,0)),U) I APCHSCM S APCHSCM=$P($G(^ICD9(APCHSCM,0)),U) I APCHSCM]"" D CHKCODE
  1. .N APCHSVDT
  1. .S APCHSVDT=$P(+V,".")
  1. .S (D,Y)=0 F S Y=$O(^AUPNVPOV("AD",V,Y)) Q:Y'=+Y!(D) S APCHSCM=$P($G(^AUPNVPOV(Y,0)),U) I APCHSCM S APCHSCM=$P($$ICDDX^ICDEX(APCHSCM,APCHSVDT),U,2) I APCHSCM]"" D CHKCODE
  1. .;cmi/anch/maw 8/27/2007 end of mods
  1. .Q:'D
  1. .S Y=$$PRIMPROV^APCLV(V,"F")
  1. .Q:'Y
  1. .Q:$P($G(^DIC(7,Y,9999999)),U,3)'="Y"
  1. .S APCHSCNT=APCHSCNT+1
  1. .I APCHSCNT'<APCHSNVN S APCHSFOK=1
  1. .Q
  1. K ^TMP($J,"ALL VISITS"),APCHV,APCHY,APCHC
  1. Q
  1. FLOWCP ;
  1. S APCHSP=^AUPNPROB(APCHSPI,0) Q:"ID"[$P(APCHSP,U,12) ;'="A"
  1. ;S APCHSCM=$P(^ICD9(+$P(APCHSP,U,1),0),U,1) cmi/anch/maw 8/27/2007 orig line
  1. S APCHSCM=$$VAL^XBDIQ1(9000011,APCHSPI,.01) D CHKCODE I D S APCHSFOK=1
  1. Q ;cmi/anch/maw 8/27/2007 code set versioning
  1. F APCHSCI=0:0 S APCHSCI=$O(^APCHSFLC(APCHSFDF,2,APCHSCI)) Q:'APCHSCI D FLOWCR Q:APCHSFOK
  1. Q
  1. FLOWCR ;
  1. S APCHSC1=$P(^APCHSFLC(APCHSFDF,2,APCHSCI,0),U,1)
  1. I APCHSC1["-" S APCHSC2=$P(APCHSC1,"-",2),APCHSC1=$P(APCHSC1,"-",1)
  1. E S APCHSC2=APCHSC1
  1. S APCHSC1=APCHSC1_" ",APCHSC2=APCHSC2_" "
  1. I APCHSC1'](APCHSCM_" "),(APCHSCM_" ")']APCHSC2 S APCHSFOK=1
  1. ;I APCHSC1']APCHSCM,APCHSCM']APCHSC2 S APCHSFOK=1
  1. Q
  1. CHKCODE ;
  1. F APCHSCI=0:0 S APCHSCI=$O(^APCHSFLC(APCHSFDF,2,APCHSCI)) Q:'APCHSCI D CHKCODE1 Q:D
  1. Q
  1. CHKCODE1 ;
  1. S D=0
  1. S APCHSC1=$P(^APCHSFLC(APCHSFDF,2,APCHSCI,0),U,1)
  1. I APCHSC1["-" S APCHSC2=$P(APCHSC1,"-",2),APCHSC1=$P(APCHSC1,"-",1)
  1. E S APCHSC2=APCHSC1
  1. ;S APCHSC1=APCHSC1_" ",APCHSC2=APCHSC2_" "
  1. ;I APCHSC1'](APCHSCM_" "),(APCHSCM_" ")']APCHSC2 S D=1
  1. S APCHCS=$P(^APCHSFLC(APCHSFDF,2,APCHSCI,0),U,2)
  1. I APCHCS="" S APCHCS=1 ;if no coding system, assume icd-9
  1. K APCHC
  1. D LST^ATXAPI(APCHCS,80,APCHSC1_"-"_APCHSC2,"CODE","APCHC")
  1. I $D(APCHC(APCHSCM_" ")) S D=1
  1. K APCHC
  1. Q
  1. FLOWCKP ;ENTRY POINT
  1. X APCHSCKP Q:$D(APCHSQIT) Q:'APCHSNPG
  1. FLOWHD ;ENTRY POINT
  1. ; DISPLAY HEADER
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. W APCHSFCN,!
  1. I $O(^APCHSFLC(APCHSFDF,3,0)) W ?2,"Clinics limited to:" S X=0 F S X=$O(^APCHSFLC(APCHSFDF,3,X)) Q:'X X APCHSCKP Q:$D(APCHSQIT) G:APCHSNPG FLOWHD W ?22,$P(^DIC(40.7,X,0),U),!
  1. X APCHSCKP Q:$D(APCHSQIT) G:APCHSNPG FLOWHD
  1. F APCHSII=0:0 S APCHSII=$O(APCHSTB(APCHSII)) Q:'APCHSII W ?12+APCHSTB(APCHSII),APCHSTB(APCHSII,"L")
  1. W !
  1. Q
  1. FLOWTB ; BUILD TAB TABLE
  1. K APCHSTB
  1. S APCHST=1,APCHSMXL=0
  1. F APCHSI=0:0 S APCHSI=$O(^APCHSFLC(APCHSFDF,1,APCHSI)) Q:'APCHSI D FLOWTB2
  1. Q
  1. FLOWTB2 S APCHSW=0
  1. Q:'($D(^APCHSFLC(APCHSFDF,1,APCHSI,0))#2) S APCHSN=^(0)
  1. S APCHSTTL=$P(APCHSN,U,3) S APCHSP=$L(APCHSTTL) S:APCHSP>APCHSW APCHSW=APCHSP
  1. S APCHSP=$P(APCHSN,U,4) S:+APCHSP>APCHSW APCHSW=APCHSP
  1. S:APCHSW=0 APCHSW=10
  1. S APCHSTB(APCHSI)=APCHST_"^"_APCHSW,APCHSTB(APCHSI,"L")=APCHSTTL
  1. S APCHSMXL=APCHSMXL+APCHSW+2
  1. S APCHST=APCHST+APCHSW+2
  1. Q
  1. FLOWBD ; BUILD AND DISPLAY DATA TABLE (FOR ONE DATE)
  1. K APCHSDB
  1. S APCHSDUS=0
  1. F APCHSVDF=0:0 S APCHSVDF=$O(^AUPNVSIT("AA",APCHSPAT,APCHSIVD,APCHSVDF)) Q:'APCHSVDF D FLOWB
  1. D:$D(APCHSDB) FLOWD^APCHS12A
  1. Q
  1. FLOWB S APCHSCLN=$P(^AUPNVSIT(APCHSVDF,0),U,8)
  1. I APCHSCLN,$O(^APCHSFLC(APCHSFDF,3,0)),'$D(^(APCHSCLN)) Q
  1. S APCHSDUS=1
  1. F APCHSIDF=0:0 S APCHSIDF=$O(^APCHSFLC(APCHSFDF,1,APCHSIDF)) Q:'APCHSIDF S APCHSJ=0 D FLOWB2 Q:$D(APCHSQIT)
  1. Q
  1. FLOWB2 S APCHSN=^APCHSFLC(APCHSFDF,1,APCHSIDF,0)
  1. S APCHSIT=$P(APCHSN,U,2)
  1. S APCHSFXF=$G(^APCHSFLC(APCHSFDF,1,APCHSIDF,1))
  1. S APCHSX=^APCHSFLI(APCHSIT,1)
  1. S APCHSXT=^APCHSFLI(APCHSIT,2)
  1. S APCHSP=$P(^APCHSFLI(APCHSIT,0),U,3),APCHSVGL=^DIC(APCHSP,0,"GL")_"""AD"",APCHSVDF)"
  1. S APCHSAS=$O(^APCHSFLC(APCHSFDF,1,APCHSIDF,2,0)),APCHSNGL=APCHSAS&'$O(^(APCHSAS)) D FLOWBA:'APCHSAS,FLOWBS:APCHSAS
  1. Q
  1. FLOWBS ; ADD SPECIFIED ITEMS
  1. F DA=0:0 S DA=$O(@APCHSVGL@(DA)) Q:'DA D FLOWBS2
  1. Q
  1. FLOWBS2 ;
  1. X APCHSXT
  1. S APCHSITP=X
  1. F I=0:0 S I=$O(^APCHSFLC(APCHSFDF,1,APCHSIDF,2,I)) Q:'I I +$P(^APCHSFLC(APCHSFDF,1,APCHSIDF,2,I,0),U,1)=APCHSITP D FLOWADD Q
  1. Q
  1. FLOWBA ; ADD ALL (NO ITEMS SPECIFIED)
  1. F DA=0:0 S DA=$O(@APCHSVGL@(DA)) Q:'DA D FLOWADD
  1. Q
  1. FLOWADD ; ADD VALUE FROM SELECTED FILE/DFN
  1. ;QUIT IF MEASUREMENT IS DELETED
  1. I APCHSVGL["AUPNVMSR" Q:$P($G(^AUPNVMSR(DA,2)),U,1)
  1. S APCHSL=$P(APCHSTB(APCHSIDF),U,2)
  1. X APCHSX
  1. FLOWS I $L(X),$E(X,$L(X))=" " S X=$E(X,1,$L(X)-1) G FLOWS
  1. I APCHSFXF]"",$P(X,"=",2)]"" S APCHSXS=$P(X,"="),X=$P(X,"=",2) X APCHSFXF S X=APCHSXS_"="_X
  1. ;S:$E(X,$L(X))="=" X=$P(X,"=")_"n/r"
  1. S:$E(X,$L(X))="=" X="n/r" ;per Gary Lawless do not display name of test 12/26/01
  1. I $G(^APCHSFLC(APCHSFDF,1,APCHSIDF,3))]"" X ^APCHSFLC(APCHSFDF,1,APCHSIDF,3)
  1. ;I $G(^APCHSFLC(APCHSFDF,1,APCHSIDF,1))]"" X ^APCHSFLC(APCHSFDF,1,APCHSIDF,1) ;IHS/CMI/GRL execute flowsheet order transform code
  1. I APCHSNGL,X["=" S X=$P(X,"=",2)
  1. I $$VAL^XBDIQ1(9001019,APCHSIT,.01)="LAB RESULT",X["=",$P(X,"=",2)[" " S X=$P($P(X,"=",2)," ") ;CMI/GRL remove alpha comment after lab result
  1. F APCHSI=1:APCHSL S APCHSP=$E(X,APCHSI,APCHSL+APCHSI-1) Q:APCHSP="" S APCHSJ=APCHSJ+1,APCHSDB(APCHSJ,APCHSIDF)=APCHSP
  1. Q
  1. GENDER(I,P) ;
  1. I $P(^APCHSFLC(I,0),U,2)="" Q 1
  1. I $P(^DPT(P,0),U,2)'=$P(^APCHSFLC(I,0),U,2) Q 0
  1. Q 1
  1. AGE(I,P) ;
  1. NEW A,B,C
  1. S A=$P(^APCHSFLC(I,0),U,3) ;lower age
  1. S B=$P(^APCHSFLC(I,0),U,4) ;upper age
  1. I A="",B="" Q 1
  1. S C=$$AGE^AUPNPAT(P,DT)
  1. I A]"",C<A Q 0
  1. I B]"",C>B Q 0
  1. Q 1