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

VENPCCIT.m

Go to the documentation of this file.
  1. VENPCCIT ; IHS/OIT/GIS - INSTALLATION TOOLS: ADD A NEW TEMPLATE FOR VER 2.5 ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ;
  1. ;
  1. N DIC,DA,DIK,DIR,X,Y,Z,%,%Y,VER25,RXFLAG,SEP,TIEN,FLD,TMN,TNM,GGIEN,KNM,KIEN
  1. INIT S VER25=+$P($G(^VEN(7.5,$$CFG^VENPCCU,13)),U) ; PCC+ IS CONFIGURED FOR VER 2.5
  1. S SEP="----------------"
  1. S RXFLAG=0
  1. S X=$O(^PSRX("AD",9999999),-1) I X,$$FMDIFF^XLFDT(DT,X)<7 S RXFLAG=1 ; PHARMACY PKG IS IN ACTIVE USE
  1. OLD K DIR,Y
  1. S DIR(0)="S^1:Add a new template;2:Edit an existing template;3:Delete an existing template;4:Exit",DIR("A")="Your choice"
  1. D ^DIR K DIR
  1. I 'Y!(Y=4) D ^XBFMK Q
  1. I Y'=1 S TIEN=$$LKUP Q:TIEN="" S (TNM,FLD(.01))=$P($G(^VEN(7.41,TIEN,0)),U) ; GET TEMPLATE IEN AND NAME
  1. I Y=3 D DT(TIEN) G OLD ; DELETE A CLINIC
  1. I Y=2 G TEDIT ; EDIT A CLINIC
  1. NAME ; TEMPLATE NAME
  1. W !!,"Enter the NAME of the new PCC+ template."
  1. W !,"This is the name that will be seen during the check-in process."
  1. W !,"Naming conventions-> "
  1. W !?3,"If your PCC+ system is used (& will be used) in only one facility:"
  1. W !?5,"<CLINIC NAME>"
  1. W !?5,"Examples: 'PODIATRY', or 'WALKIN'"
  1. W !?3,"Otherwise, if your PCC+ system covers multiple facilities: "
  1. W !?5,"<BRIEF SITE NAME> <CLINIC NAME>"
  1. W !?5,"Examples: 'ANMC NEUROLOGY' or 'WARM SPRINGS MEDICAL'",!
  1. W !?5,"Also, if you want to edit the properties of an existing template, enter the"
  1. W !?5,"the EXACT, full name of that template now"
  1. NAME1 S DIR("?")="Name must be 3-30 uppercase letters. Numbers and spaces OK also"
  1. S DIR(0)="FO^3:30",DIR("A")="Template name" D ^DIR
  1. I Y?1."^"!(Y="") G FIN
  1. S X=$TR(Y," ","") S X=$TR(X,"(","") S X=$TR(X,")","") S X=$TR(X,"-","") I X'?3.30UN W " ??",!,DIR("?") G NAME1 ; NAME FAILED VALIDATION
  1. S (TNM,FLD(.01))=Y
  1. S Z=$O(^VEN(7.41,"B",TNM,0))
  1. I 'Z G HMN
  1. W !,"This template already exits. Try again" W !! G NAME1
  1. ;
  1. TEDIT ; EP - EDIT TEMPLATE PROPERTIES ; TIEN MUST EXIT
  1. HMN S FLD(.02)=25 ; HEADER MNEMONIC ; PATCHED BY GIS/OIT 10/15/05 ; PCC+ 2.5 PATCH 1
  1. TMN ; TEMPLATE MNEMONIC
  1. W !!,"Enter this template's mnemonic..."
  1. W !?3,"The mnemonic is 1-10 lowercase characters/numbers"
  1. W !?3,"It is the first part of this template's file name on the print server"
  1. W !?3,"For example, 'neuro' is the mnemonic for the template 'neuro_template.doc"
  1. TMN1 S DIR("?")="Name must be 1-10 lowercase letters. Imbedded numbers can be included as well."
  1. S DIR(0)="F^1:10",DIR("A")="Template mnemonic"
  1. S %=$O(^VEN(7.41,"B",FLD(.01),0))
  1. I % S DIR("B")=$P($G(^VEN(7.41,%,0)),U,3)
  1. D ^DIR
  1. I Y=U G NAME1
  1. I Y?2."^"!(Y="") G FIN
  1. I Y'?1.10LN W " ??",!,DIR("?") G TMN1 ; MNEMONIC FAILED VALIDATION
  1. S (TMN,FLD(.03))=Y
  1. S DIC="^VEN(7.41,",DLAYGO=19707.41,DIC(0)="L"
  1. S X=FLD(.01)
  1. D ^DIC I Y=-1 W !!,"Update failed!" G FIN
  1. S (DA,TIEN)=+Y
  1. S DIE=DIC,DR=".02////^S X=FLD(.02);.03////^S X=FLD(.03)"
  1. L +^VEN(7.41,TIEN):0 I D ^DIE L -^VEN(7.41,TIEN)
  1. K FLD
  1. DX ; ICD PREFERENCES ; PATCHED BY GIS/OIT 10/15/05 ; PCC+ 2.5 PATCH 1
  1. W !!,SEP," ICD PREFERENCES ",SEP
  1. DX1 W !!,"Does this form contain Dx mail merge fields (ICD preferences)"
  1. S %=1
  1. D YN^DICN I %Y?1."^" G FIN
  1. I %=2 S FLD(1.2)="@" G DXDIE
  1. DX2 W !!,"Count the number of Dx mail merge fields on this form"
  1. K DIR S DIR(0)="NO^1:60:0",DIR("A")="How many are there",DIR("B")="50"
  1. S %=$P($G(^VEN(7.41,TIEN,1)),U,2) I % S DIR("B")=%
  1. S %=$G(FLD(1.2)) I % S DIR("B")=%
  1. D ^DIR
  1. I Y=U G DX
  1. I Y?2."^" G FIN
  1. S FLD(1.2)=+Y
  1. DXDIE D DIE(TIEN)
  1. MSR ; MEASUREMENTS
  1. W !!,SEP," MEASUREMENTS ",SEP
  1. MSR1 W !!,"Does this form contain measurements"
  1. S %=1
  1. D YN^DICN
  1. I %Y=U W !!,SEP G DX
  1. I %Y?2."^" G FIN
  1. I %=2 D G MSRDIE
  1. . F %=.15,14.07,14.08 S FLD(%)="@" ; GENERAL CLEANUP
  1. . Q
  1. MSR2 W !,"Specify default measurement units ->"
  1. K DIR S DIR(0)="SO^0:NEVER METRIC;1:ALWAYS METRIC;2:METRIC UNTIL AGE 1",DIR("A")="Units",DIR("B")="NEVER METRIC"
  1. S %=$P($G(^VEN(7.41,TIEN,0)),U,15) I %'="" S DIR("B")=%
  1. I $L($G(FLD(.15))) S DIR("B")=FLD(.15)
  1. D ^DIR
  1. I Y="" G POV
  1. I Y=U G MSR1
  1. I Y?2."^" G FIN
  1. S FLD(.15)=Y
  1. MSR3 W !!,"Will the Nurse Check-in Module be used with this form"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,14)),U,7) S %=1
  1. S Z=$G(FLD(14.7)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G MSR2
  1. I %Y?2."^" G FIN
  1. S FLD(14.07)=$S(%=1:1,1:0)
  1. I %'=1 S FLD(14.08)="@" G MSRDIE
  1. MSR4 W !!,"Specify the max length of the Chief Complaint narrative allowed on this form"
  1. K DIR S DIR(0)="NO^1:240:0",DIR("A")="Maximum length",DIR("B")="240"
  1. S %=$P($G(^VEN(7.41,TIEN,14)),U,8) I % S DIR("B")=%
  1. D ^DIR
  1. I Y=U G MSR3
  1. I Y?2."^" G FIN
  1. S FLD(14.08)=Y
  1. MSRDIE D DIE(TIEN)
  1. POV ; POVS AND PROBLEMS
  1. W !!,SEP," POVS AND PROBLEMS ",SEP
  1. POV1 W !!,"Does this form contain POVs and/or Active Problems"
  1. S %=1 D YN^DICN
  1. I %Y=U W !!,SEP G MSR
  1. I %Y?2."^" G FIN
  1. I %=2 D G POVDIE
  1. . F %=1.1,2.12,5.21,2.13,5.15,5.16 S FLD(%)="@"
  1. . Q
  1. POVN ; MAX NO OF POVS ; PATCHED BY GIS/OIT 10/15/05 ; PCC+ 2.5 PATCH 1
  1. W !!,"Count the number of PROBLEM/POV mail merge fields on this form"
  1. K DIR S DIR(0)="NO^1:60:0",DIR("A")="How many are there",DIR("B")="20"
  1. S %=$P($G(^VEN(7.41,TIEN,1)),U,1) I % S DIR("B")=%
  1. S %=$G(FLD(1.1)) I % S DIR("B")=%
  1. D ^DIR
  1. I Y=U G POV1
  1. I Y?2."^" G FIN
  1. S FLD(1.1)=+Y
  1. POV2 W !!,"If the Onset Date has been stored in RPMS,",!,"want to display it with the POV/Problem"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,12) S %=1
  1. S Z=$G(FLD(2.12)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G POVN
  1. I %Y?2."^" G FIN
  1. S FLD(2.12)=$S(%=1:1,1:0)
  1. POV3 W !!,"If the Visit Control # (VCN) has been stored in RPMS,",!,"want to display it with the POV/Problem"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,5)),U,21) S %=1
  1. S Z=$G(FLD(5.21)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G POV2
  1. I %Y?2."^" G FIN
  1. S FLD(5.21)=$S(%=1:1,1:0)
  1. POV4 W !!,"Show only PROBLEMS (no POVs) in the POV/Problem list"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,13) S %=1
  1. S Z=$G(FLD(2.13)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G POV3
  1. I %Y?2."^" G FIN
  1. S FLD(2.13)=$S(%=1:1,1:0)
  1. POV5 W !!,"Want to block the display of ICD codes entered at other facilities"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,5)),U,15) S %=1
  1. S Z=$G(FLD(5.15)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G POV4
  1. I %Y?2."^" G FIN
  1. S FLD(5.15)=$S(%=1:1,1:0)
  1. POV6 K DIR S DIR("?")="You can extend the length of the provider narrative up to 80 characters"
  1. W !!,DIR("?")
  1. S DIR(0)="NO^1:80:0",DIR("A")="Maximum narrative length",DIR("B")="27"
  1. S %=$P($G(^VEN(7.41,TIEN,5)),U,16) I % S DIR("B")=%
  1. I $L($G(FLD(5.16))) S DIR("B")=FLD(5.16)
  1. D ^DIR
  1. I Y=U G POV5
  1. I Y?2."^" G FIN
  1. S FLD(5.16)=Y
  1. POVDIE D DIE(TIEN) ; ENTER FIELD DATA INTO RPMS AND CLEAN OUT FLD ARRAY
  1. RX ; PRESCRIPTIONS
  1. W !!,SEP," PRESCRIPTIONS ",SEP
  1. RX1 W !!,"Does this form contain a Prescription List"
  1. S %=1 D YN^DICN
  1. I %Y=U W !!,SEP G POV
  1. I %Y?2."^" G FIN
  1. I %=2 D G RXDIE
  1. . F %=.12,.14,2.11,2.4,2.6,2.7,2.8,2.9,14.01,14.02,14.03,14.04,14.05 S FLD(%)="@"
  1. . Q
  1. RXN ; MAX RXS ; PATCHED BY GIS/OIT 10/15/05 ; PCC+ 2.5 PATCH 1
  1. W !!,"Count the number of Rx mail merge fields on this form"
  1. K DIR S DIR(0)="NO^1:60:0",DIR("A")="How many are there",DIR("B")="15"
  1. S %=$P($G(^VEN(7.41,TIEN,2)),U,4) I % S DIR("B")=%
  1. S %=$G(FLD(2.4)) I % S DIR("B")=%
  1. D ^DIR
  1. I Y=U G RX1
  1. I Y?2."^" G FIN
  1. S FLD(2.4)=+Y
  1. RX2 W !!,"You can limit the time that a drug is displayed beyond it run-out date"
  1. K DIR S DIR(0)="NO^1:999:0",DIR("A")="Maximum display duration (days)",DIR("B")="75"
  1. S %=$P($G(^VEN(7.41,TIEN,2)),U,6) I % S DIR("B")=%
  1. I $L($G(FLD(2.6))) S DIR("B")=FLD(2.6)
  1. D ^DIR
  1. I Y=U G RXN
  1. I Y?2."^" G FIN
  1. I Y S FLD(2.6)=Y
  1. RX3 W !!,"Want to display only active prescriptions"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,8) S %=1
  1. S Z=$G(FLD(2.8)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX2
  1. I %Y?2."^" G FIN
  1. S FLD(2.8)=$S(%=1:1,1:0)
  1. RX4 W !!,"Want to hide redundant prescriptions"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,9) S %=1
  1. S Z=$G(FLD(2.9)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX3
  1. I %Y?2."^" G FIN
  1. S FLD(2.9)=$S(%=1:1,1:0)
  1. W !!,"You can now specify the max length of the RX and its components."
  1. RX5 K DIR S DIR(0)="NO^1:80:0",DIR("A")="Max length of Medication name",DIR("B")="30"
  1. S %=$P($G(^VEN(7.41,TIEN,14)),U,2) I % S DIR("B")=%
  1. I $L($G(FLD(14.02))) S DIR("B")=FLD(14.02)
  1. D ^DIR
  1. I Y=U G RX2
  1. I Y?2."^" G FIN
  1. I Y S FLD(14.02)=Y
  1. RX6 K DIR S DIR(0)="NO^1:199:0",DIR("A")="Max length of Sig",DIR("B")="40"
  1. S %=$P($G(^VEN(7.41,TIEN,14)),U,3) I % S DIR("B")=%
  1. I $L($G(FLD(14.03))) S DIR("B")=FLD(14.03)
  1. D ^DIR
  1. I Y=U G RX5
  1. I Y?2."^" G FIN
  1. I Y S FLD(14.03)=Y
  1. ; I 'RXFLAG G RX14
  1. RX8 K DIR S DIR(0)="NO^1:999:0",DIR("A")="Max length of entire prescription",DIR("B")="30"
  1. S %=$P($G(^VEN(7.41,TIEN,14)),U) I % S DIR("B")=%
  1. I $L($G(FLD(14.01))) S DIR("B")=FLD(14.01)
  1. D ^DIR
  1. I Y=U G RX6
  1. I Y?2."^" G FIN
  1. I Y S FLD(14.01)=Y
  1. RX9 W !!,"Want to hide the Rx reminder note"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,0)),U,12) S %=1
  1. S Z=$G(FLD(.12)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX8
  1. I %Y?2."^" G FIN
  1. S FLD(.12)=$S(%=1:1,1:0)
  1. RX10 W !!,"Want to show the prescribing provider"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,0)),U,14) S %=1
  1. S Z=$G(FLD(.14)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX9
  1. I %Y?2."^" G FIN
  1. S FLD(.14)=$S(%=1:1,1:0)
  1. RX11 W !!,"Want to display the Rx issue date"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,11) S %=1
  1. S Z=$G(FLD(2.11)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX10
  1. I %Y?2."^" G FIN
  1. S FLD(2.11)=$S(%=1:1,1:0)
  1. RX12 W !!,"Want to show chronic meds only"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,2)),U,7) S %=1
  1. S Z=$G(FLD(2.7)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G RX11
  1. I %Y?2."^" G FIN
  1. S FLD(2.7)=$S(%=1:1,1:0)
  1. RX13 W !!,"Want to sort the list by 'chronic' & 'incidental' Rxs"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,14)),U,5) S %=1
  1. D YN^DICN
  1. I %Y=U G RX12
  1. I %Y?2."^" G FIN
  1. S FLD(14.05)=$S(%=1:1,1:0)
  1. RXDIE D DIE(TIEN)
  1. HMR ; EP - HEALTH MAINTENANCE REMINDERS
  1. W !!,SEP," HEALTH MAINTENANCE REMINDERS ",SEP
  1. HMR1 W !!,"Does this form contain reminders"
  1. S %=1
  1. D YN^DICN
  1. I %Y=U W !!,SEP G RX
  1. I %Y?2."^" G FIN
  1. I %=2 D G HMRDIE
  1. . F %=5.01,5.02,5.03,15.01,15.02 S FLD(%)="@" ; GENERAL CLEANUP
  1. . Q
  1. HMR2 W !!,"Want to use the new surveillance list - !RECOMMENDED!"
  1. S %=1
  1. I $P($G(^VEN(7.41,TIEN,5)),U)=0 S %=2
  1. S Z=$G(FLD(5.01)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G HMR1
  1. I %Y?2."^" G FIN
  1. S FLD(5.01)=$S(%=1:1,1:0)
  1. HMR3 W !!,"When displaying reminders, hide last date & result"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,5)),U,2)=1 S %=1
  1. S Z=$G(FLD(5.02)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G HMR2
  1. I %Y?2."^" G FIN
  1. S FLD(5.02)=$S(%=1:1,1:0)
  1. HMR4 W !!,"When displaying reminders, hide forecasts if not 'due now'"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,5)),U,3)=1 S %=1
  1. S Z=$G(FLD(5.03)) I $L(Z) S %=$S(Z=1:1,1:2)
  1. D YN^DICN
  1. I %Y=U G HMR3
  1. I %Y?2."^" G FIN
  1. S FLD(5.03)=$S(%=1:1,1:0)
  1. HMR5 W !!,"You can hide 'refusals' that are old or 'stale'."
  1. K DIR S DIR(0)="NO^1:60:0"
  1. S DIR("A")="Maximum age of a refusal (months)",DIR("B")="60"
  1. S %=$P($G(^VEN(7.41,TIEN,15)),U) I % S DIR("B")=%
  1. I $L($G(FLD(15.01))) S DIR("B")=FLD(15.01)
  1. D ^DIR
  1. I Y=U G HMR4
  1. I Y?2."^" G FIN
  1. I Y S FLD(15.01)=Y
  1. HMR6 W !!,"Include patient education topics in the refusal list"
  1. S %=2
  1. I $P($G(^VEN(7.41,TIEN,15)),U,2)=1 S %=1
  1. D YN^DICN
  1. I %Y=U G HMR5
  1. I %Y?2."^" G FIN
  1. S FLD(15.02)=$S(%=1:1,1:0)
  1. HMRDIE D DIE(TIEN)
  1. G LAB^VENPCCIX ; CONTINUE IN VENPCCIX. THIS ROUTINE IS GETTING TOO LONG!!!
  1. ;
  1. FIN D ^XBFMK ; EP - CLEANUP
  1. Q
  1. ;
  1. DT(DA) ; EP - DELETE A TEMPLATE
  1. N DIC,DIK
  1. I '$D(^VEN(7.41,+$G(DA),0)) Q ; NOTHING TO DELETE
  1. W !!,"Are you sure you want to completely delete this template" S %=0
  1. D YN^DICN
  1. I %'=1 W !,"Nothing deleted..." D ^XBFMK Q
  1. S DIK="^VEN(7.41,"
  1. D ^DIK
  1. W !,"Template deleted"
  1. D ^XBFMK
  1. Q
  1. ;
  1. LKUP() ; EP - LOOK UP A PCC+ TEMPLATE
  1. N DIC,X,Y,CIEN
  1. S DIC="^VEN(7.41,"
  1. S DIC(0)="AEQM"
  1. W "PCC+ Template: "
  1. D ^DIC
  1. I Y=-1 S TIEN=""
  1. E S TIEN=+Y
  1. D ^XBFMK
  1. Q TIEN
  1. ;
  1. DIE(DA) ; EP - UPDATE FILEMAN FIELDS
  1. N DR,DIE
  1. S DIE="^VEN(7.41,"
  1. S DR="",FLD=0
  1. F S FLD=$O(FLD(FLD)) Q:'FLD D
  1. . I $L(DR) S DR=DR_";"
  1. . S DR=DR_FLD_"////^S X=FLD("_FLD_")"
  1. . Q
  1. L +^VEN(7.41,DA):0 I D ^DIE L -^VEN(7.41,DA)
  1. K FLD
  1. Q
  1. ;