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

VENPCCS2.m

Go to the documentation of this file.
  1. VENPCCS2 ; IHS/OIT/GIS - POPULATE OCX IMMUNIZATIONS OBJECT AND MAIL MERGRE FIELDS ; 16 Nov 2007 10:04 AM
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ; SUPPORTS IMM PGK VER 7 AND HIGHER
  1. ; DEAD CODE IN 2.5
  1. ;
  1. IMM(DFN) ; EP-GET IMMUNIZATION DATA AND RETURN IT IN A FORMATTED STRING
  1. I '$D(^DPT(+$G(DFN),0)) Q ""
  1. N STG1,STG2,X,TMP,STG
  1. S TMP="^TMP(""VEN IMM"","_$J_")" K @TMP
  1. S X=$T(IMMHX^BIRPC) I '$L(X) Q ""
  1. S X=$T(IMMFORC^BIRPC) I '$L(X) Q ""
  1. I $L($T(VER^BILOGO)),$$VER^BILOGO>7.99,$L($T(IMMBI^BIAPCHS)) S STG=$$NEWIMM(DFN) K @TMP Q STG ; ACCOMODATES NEW IMMINUZATION PKG
  1. D IMMHX^BIRPC(.STG1,DFN)
  1. D IMMFORC^BIRPC(.STG2,DFN)
  1. ABORT I '$L(STG1),'$L(STG2) Q ""
  1. STG D ANAL(STG1,STG2)
  1. FMT S STG=$$FORMAT
  1. K @TMP
  1. I '$G(WFLG) D CLN
  1. D FORC(STG) ; MAIL MERGE FORECASTING COMPONENT
  1. Q STG
  1. ;
  1. ANAL(STG1,STG2) ; EP-ANALYSIS OF THE HX AND FORCAST STRINGS
  1. N B,PCE1,PCE2,X,Y,%DT,CPT,CPTIEN,ICLASS,IDATE,IIEN,ILOC,IMM,IR,IRNO,STG,STYPE,VIIEN
  1. S B="|"
  1. F PCE1=1:1:$L(STG1,U) S X=$P(STG1,U,PCE1) I X'="" D
  1. . S ICLASS=$P(X,B,2) I '$L(ICLASS) Q
  1. . S IMM=$P(X,B,6) I '$L(IMM) Q
  1. . S VIIEN=+$P(X,B,4) I 'VIIEN Q
  1. . S ILOC=$P(X,B,5)
  1. . S STYPE=$P(X,B,6) I '$L(STYPE) S STYPE="OTHER"
  1. . S IDATE=$P(X,B,7) I IDATE S IDATE=$E(IDATE,1,11),%DT="",X=IDATE D ^%DT
  1. . I Y'?7N Q
  1. . S IDATE=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_(1700+$E(Y,1,3))
  1. . S %=$G(^AUPNVIMM(VIIEN,0)) S IRNO=$P(%,U,6),IIEN=+% I 'IIEN Q
  1. . S IR="" I IRNO S %=$P($G(^DD(9000010.11,.06,0)),U,3),%=";"_%,Y=$P(%,(";"_IRNO_":"),2),IR=$P(Y,";") I IR="OTHER" S IR="UNSPECIFIED REACTION"
  1. . I $L(IR) S @TMP@("IR",ICLASS,IR)="" I $G(WFLG) Q
  1. . S @TMP@("ORD",STYPE,2,ICLASS,PCE1)=IDATE_"_"_IMM_"_"_ILOC
  1. . Q
  1. K STG1
  1. I $G(WFLG) Q ; WARNINGS ONLY
  1. F PCE2=1:1:$L(STG2,U) S X=$P(STG2,U,PCE2) I X'="" D
  1. . S IMM=$P(X,B,1) I '$L(IMM) Q
  1. . S IMM=$$STRIP^VENPCCU(IMM)
  1. . S DUE="Yes"
  1. . S ICLASS=IMM I IMM?1N1"-"1.E S ICLASS=$P(IMM,"-",2,99)
  1. . S CPT="",STYPE="OTHER",IIEN=$O(^AUTTIMM("D",ICLASS,0))
  1. . I IIEN D
  1. .. S STNO=+$P($G(^AUTTIMM(IIEN,0)),U,9),STYPE=$P($G(^BISERT(STNO,0)),U)
  1. .. I STYPE="" S STYPE="OTHER"
  1. .. S CPTIEN=+$P($G(^AUTTIMM(IIEN,0)),U,11),CPT=$P($G(^ICPT(CPTIEN,0)),U)
  1. .. Q
  1. . S @TMP@("ORD",STYPE,1,ICLASS,PCE2)=IMM_"~"_DUE_"~"_CPT_"~"
  1. . Q
  1. K STG2
  1. S STYPE="" F S STYPE=$O(@TMP@("ORD",STYPE)) Q:STYPE="" S ICLASS="" F S ICLASS=$O(@TMP@("ORD",STYPE,2,ICLASS)) Q:ICLASS="" D
  1. . I '$D(@TMP@("ORD",STYPE,1,ICLASS)) S @TMP@("ORD",STYPE,1,ICLASS,1)=ICLASS_"~No~~"
  1. . Q
  1. Q
  1. ;
  1. FORMAT() ; EP-FORMAT THE OUTPUT STRINGS
  1. N WARN,ORD,HX,IIEN,ICLASS,CNT,IIEN,IR,STYPE,CNT1,CNT2,ICLASS
  1. S WARN="",IIEN=0
  1. S ICLASS="",CNT=0
  1. I $G(WFLG),$D(@TMP@("IR")) F S ICLASS=$O(@TMP@("IR",ICLASS)) Q:ICLASS="" S IR="" F S IR=$O(@TMP@("IR",ICLASS,IR)) Q:IR="" D
  1. . I 'CNT S CNT=1 S WARN=WARN_$S($L(WARN):" ",1:"")_"Warnings: "_ICLASS_" CAUSES "_IR Q
  1. . S WARN=WARN_", "_ICLASS_" CAUSES "_IR
  1. . Q
  1. I $G(WFLG) Q WARN ; WARNINGS ONLY
  1. S STYPE="",ORD=""
  1. F S STYPE=$O(@TMP@("ORD",STYPE)) Q:STYPE="" S ICLASS="" F S ICLASS=$O(@TMP@("ORD",STYPE,1,ICLASS)) Q:ICLASS="" D
  1. . S CNT1=0 F S CNT1=$O(@TMP@("ORD",STYPE,1,ICLASS,CNT1)) Q:'CNT1 D
  1. .. S ORD=ORD_@TMP@("ORD",STYPE,1,ICLASS,CNT1),CNT2=0,CNT=0
  1. .. F S CNT2=$O(@TMP@("ORD",STYPE,2,ICLASS,CNT2)) Q:'CNT2 D
  1. ... I CNT S ORD=ORD_"`"
  1. ... E S CNT=1
  1. ... S ORD=ORD_@TMP@("ORD",STYPE,2,ICLASS,CNT2)
  1. ... Q
  1. .. S ORD=ORD_"|"
  1. .. Q
  1. . Q
  1. Q ORD
  1. ;
  1. IWARN(DFN) ; EP-RETURN IMMUNIZATION WARNINGS
  1. Q ""
  1. ;
  1. FORC(STG) ; EP-RESET THE HEALTH MAINT REMINDERS FOR IMMUNIZATIONS TO ACCOMODATE THE "FORECAST BOX"
  1. N I,FSTG,YES,A,B,IMM,CPT,N,TOT,TMP
  1. S TMP=$NA(^TMP("VEN PRNT",$J,1))
  1. S YES="~Yes~",FSTG="",STG="|"_STG,N=0
  1. I STG["Yes" S TOT=$L(STG,YES) F I=1:1:TOT D
  1. . S A=$P(STG,YES,1) S IMM=$P(A,"|",$L(A,"|"))
  1. . S B=$P(STG,YES,2,99) S CPT=$P(B,"~")
  1. . S STG=B
  1. . I $L(FSTG) S FSTG=FSTG_U
  1. . S FSTG=FSTG_IMM_" due"
  1. . I $L(CPT) S FSTG=FSTG_" ("_CPT_")"
  1. . Q
  1. F I=9:1:25 S N=N+1,%=$P(FSTG,U,N) I $L(%) S @TMP@("h"_I)=%
  1. Q
  1. ;
  1. CLN ; EP CLEAN OUT IMMUNIZATIONS
  1. N I,TMP
  1. S TMP=$NA(^TMP("VEN PRNT",$J,1))
  1. F I=9:1:25 S @TMP@("h"_I)=""
  1. Q
  1. ;
  1. NEWIMM(DFN) ; EP-GET DATA FROM NEW IMMUNIZATION PACKAGE
  1. N ARR,TYPE,LINE,CNT,ISTG,LAST,X
  1. D CLN ; CLEAN OUT IMMUNIZATION WARNINGS AND START OVER WITH NEW DATA
  1. D IMMBI^BIAPCHS(DFN,.ARR) ; GET THE IMMUNIZATION ARRAY FRO IMM PKG
  1. K BIDLLP,BIDLLID,BIDLLRUN,BIFDT,BIRESULT,BISITE,%T,%Y,DX,DY,XY
  1. I '$D(ARR) Q "" ; MUST HAVE SOME RESULTS
  1. S TYPE="",LINE=0,CNT=8,ISTG="",LAST="",MCNT=0
  1. F S LINE=$O(ARR(LINE)) Q:'LINE S X=$G(ARR(LINE,0)) I $L(X)>1 D ; BUILD MAIL MERGE FIELDS AND THE IMMUNIZATION STRING
  1. . I X["IMMUNIZATION FORECAST" S TYPE="NEWFORC" Q
  1. . I X["IMMUNIZATION HISTORY" S TYPE="NEWHX" Q
  1. . X ("D "_TYPE_"(X,LINE)") ; SET IMM HEALTH MAINT REMINDERS FOR BOTH HX AND FORECAST
  1. . Q
  1. I $L(ISTG) S ISTG=ISTG_"|"
  1. Q ISTG
  1. ;
  1. NEWFORC(STG,LINE) ; EP-NEW IMMINUZATION FORECASTS
  1. N X,Y,%,CPT,IIEN,GBL
  1. S GBL=$NA(^TMP("VEN PRNT",$J,1))
  1. I STG'[" due " Q
  1. I STG["past due" S X=$P(STG,"past due") ; GET IMMINUZATION ; PATCHED BY GIS/ITSC
  1. E S X=$P(STG,"due") ; PATCHED BY GIS/ITSC
  1. S X=$$STRIP^VENPCCU(X) ; STRIP OFF BLANKS
  1. I '$L(X) Q ; THIS POINT X = NAME OF IMMUNIZATON
  1. S CNT=CNT+1 I CNT>25 Q
  1. S IIEN=$O(^AUTTIMM("D",X,0)),CPT="" I 'IIEN Q
  1. S CPT=$P($G(^AUTTIMM(IIEN,0)),U,11)
  1. I $L(CPT) S CPT="("_CPT_")"
  1. S @GBL@("h"_CNT)="__"_X_" due now "_CPT ; REFRESH THE IMM FORCAST MAIL MERGE FIELD
  1. S @TMP@("DUE",X)="h"_CNT ; TMP ARRAY USED IN THE PEDS FORM
  1. Q
  1. ;
  1. NEWHX(STG,LINE) ; EP-NEW IMM HISTORY
  1. N WARN,NEXT,IMM,TYPE,DATE,LOC,DUE,X,Y,Z,GBL
  1. S GBL=$NA(^TMP("VEN PRNT",$J,1))
  1. S DUE="No"
  1. S X=$E(STG,1,27) S X=$$STRIP^VENPCCU(X) I '$L(X) Q
  1. S IMM=X
  1. S X=$E(STG,28,37) S X=$$STRIP^VENPCCU(X) I X'?2N1"/"2N1"/"2N Q ; THIS BLOCKS A "Reaction" LINE FROM HX
  1. S DATE=X
  1. S X=$E(STG,38,45) S X=$$STRIP^VENPCCU(X)
  1. S TYPE=X
  1. S X=$E(STG,46,59) S X=$$STRIP^VENPCCU(X)
  1. S LOC=X
  1. I TMP'="IMM" D Q ; PEDS FORM HX FROM IMM^VENPCCS2
  1. . I $D(@TMP@("DUE",IMM)) S DUE="Yes"
  1. . S Z=DATE_"_"_TYPE_"_"_LOC
  1. . S ISTG=ISTG_$S(LAST="":"",IMM=LAST:"`",1:"|") ; DELIMITER
  1. . I IMM'=LAST S ISTG=ISTG_IMM_"~"_DUE_"~~"
  1. . S ISTG=ISTG_Z,LAST=IMM
  1. . Q
  1. I TMP="IMM" D ; GENL IMM HX FROM IF^VENPCC1C (IMM 8.0 AND HIGHER)
  1. . S MCNT=MCNT+1
  1. . I $O(ARR(999),-1)<49,MCNT>1,IMM'=LAST,MCNT<51 S @GBL@("ihx"_MCNT)=" " S MCNT=MCNT+1 ; SPACER LINE
  1. . I MCNT<51 S @GBL@("ihx"_MCNT)=IMM_" "_DATE_" "_TYPE_" "_LOC ; POPULATE IMM HX LIST
  1. . S LAST=IMM
  1. . Q
  1. S NEXT=$G(ARR(LINE+1,0)) ; MAY NEED TO APPEND IMM FORCAST NOTICE WITH ADVERSE RXN INFO!
  1. I NEXT'["Reaction" Q ; CHECK FOR ADVERSE REACTION
  1. S Y=$G(@TMP@("DUE",IMM)) I '$L(Y) Q ; GET MM FIELD
  1. S X=$G(^TMP("VEN PRNT",$J,1,Y)) ; GET MESSAGE
  1. I $L(X),X'["Rxn: " S X=X_" (Rxn: "_$E($P(NEXT,"Reaction: ",2),1,12)_")"
  1. S ^TMP("VEN PRNT",$J,1,Y)=X ; APPEND REACTION NOTICE TO END OF DUE NOW NOTICE
  1. Q
  1. ;