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

VENPCC1.m

Go to the documentation of this file.
  1. VENPCC1 ; IHS/OIT/GIS - CREATE THE PCC+ ENCOUNTER FORM AND HEALTH SUMMARY ;
  1. ;;2.6;PCC+;**1,3**;APR 03, 2012;Build 24
  1. ;
  1. ; MAIN DATA EXRACTOR IS ^VENPCC10 IN 2.2
  1. ; THIS ROUTINE DOES ERROR PROCESSING, PRINT SERVICE CONNECTION/PACKAGING, AND EXTENDED PRINT GRP MGMT
  1. ; IN VER 2.5 IT MANAGES ALTERNAT OUTPUT PACKAGING FOR THE NEW PRINT SERVICE
  1. ; PATCH 4 ADD SUPPORT FOR AN INTEGRATED LABEL PRINTER CYCLE
  1. ;
  1. ; ---------------------------------------
  1. ;
  1. MERR ; EP-M ERROR TRAP
  1. S X="ERRQ^VENPCC1",@^%ZOSF("TRAP") ; SET MUMPS ERROR TRAP AT THIS LEVEL
  1. I $G(ERRSTOP) Q
  1. S ERRSTOP=1
  1. S DFN=$P($G(^AUPNVSIT(+$G(VISIT),0)),"^",5)
  1. X ("S %=$"_"ZE")
  1. S ERR="MUMPS OS reports error: "_%
  1. D ERR(ERR)
  1. Q
  1. ;
  1. ERR1 S ERR="Missing or invalid visit IEN" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR2 S ERR="Undefined print group" D ERR(ERR) Q ; EP-FROM SEVERAL VEN ROUTINES
  1. ERR3 S ERR="Missing or invalid patient DFN" D ERR(ERR) Q ; EP-FROM VENPCC2
  1. ERR4 S ERR="Unable to open a temporary DOS file" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR5 S ERR="Unable to generate demographic data" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR6 S ERR="Missing preference table for provider #"_PRV D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR7 S ERR="Missing path for configuration #"_CFIGIEN D ERR(ERR) Q ; EP-FROM VENPCC2
  1. ERR8 S ERR="Missing or invalid configuration" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR9 S ERR="Missing or invalid template" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR10 S ERR="Unable to access header file data" D ERR(ERR) Q ; EP-FROM VENPCC10
  1. ERR11 S ERR="Requested encounter form not available at this time" D ERR(ERR) ; EP-FROM VENPCC10
  1. Q
  1. ;
  1. ERR(ERR) ; EP-FROM SEVERAL VEN CHECK-IN ROUTINES ; MAKE AN ENTRY IN THE ERROR LOG
  1. I $G(ERR)="" Q
  1. NEW %,%DT,%H,%I,%Q,%Y,D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y,DLAYGO,GBL,MGBL
  1. S GBL="^TMP("_"""BSDX"","""_$J_""",1)",MGBL=$NA(^TMP("VEN MON"))
  1. D NOW^%DTC S X=%
  1. S DIC="^VEN(7.7,",DIC(0)="L",DLAYGO=19707.7 D ^DIC
  1. I Y=-1 Q
  1. S DIE=DIC,DA=+Y
  1. S DR=".02////^S X=$G(VISIT);.03////^S X=$G(DUZ);.04////^S X=$G(DUZ(2));.05////^S X=$G(VENDEV);.07////^S X=$G(DFN);1////^S X=$G(ERR)"
  1. ; S %=$C(68,85,90),@%(0)=$C(64)
  1. L +^VEN(7.7,DA):1 I $T D ^DIE L -^VEN(7.7,DA)
  1. I $G(MOJOFLAG) S @GBL="1^"_ERR_U_$C(30)
  1. I $G(JOB),$G(MGBL)'="",$D(@MGBL@(JOB)) S @MGBL@(JOB)=ERR H 2
  1. Q
  1. ;
  1. ERRQ Q
  1. ;
  1. ; ----------------------------------------------------
  1. ;
  1. TXT(DFN) ; EP - MAKE THE DATA FILE ; MOJO CODE HAS BRANCHED OFF BEFORE THIS EP
  1. ; CONTAINS CODE TO SUPPRT VER 2.5 PRINT SERVICE
  1. N N,NAME,%,LOK,MGBL
  1. S %=$$HEADER^VENPCCU(+$G(DEFEF)) I $L(%) S @TMP@(1,"header")=% ; PATCHED BY GIS/OIT 10/15/05 ; PCC+ 2.5 PATCH 1
  1. I '$G(VER25)!($D(DEMODATA)) S N=0 F S N=$O(@TMP@(9,N)) Q:'N D ; NO NEED TO DEFINE DELIMITED POSITIONS (SS=8) IN VER 2.5
  1. . S NAME=@TMP@(9,N)
  1. . S @TMP@(8,N)=$G(@TMP@(1,NAME))
  1. . S @TMP@(8,N)=$P(@TMP@(8,N),U)
  1. . I $G(SPECHOLD(NAME))'="" S SPECHOLD(8,N)=SPECHOLD(NAME) K SPECHOLD(NAME)
  1. . Q
  1. TCP ; EP-FROM VENPCC2 ; ENTRY POINT FOR HS
  1. ; PATCHED BY GIS/OIT 11/11/07 TO PREVENT MAXSTG ERROR ON HEALTH SUMMARY
  1. N XREC,REC,REC1
  1. I $G(CFIGIEN),$G(DFN),$G(DEPTIEN)
  1. E S ERR="REQUIRED PCC+ VARIABLE IS UNDEFINED" D ERR(ERR) Q
  1. N N,SOCKET,IP,REC,ERR,%,IPA,A,B,PATH,FILE,POP,TOT,DPATH,PSTUFF,PGRP
  1. I $D(DEMODATA) S PATH=$G(^VEN(7.5,+$G(CFIGIEN),3)) ; CREATING A DEMO FILE
  1. E S PATH=$G(^VEN(7.5,+$G(CFIGIEN),1))
  1. I '$L(PATH) S ERR="MISSING PATH TO PRINT QUEUE" D ERR(ERR) Q
  1. ; S %=$G(^VEN(7.99,+$O(^VEN(7.99,"AB",+$G(DEPTIEN),0)),1)) I $L(%) S PATH=% ; STUB FOR ENTERPRISE PCC+
  1. I $D(DEMODATA) S FILE=DEMODATA_".txt" ; THIS IS A TEST DATA FILE FOR VER 2.5
  1. E S FILE=$S($G(HSFLAG):"h",$G(OGONLY):"g",1:"e")_VISIT_".txt"
  1. S REC="",TOT=0,PSTUFF=$$VNUM($G(VISIT),FILE,DEPTIEN)_";"_DUZ_";"_DUZ(2)_";"_DFN_";"_DUZ(0)_";"_$G(VENDEV)
  1. S PGRP=$$PG(DEPTIEN,FILE)
  1. I '$L(PGRP) S ERR="UNDEFINED PRINT GROUP" D ERR(ERR) Q ; IF NO PRINT GROUP IS DEFINED, STOP NOW!
  1. 25 I $G(VER25),'$D(DEMODATA) D V25 Q ; BRANCH TO VER 2.5 DATA FILE MAKER
  1. HS I $G(HSFLAG) D
  1. . S @TMP@(2,"PRINTER")=PSTUFF,@TMP@(2,"GROUP")=PGRP,LNO=0,XREC="REC"
  1. . F S LNO=$O(@TMP@(3,LNO)) Q:'LNO S NAME=@TMP@(3,LNO) D I $G(RMAX) K RMAX Q
  1. .. S LINE=$G(@TMP@(2,NAME)) S LINE=$TR(LINE,U,"")
  1. .. I LNO>1 S @XREC=@XREC_U
  1. .. S @XREC=@XREC_LINE
  1. .. I XREC="REC1" Q
  1. .. I $L(REC)>16000 S XREC="REC1",REC1="" ; SPLT ANY HS > 16000K ; PATCHED BY GIS/OIT 6/3/2008 2.6*1
  1. .. Q
  1. . Q
  1. EFOG I '$G(HSFLAG) D
  1. . S @TMP@(8,4)=PSTUFF,@TMP@(8,3)=PGRP
  1. . I $G(OGONLY) S @TMP@(8,2)="og",%=$$MRP^VENPCCU I $L(%) S @TMP@(8,3)=%
  1. . F N=1:1 Q:'$D(@TMP@(8,N)) D
  1. .. I N'=1 S REC=REC_U
  1. .. I $D(SPECHOLD(8,N)) S REC=REC_SPECHOLD(8,N) K SPECHOLD(8,N) Q
  1. .. S REC=REC_@TMP@(8,N)
  1. .. Q
  1. . Q
  1. F %=10,13,31,34,39 I REC[$C(%) S REC=$TR(REC,$C(%),"") ; STRIP OFF BAD CHARACTERS
  1. I $D(REC1) F %=10,13,31,34,39 I REC1[$C(%) S REC1=$TR(REC1,$C(%),"") ; STRIP OFF BAD CHARACTERS
  1. OPEN I $E(FILE)'="h" K REC1
  1. S POP=$$OPN^VENPCCP(PATH,FILE,"W","W REC W:$D(REC1) REC1")
  1. S TOT=TOT+1 I TOT>10 S ERR="UNABLE TO SEND FILE TO THE PRINT QUEUE" D ERR(ERR) Q
  1. I POP H 3 G OPEN
  1. I $E(FILE)="g" H 1
  1. S %=$E(FILE)
  1. I $D(DEMODATA) S MSG="Test file '"_DEMODATA_".txt' sent to TEMP folder" Q
  1. I %="e",'$G(TRT),$P($G(^VEN(7.95,+$G(DEPTIEN),2)),U,11) S FILE="tt"_VISIT_".txt",TRT=1,$P(REC,U,3)=$$MRP^VENPCCU G OPEN
  1. S MSG=$S(%="e":"Encounter form",%="h":"Health summary",%="l":"Label",1:"OutGuide")_" sent to print queue"
  1. I $G(JOB) S MGBL=$NA(^TMP("VEN MON")),@MGBL@(JOB)=MSG H 2
  1. E W !,MSG
  1. I $G(LPFLAG) S LOK=0 D LABEL(LPFLAG) K LPFLAG I LOK G OPEN ; PATCHED BY GIS/OIT 03/28/06 ; PCC+ 2.5 PATCH 4 ; LABEL CYCLE
  1. I '$G(OGFLAG)!($E(FILE)="g") K OGFLAG Q
  1. PULL S $P(REC,U,2)="og"
  1. S $P(REC,U,1)=25
  1. S FILE="g"_VISIT_".txt"
  1. S $P(REC,U,3)=$$MRP^VENPCCU
  1. S PSTUFF=$P(REC,U,4),%=+PSTUFF
  1. I % S %=$$VNUM(%,FILE,DEPTIEN)
  1. I % S $P(PSTUFF,";",1)=%,$P(REC,U,4)=PSTUFF
  1. G OPEN ; PRINT OUTGUIDE ; PATCHED BY GIS/OIT 4/15/08 ; PCC+ 2.6 PATCH 1 ; FIX OUTGUIDE PRINTING PROBLEM
  1. ;
  1. LABEL(LPFLAG) ; EP - CONFIG OUTPUT FOR LABEL PRINTER ; PCC+ 2.5 PATCH 4
  1. N LPG,LEF,TMN,HMN,X,Y,%
  1. S LPG=$P($G(^VEN(7.4,+$G(LPFLAG),0)),U) I '$L(LPG) Q
  1. S X=$G(^VEN(7.41,+$P($G(LPFLAG),U,2),0)) I '$L(X) Q
  1. S HMN=$P(X,U,2) I '$L(HMN) Q ; HEADER MNEMONIC
  1. S TMN=$P(X,U,3) I '$L(TMN) Q ; TEMPLATE MNEMONIC
  1. S $P(REC,U,2)=TMN
  1. S $P(REC,U,1)=HMN
  1. S FILE="l"_(VISIT+3000)_".txt",LOK=1
  1. S $P(REC,U,3)=LPG
  1. S PSTUFF=$P(REC,U,4),%=+PSTUFF
  1. I % S $P(PSTUFF,";",1)=(%+3000),$P(REC,U,4)=PSTUFF ; FORCE THE PRINT SERVICE TO USE THE CORRECT PRINTER
  1. Q
  1. ;
  1. V25 ; EP - FORMAT OUTPUT AND CREATE A DATA FILE FOR VER 2.5 PRINT SERVICE
  1. I $G(HSFLAG) D HS25 ; MAKE HEADER FILE
  1. I '$G(HSFLAG) D EFOG25 ; MAKE DATA FILE AND OG FILE
  1. Q
  1. ;
  1. HS25 ; EP - BUILD HEALTH SUMMARY DATA FILE
  1. N HFIEN,POP,TOT,MMF,%,CNT
  1. S @TMP@(2,"PRINTER")=PSTUFF,@TMP@(2,"GROUP")=PGRP
  1. S HFIEN=$O(^VEN(7.49,"B","hs",0)) I 'HFIEN Q
  1. S MMF="",TOT=0
  1. HSOPN25 S POP=$$OPN^VENPCCP(PATH,FILE,"W","D MMF25^VENPCC1(2)")
  1. S TOT=TOT+1
  1. I TOT>10 S ERR="UNABLE TO SEND FILE TO THE PRINT QUEUE" D ERR(ERR) Q
  1. I POP H 3 G HSOPN25 ; KEEP CYCLING UNTIL YOU CAN OPEN THE FILE
  1. D MSG25(FILE) ; TELL USER WHAT IS HAPPENING
  1. Q
  1. ;
  1. EFOG25 ; EP - BUILD EF OR OG DATA FILE FOR VER 2.5
  1. N HF,HFIEN,POP,TOT,MMF,%
  1. S @TMP@(1,"printer")=PSTUFF,@TMP@(1,"group")=PGRP
  1. I $G(OGONLY) S @TMP@(1,"template")="og",%=$$MRP^VENPCCU I $L(%) S @TMP@(1,"group")=%
  1. S MMF="",TOT=0
  1. I $E(FILE)="g" S HFIEN=$O(^VEN(7.49,"B","ef",0)) Q:'HFIEN G OPN25
  1. S HF=$P($G(^VEN(7.41,+$G(DEFEF),0)),U,2) I '$L(HF) Q
  1. S HFIEN=$O(^VEN(7.49,"B",HF,0)) I 'HFIEN Q
  1. OPN25 S POP=$$OPN^VENPCCP(PATH,FILE,"W","D MMF25^VENPCC1(1)")
  1. S TOT=TOT+1
  1. I TOT>10 S ERR="UNABLE TO SEND FILE TO THE PRINT QUEUE" D ERR(ERR) Q
  1. I POP H 3 G OPN25 ; KEEP CYCLING UNTIL YOU CAN OPEN THE FILE
  1. D MSG25(FILE) ; TELL USER WHAT IS HAPPENING
  1. I '$G(OGFLAG)!($E(FILE)="g") K OGFLAG,OGONLY K @TMP@(1) Q ; CLEANUP AND QUIT
  1. S @TMP@(1,"template")="og"
  1. S %=$$MRP^VENPCCU I $L(%) S @TMP@(1,"group")=%
  1. S FILE="g"_VISIT_".txt"
  1. S PSTUFF=@TMP@(1,"printer"),%=+PSTUFF
  1. I % S %=$$VNUM(%,FILE,DEPTIEN)
  1. I % S $P(PSTUFF,";",1)=%,@TMP@(1,"printer")=PSTUFF
  1. G OPN25 ; REPEAT THE PROCESS TO CREATE THE OUTGUIDE FILE
  1. ;
  1. MMF25(SS) ; EP - NEW WAY TO POPULATE THE DATA FILE
  1. N MMF,VAL,CNT,REC,%
  1. S MMF="",CNT=0,REC=""
  1. M1 S MMF=$O(^VEN(7.49,HFIEN,1,"B",MMF))
  1. I MMF="" W:$L(REC) !,REC W ! Q
  1. S VAL=$G(@TMP@(SS,MMF))
  1. I $D(SPECHOLD(MMF)) S VAL=SPECHOLD(MMF) K SPECHOLD(MMF)
  1. I $L(VAL) F %=10,13,30,31,34,39 I VAL[$C(%) S VAL=$TR(VAL,$C(%),"") ; STRIP OFF BAD CHARACTERS
  1. I $L(REC) S REC=REC_U
  1. S REC=REC_MMF_$C(30)_VAL
  1. F Q:$L(REC)<501 D ; DIVIDE THE FILE INTO 500 CHARACTER CHUNKS
  1. . I CNT W !
  1. . W $E(REC,1,500)
  1. . S REC=$E(REC,501,999999)
  1. . S CNT=CNT+1
  1. . Q
  1. G M1
  1. ;
  1. MSG25(FILE) ; EP - REPORT STATUS
  1. N %,MSG,MGBL
  1. S %=$E(FILE)
  1. S MSG=$S(%="e":"Encounter form",%="h":"Health summary",1:"OutGuide")_" sent to print queue"
  1. I $G(JOB) S MGBL=$NA(^TMP("VEN MON")),@MGBL@(JOB)=MSG H 2
  1. E W !,MSG
  1. Q
  1. ;
  1. ; -----------------------
  1. ;
  1. PG(DEPTIEN,FILE) ; EP-GIVEN A DATA FILE AND DEPT, RETURN THE PRINT GROUP ; USED BY PRINT DEAMON
  1. I $G(SPGRP) Q $P($G(^VEN(7.4,SPGRP,0)),U) ; DIRECT ENTRY OF PRINT GROUP (LEGACY)
  1. N TYPE,PG,%,X,Y
  1. S TYPE=$E(FILE)
  1. I TYPE="g" Q $$MRP^VENPCCU
  1. I TYPE'="h" D Q PG ; ENCOUNTER FROM
  1. . S %=$P($G(^VEN(7.95,DEPTIEN,2)),U,3),X=""
  1. . I % S X=$P($G(^VEN(7.95,DEPTIEN,2)),U,8) ; TRIAGE
  1. . I X="" S X=$P($G(^VEN(7.95,DEPTIEN,2)),U) ; STANDARD
  1. . I X="" S X=0
  1. . S PG=$P($G(^VEN(7.4,X,0)),U)
  1. . Q
  1. S %=$P($G(^VEN(7.95,DEPTIEN,2)),U,9),X="" ; HEALTH SUMMARY
  1. I % S X=% ; CLINIC OVERRIDE FOR HS PG
  1. I 'X,$P($G(^VEN(7.5,CFIGIEN,0)),U,10) Q $$MRP^VENPCCU ; ALWAYS PRINT HS IN MR
  1. I 'X S X=$P($G(^VEN(7.95,DEPTIEN,2)),U) ; USE EF PG FOR HS
  1. S PG=$P($G(^VEN(7.4,X,0)),U)
  1. Q PG
  1. ;
  1. VNUM(VISIT,FILE,DEPTIEN) ; EP - MODIFY VISIT NUMBER TO ASSURE DOCUMENT PRINTS ON THE CORRECT PRINTER
  1. I $G(VISIT),$L(FILE),$G(DEPTIEN)
  1. E Q $G(VISIT)
  1. I $E(FILE)="e",$P($G(^VEN(7.95,DEPTIEN,2)),U,3) Q (VISIT+1500)
  1. I $E(FILE)="h",'$D(HSONLY),$$PG(DEPTIEN,"e")'=$$PG(DEPTIEN,"h") Q (VISIT+1000)
  1. I $E(FILE)="g",'$D(OGONLY),$$PG(DEPTIEN,"e")'=$$PG(DEPTIEN,"g") Q (VISIT+2000)
  1. Q VISIT
  1. ;