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

VENPCCA.m

Go to the documentation of this file.
  1. VENPCCA ; IHS/OIT/GIS - NEW CHECK IN MODULE ;
  1. ;;2.6;PCC+;**1,3,4**;APR 03, 2012;Build 24
  1. ;
  1. ; ERROR MGMT FOR VER 2.2
  1. ; NURSE CHECK IN SUPPORTED IN 2.5
  1. ;
  1. N TMSG
  1. PATIENT ; EP-FOR LOOPING TO NEXT PATIENT
  1. S %=+$O(^TMP("VEN TASK",0)),TMSG=$G(^TMP("VEN TASK",%))
  1. I $G(PIMSDFN) D G CLINIC ; PATCHED BY GIS/OIT 6/15/06 ; PCC+ 2.5 PATCH 5
  1. . W !,"A PCC+ form will be generated for ",$P($G(^DPT(PIMSDFN,0)),U)
  1. . W !,"But first, please answer the following questions...",!
  1. . S PATIENT=PIMSDFN
  1. . Q
  1. W !!,"Patient: " I $D(PATIENT) W $P($G(^DPT(PATIENT,0)),U),"// "
  1. R X:$G(DTIME,600) I '$T Q
  1. I $G(PATIENT),X="" S X="`"_PATIENT
  1. I X=""!(X?1."^") Q
  1. I X?1."?" W !,?5,"Enter name (LAST,FIRST - no space after comma), partial name, DOB, or SSN" G PATIENT
  1. S DIC="^DPT(",DIC(0)="EQM" D ^DIC I Y=-1 G PATIENT
  1. S PATIENT=+Y K DIC
  1. S %=$P(Y,U,2) I $E(%,1,5)="DEMO," S VENDEMO=2 ; IF ITS A DEMO PATIENT, DON'T CREATE A VISIT
  1. UP I $P($G(^VEN(7.5,CFIGIEN,0)),U,8)!($G(CHECKIN)) D
  1. . I $G(HSONLY)!($G(EFONLY))!($G(OGONLY)) Q
  1. . S %=$$DATES^VENPCCMF(PATIENT) I $L(%) W !,%
  1. . I '$G(CHECKIN) W !,"Review/update patient registration information" S %=1 D YN^DICN I %'=1 Q
  1. . S UPDEM=DT D PAT^VENPCCD(PATIENT) ; UPDATE DEMOGRAPHICS
  1. . Q
  1. I $G(CHECKIN) Q
  1. CLINIC S %=$P($G(^VEN(7.5,CFIGIEN,0)),U,6) I % S Y=% G CL1 ; THIS SITE ONLY HAS 1 CLINIC - NO NEED TO ASK
  1. I $G(HSONLY) S Y=$O(^VEN(7.95,0)) G CL1 ; Y IS JUST A TEMPORARY PLACEHOLDER AT THIS TIME
  1. S DIC("A")="Clinic: " I $D(DEPTIEN) S DIC("B")=$P($G(^VEN(7.95,DEPTIEN,0)),U)
  1. S DIC("S")="I '$P($G(^(2)),U,7)" ; MUST BE AN ACTIVE DESTINATION
  1. S DIC="^VEN(7.95,",DIC(0)="AEQM" D ^DIC K DIC I Y=-1 Q:$G(CHECKIN)=-1 Q:$G(PIMSDFN) G:X=""!(X?1."^") PATIENT Q
  1. CL1 ;
  1. S DEPTIEN=+Y,CLINIC=$P($G(^VEN(7.95,DEPTIEN,0)),U,4) ; CLINIC STOP
  1. I '$D(^DIC(40.7,+CLINIC,0)) S ERR="No valid clinic entry in the DEPARTMENT file" D ERR^VENPCC1(ERR) W !!,"Internal error! Notify site manager..." Q ; DEPT MUST BE A VALID CLINIC STOP
  1. S LOC=$P($G(^VEN(7.95,DEPTIEN,2)),U,4) I LOC="" S LOC=$G(DUZ(2)) I LOC="" S ERR="Location undefined" D ERR^VENPCC1(ERR) W !!,"Internal error! Notify site manager" Q
  1. I $P($G(^VEN(7.95,+$G(DEPTIEN),2)),U,13),'$D(EFONLY) N EFONLY S EFONLY=1 ; NEVER PRINT HS
  1. SPGRP ; PATCHED BY GIS/OIT 1/15/06 ; PCC+ 2.5 PATCH 2
  1. ; CHECK FOR A SPECIAL PRINT GROUP - FOR HS ONLY, TELE TRIAGE & CHART REVIEW
  1. ; GET SPGRP = IEN, NULL OR -1 ; SPGRP OVERRIDES THE PGRP IN THE PRINT DEAMON
  1. S %=$$PGRP^VENPCC(CLINIC) I %=-1 W !,"No valid printer location defined! Request cancelled..." Q
  1. I $L(%) S SPGRP=% ; IN MOST CASES, NULL WILL BE RETURNED BECAUSE NO SPECIAL CASE EXISTS
  1. I $G(HSONLY) S PRVIEN=$G(DUZ),APPT="" G EF
  1. I $G(EHRFLAG) S VIEN=$$DUP^VENPCC(PATIENT,DEPTIEN) I 'VIEN Q ; FAILED TO LINK TO A VALID EHR VISIT!!!
  1. S VIEN=$$DUP^VENPCC(PATIENT,DEPTIEN) G PRV
  1. I VIEN N VENDEMO S VENDEMO=2
  1. E I $D(REPRINT) W !!,"This option can only be used to REPRINT forms",!,"You must use the Scheduling Package to print the original!!" H 5 Q
  1. I $P($G(^VEN(7.95,DEPTIEN,2)),U,3) S VPFLAG=1
  1. PRV S DIC("A")="Provider for this visit: "
  1. I $G(PRVIEN) S DIC("B")=$P($G(^VA(200,PRVIEN,0)),U)
  1. E S %=$P($G(^VEN(7.95,DEPTIEN,2)),U,2) I % S DIC("B")=$P($G(^VA(200,%,0)),U)
  1. S DIC=200
  1. S DIC(0)="AEQM" D ^DIC K DIC
  1. I X="" S Y=$$GP^VENPCCU W " ("_$P($G(^VA(200,+Y,0)),U)_")"
  1. I Y=-1 G:X?1."^" PATIENT Q
  1. S PRVIEN=+Y,APPT=""
  1. I $P($G(^VEN(7.95,DEPTIEN,2)),U,15) N BLOCK S BLOCK=1 G NOW
  1. APPT I $G(VPFLAG) D Q:$D(DTOUT) I $G(%Y)?1."^" G PATIENT
  1. . W !,"Does this patient have an appointment"
  1. . S %=2 D YN^DICN
  1. . S APPT=$S(%=1:1,%=2:0,1:"")
  1. . Q
  1. EF ; EP-DEFAULT EF
  1. I '$G(HSONLY),'$G(OGONLY),'$G(VPFLAG)
  1. E S DEFEF="" G HS
  1. I $G(DEFEF) S DIC("B")=$P($G(^VEN(7.41,DEFEF,0)),U)
  1. E S %=+$P($G(^VEN(7.95,DEPTIEN,2)),U,5) S DIC("B")=$P($G(^VEN(7.41,%,0)),U)
  1. S DIC("A")="Encounter form: "
  1. S DIC(0)="AEQM",DIC="^VEN(7.41,"
  1. D ^DIC K DIC
  1. I Y=-1 G:X=""!(X?1."^") PATIENT Q
  1. BEF I $P($G(^VEN(7.41,+Y,0)),U,13) W !,"This form is temporarily out of service. Use another form..." G EF ; EF HAS BEEN BLOCKED, TRY AGAIN
  1. S DEFEF=+Y
  1. I $G(EHRFLAG),$P($G(^VEN(7.41,DEFEF,14)),U,7) W !,"Warning, this form is not configured to display EHR vital signs!"
  1. I $P($G(^VEN(7.41,+Y,0)),U,16) W !," Administrative form..." S EFONLY=1,NOVISIT=1,DEFHS="" G NOW ; ADMIN FORM, NO COMPANION DOCS, NO VISIT CREATED
  1. HS ; EP - GET DEFAULT HS
  1. I $G(EFONLY)!($G(OGONLY)) S DEFHS="" G PULL
  1. S %=+$P($G(^VEN(7.95,DEPTIEN,2)),U,6) S DIC("B")=$P($G(^APCHSCTL(%,0)),U)
  1. I DIC("B")="ADULT REGULAR" S %=+$P($G(^DPT(PATIENT,0)),U,3) I % S %=(DT-%)\10000 I %<12 S DIC("B")="PEDIATRIC"
  1. S DIC("A")="Health summary type: "
  1. S DIC(0)="AEQM",DIC="^APCHSCTL("
  1. D ^DIC K DIC I Y=-1 G:X=""!(X?1."^") PATIENT Q
  1. S DEFHS=+Y
  1. PULL ; EP - PULL CHART?
  1. I $D(DEMODATA) G NOW
  1. K OGFLAG
  1. I $P($G(^VEN(7.95,+$G(DEPTIEN),2)),U,10)!('$D(^VEN(7.4,"AC"))) G NOW ; DO NOT PULL OG FOR THIS CLINIC
  1. I $G(OGONLY) S OGFLAG=1 G NOW
  1. I $P($G(^VEN(7.5,CFIGIEN,0)),U,9) D I $G(%Y)="^" K %Y G PATIENT
  1. . W !,"Print outguide/Pull chart"
  1. . S %=1 D YN^DICN
  1. . I %=1 S OGFLAG=1
  1. . Q
  1. NOW I $G(SBFLAG) G FILE ; EP - FOR FSI FRONT END
  1. D NOW^%DTC S NOW=$E(%,1,12)
  1. I $G(EHRFLAG) G VCN ; AT THIS POINT, IF THE EHR FLAG EXISTS, THEN THE VIEN MUST EXIST
  1. I $G(NCIFLAG) G:$G(VIEN) VCN I $G(NOVISIT) W !,"A valid visit must exist to use the NCI option.",!,"PCC+ can't find a valid visit, so the NCI dialog will be skipped!" K NCIFLAG
  1. I $G(NOVISIT) D G FILE ; CREATE PLACEHOLDER VISIT INFO AND VCN
  1. . S VIEN=9_$P($H,",",2)_U_PATIENT_U_NOW
  1. . S VCN=$$CHART^VENPCCU(PATIENT,DUZ(2))_".1X"
  1. . W !,"No visit created!"
  1. . Q
  1. VISIT I $G(HSONLY)!($G(VENDEMO)) D G:VIEN FILE Q ; EP - NO VISIT CREATED
  1. . S VIEN=$G(VIEN)
  1. . I 'VIEN S VIEN=$O(^AUPNVSIT("AC",PATIENT,999999999),-1) ; IF NO DUP, USE THE LAST VISIT
  1. . I 'VIEN,$G(VENDEMO)=1 W !,"Unable to create a demo form for this patient (missing visit)"
  1. . I 'VIEN W !,"This patient has no visits! Request cancelled...",!! Q
  1. . S VCN=$P($G(^AUPNVSIT(VIEN,11)),U,3)
  1. . I 'VCN S VCN=$G(^AUPNVSIT(VIEN,"VCN"))
  1. . I 'VCN S VCN=$P($$VCN^VENPCC3(VIEN,DEPTIEN),U)
  1. . I 'VCN,$G(VENDEMO)=1 W !,"Unable to create a demo form for this patient (missing VCN)"
  1. . I 'VCN W !,"This patient has no VCN! Request cancelled...",!! S VIEN=""
  1. . Q
  1. ; I $P($G(^VEN(7.5,CFIGIEN,0)),U,18) W !,"Are you sure you want to create a visit for this patient" S %=1 D YN^DICN I %'=1 K PATIENT W !,"NO VISIT CREATED! Try again..." G PATIENT ; CONFIRM VISIT
  1. S VIEN=$$VISIT^VENPCC3(PATIENT,NOW,LOC,CLINIC)
  1. I 'VIEN S ERR=$S($L(VIEN):VIEN,1:"Failed to create a visit") D ERR^VENPCC1(ERR) W !,"Internal error! Notify site manager" Q
  1. VCN S VCN=$P($G(^AUPNVSIT(+$G(VIEN),11)),U,3)
  1. I VCN="" S VCN=$G(^AUPNVSIT(+$G(VIEN),"VCN"))
  1. I VCN="" S VCN=$P($$VCN^VENPCC3(VIEN,DEPTIEN),U)
  1. I VCN'?1.N1"."1.N1.A S ERR="Patient does not appear to be registered properly at this clinic!" W !,ERR,!,"Request terminated..." Q ; VCN ERROR ; PATCHED BY GIS/OIT 2/1/06 ; PCC + VERSION 2.5, PATCH 3
  1. FILE I '$D(HSONLY),'$D(OGONLY) D ; SPECIAL DIALOG/PROCESSING IF AN ENCOUNTER FORM WILL BE PRINTED
  1. . S %=$G(^VEN(7.41,DEFEF,22)) I %'="" X ("D "_"("_PATIENT_")") ; SPECIAL CHECK IN DIALOG FOR THIS FORM
  1. . I $D(^AUPNCPG("B",PATIENT)),$L($T(OB^VENPCC3)) D OB^VENPCC3(PATIENT) ; CHECK EVERY ELIGIBLE VISIT FOR AN OPEN PREGNANCY LOOP
  1. . I $G(NCIFLAG),$L($T(MSR^VENPCCAM)) D MSR^VENPCCAM(VIEN,DEPTIEN) I $G(NCCANCEL) Q ; ASK MEASUREMENTS DURING CHECKIN FOR 2.5
  1. . I $D(VENDEMO),'$G(NCIFLAG) Q
  1. . D QUEUE(VIEN,DEPTIEN,$G(OGFLAG),$P($G(^VEN(7.95,DEPTIEN,2)),U,3),$G(UPDEM),PRVIEN) ; ADD PRV PARAM FOR 2.5
  1. . Q
  1. I $G(NCCANCEL) Q ; ABORT NURSE CHECK IN
  1. S PRV=PRVIEN,VISIT=VIEN
  1. KILL K %,%H,%I,AUPNDAYS,AUPNDOB,AUPNDOD,AUPNPAT,AUPNSEX,SEX,CLINIC,DISYS,NOW,PATIENT,PRVIEN,TYPE,VIEN,X,Y,LOC
  1. I $G(NCCANCEL) Q
  1. RUN I $G(VENDEMO) W ! W:VENDEMO=2 "Duplicate encounter! " W "No visit created"
  1. I $G(BLOCK) W !!,"PCC+ has been temporarily shut down at this clinic.",!,"You may continue to register patients, but no forms will be printed..." W !!! G PATIENT
  1. I $D(VPFLAG) S HSONLY=1 W !,"This information will be sent to the clinic..."
  1. E W !,"Submitting request for ",$S($G(OGONLY):"OutGuide",$G(EFONLY):"Encounter Form",$G(HSONLY):"Health Summary",1:"Encounter form and Health Summary..."),!
  1. TMAN I $D(NOTASK) D EN1("D") G CLEANUP
  1. S VARS=$$PACK^VENPCC,EXT=$G(EXT)
  1. D EN1("J")
  1. MON I $P($G(^VEN(7.5,+$G(CFIGIEN),0)),U,11) H 1 I $D(^TMP("VEN MON",$J)) F W *13,?79,*13,^TMP("VEN MON",$J) R %:1 I $T!('$D(^TMP("VEN MON",$J))) Q
  1. I $D(VPFLAG) K HSONLY,VPFLAG
  1. I $G(CHECKIN) S CHECKIN=+$G(VISIT)
  1. CLEANUP K VISIT,VCN,DEPTIEN,PRV,DEFEF,DEFHS,%DT,ELIG,FILE,I,PATH,TOT,SPGRP,VARS,EXT,APPT,OGFLAG
  1. I $G(NCIFLAG) K NCIFLAG Q
  1. I $G(SBFLAG)!($G(CHECKIN))!($G(REPRINT))!($G(PIMSDFN)) Q
  1. I $G(VENDEMO)=2 K VENDEMO
  1. I '$P($G(^VEN(7.5,+$G(CFIGIEN),0)),U,12) D
  1. . S %=+$O(^TMP("VEN TASK",0))
  1. . S X=$G(^TMP("VEN TASK",%))
  1. . I $L(X),X=TMSG X ("J"_" STUCK"_U_"VENPCCA") ; PRINT DEAMON MAY BE STUCK. AUTOMATICALLY RESET/RESTART IT.
  1. . Q
  1. I $G(NOTASK) Q
  1. W !!! G PATIENT
  1. ;
  1. EN1(MODE,SILENT) ; EP-UNIVERSAL ENTRY POINT FOR INITIATING PCC+
  1. I '$D(DEFHS) S DEFHS="" ; PATCHED BY GIS/OIT 7/7/05
  1. I $G(VISIT),$L($G(VCN)),$D(DEFEF),$G(DEPTIEN)
  1. E S ERR="Can't initiate data extraction process. Req'd vars missing" D ERR^VENPCC1(ERR) Q
  1. I '$D(^VA(200,+$G(PRV),0)) D
  1. . S PRV=+$P($G(^VEN(7.95,+$G(DEPTIEN),2)),U,2)
  1. . I '$D(^VA(200,PRV,0)) S PRV=+$P($G(^VEN(7.5,$$CFG^VENPCCU,0)),U,13)
  1. . Q
  1. I '$D(^VA(200,PRV,0)) S ERR="Can't initiate data extraction process. No provider specified" D ERR^VENPCC1(ERR) Q
  1. I $G(MODE)="" S MODE="D"
  1. I '$G(SILENT),$$UMSG^VENPCCP2(DEPTIEN,DEFEF,DEFHS,$G(VARS)) ; DISPLAY CURRENT ERROR STATUS
  1. X (MODE_" PRINT^VENPCC10(VISIT,VCN,DEPTIEN,PRV,DEFEF,DEFHS,$G(APPT),$G(VARS),$G(EXT))")
  1. Q
  1. ;
  1. STUCK ; EP-RESET/RESTART SYSTEM IF IT IS STUCK. NO LOSS OF FILES.
  1. N M1,M2,J
  1. S J=$O(^TMP("VEN TASK",0)) I 'J Q
  1. S M1=$G(^TMP("VEN TASK",J)) I '$L(M1) Q
  1. H 60
  1. S M2=$G(^TMP("VEN TASK",J)) I '$L(M2) Q
  1. I M1=M2 D KILLTASK^VENPCCP ; KILL OFF TASK IF GBL VAL IS UNCHANGED FOR 60 SECONDS
  1. Q
  1. ;
  1. NOVISIT ; EP-ENTRY POINT FOR GENERATING PCC+ FORMS WITHOUT CREATING A VISIT
  1. N NOVISIT S NOVISIT=1
  1. G ^VENPCC
  1. ;
  1. QUEUE(VISIT,DEPTIEN,OGFLAG,TRFLAG,UPDEM,PRVIEN) ; EP-UPDATE CHECKIN AND QUEUE FILES ; 2.5. ADD PARAMETER FOR PROVIDER
  1. QSIG ; EP - SIGNATURE EP FOR ANMC
  1. I '$D(^AUPNVSIT(+$G(VISIT),0)),'$G(NOVISIT) Q
  1. I $D(VENDEMO) Q
  1. I '$D(^VEN(7.95,+$G(DEPTIEN),0)) Q
  1. N QTYPE,MIEN,QUE,DIG,DIH,DIU,DIV,DIW,DA,DR,DIE,DIC,X,Y,D0,D,DQ,DI,TIME,DLAYGO,DFN,%,VCN,INIT
  1. I $G(NOVISIT) Q:'$G(PATIENT) S DFN=PATIENT,TIME=$$NOW^VENPCCU,VISIT="" G MRQ
  1. I VISIT[U S DFN=$P(VISIT,U,2),TIME=$P(VISIT,U,3),VISIT="" G MRQ
  1. S X=^AUPNVSIT(VISIT,0)
  1. S TIME=$$NOW^VENPCCU
  1. S DFN=$P(X,U,5),PRVIEN=$G(PRVIEN)
  1. MRQ S MIEN=$O(^VEN(7.95,"B","MEDICAL RECORDS",0)) I 'MIEN Q
  1. I $G(OGFLAG) S QTYPE="MEDICAL RECORDS" D Q1 K QTYPE
  1. S %=$P($G(^VEN(7.95,+$G(DEPTIEN),1)),U,1+$G(TRFLAG))
  1. I % S QTYPE=$P($G(^VEN(7.22,%,0)),U)
  1. I $L($G(QTYPE)) D Q1
  1. Q
  1. ;
  1. Q1 ; EP-MAKE QUEUE FILE ENTRY
  1. S DIC="^VEN(7.2,",DIC(0)="L",X=""""_TIME_"""",DLAYGO=19707.2
  1. D ^DIC I Y=-1 Q
  1. S DIE=DIC,DA=+Y,QUE=DA
  1. S DR=".03///"_QTYPE_";.04////"_$S(QTYPE="MEDICAL RECORDS":MIEN,1:+$G(DEPTIEN))_";.06////"_DUZ
  1. S DR=DR_";1.1////"_DFN_";1.2////"_VISIT_";.12////"_$P($G(^VEN(7.95,+$G(DEPTIEN),0)),U,5)_";1.4////"_$G(UPDEM)
  1. S DR=DR_";1.5////"_PRVIEN_";1.6////"_$P($G(^AUPNVSIT(+$G(VISIT),11)),U,3) ; ADD PROVIDER INFO FOR VER 2.5
  1. MOJO S %=$G(MOJOFLAG(1)) I $L(%) S DR=DR_".13///"_$E(%) ; CLASSIC, DIGIPEN, OR TABLET
  1. L +^VEN(7.2,DA):5 E Q
  1. D ^DIE L -^VEN(7.2,DA)
  1. Q
  1. ;
  1. EXTCKIN(PATIENT) ; EP-CHECK IN ENTRY POINT FOR EXRTERNAL PACKAGES WHERE PATIENT IS KNOWN.
  1. ; IF PCC+ CHECKIN IS SUCCESSFUL, VISIT IEN IS RETURNED
  1. N CFIGIEN,CHECKIN
  1. S CFIGIEN=$$CFG^VENPCCU
  1. S CHECKIN=-1
  1. D CLINIC
  1. I CHECKIN=-1 Q ""
  1. Q CHECKIN
  1. ;
  1. INIT(PRV) ; EP-RETURN THE PROVIDER'S INITIALS
  1. N X,INIT
  1. S X=$G(^VA(200,+$G(PRV),0)) I '$L(X) Q ""
  1. S INIT=$P(X,U,2) ; CHOOSE BETWEEN INITIALS AND THE FULL NAME
  1. I '$L(INIT),$L($P(X,U)) S INIT=$E($P(X,",",2))_$E(X) ; CREATE INITIALS ON THE FLY
  1. Q $E(INIT,1,3)
  1. ;