- PSOPRVW ;BIR/SAB,MHA-enter/edit/view provider ;3/10/22 16:20
- ;;7.0;OUTPATIENT PHARMACY;**11,146,153,263,268,264,398,391,450,630,545,731,743,762**;DEC 1997;Build 3
- ;
- ;Ref. to ^VA(200 supp. by IA 224
- ;Ref. to ^DIC(7 supp. by IA 491
- ;Ref. to $$NPI^XUSNPI supp. by IA 4532
- ;Ref. to XUSERNEW supp. by 10053
- ;External reference to sub-file NEW DEA #'S (#200.5321) is supported by DBIA 7000
- ;External reference to DEA NUMBERS file (#8991.9) is supported by DBIA 7002
- ;
- START W ! S DIC("A")="Select Provider: ",DIC("S")="I $D(^VA(200,+Y,""PS""))",DIC="^VA(200,",DIC(0)="AEQMZ" D ^DIC G:U[X EX G:Y<0 START K DIC S PRNO=+Y
- ;N PSOMARG,PRVNMLBL
- ;S PSOMARG=$S($G(IOM):$G(IOM)-6,1:74)
- ;W:$D(IOF) @IOF
- ;S PRVNMLBL="NAME: "_$P($G(^VA(200,PRNO,0)),"^")
- ;W !?((PSOMARG/2)-($L(PRVNMLBL)/2)),PRVNMLBL,!
- ;W @IOF,?2,"NAME: "_$P(^VA(200,PRNO,0),U) G:$$CHKP START
- ;I +$P(^VA(200,PRNO,"PS"),U,4),$P(^("PS"),U,4)'>DT W ?40,$C(7),"* * * INACTIVE AS OF ",$E($P(^("PS"),U,4),4,5),"/",$E($P(^("PS"),U,4),6,7),"/",$E($P(^("PS"),U,4),2,3)," * * *"
- ;W !?2,"INITIALS: "_$P(^VA(200,PRNO,0),U,2)
- D PRNAMDSP(PRNO)
- D DISPLAY(PRNO)
- G START
- EX K DIC,DIE,DA,DR,D0,PRNO,PRCLS,STAT,T,Y,X,L,LF,I,DIR,DIROUT,DUOUT,DTOUT,DIRUT,%,%Y,%W,%Z,C,DDH,DI,DIH,DLAYGO,DQ,X1,XMDT,XMN
- Q
- ASK ;edit providers
- K DIR,DTOUT,DUOUT,DIROUT,DIRUT,FMG,FMGO,FMGX,MSG,EXIT S EXIT=0
- W !! S DIC("A")="Select Provider: ",(DIC,DIE)=200,DIC(0)="AEQMZ" D ^DIC G:U[X EX G:Y<0 ASK S (FADA,DA)=+Y
- I '$D(^VA(200,DA,"PS")) G NPRV
- ASK1 ; Prompt for provider
- ;N PSOMARG,PRVNMLBL
- ;S PSOMARG=$S($G(IOM):$G(IOM)-6,1:74)
- ;W:$D(IOF) @IOF
- ;S PRVNMLBL="NAME: "_$P($G(^VA(200,DA,0)),"^")
- ;W !?((PSOMARG/2)-($L(PRVNMLBL)/2)),PRVNMLBL,! G:$$CHKP START
- D PRNAMDSP(DA)
- D DISPLAY(DA) G:$G(EXIT) START
- EDT W ! L +^VA(200,DA):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
- I '$T W $C(7),!!,"Provider Data is Being Edited by Another User!",! G QX
- N RTPB S RTPB=$G(^VA(200,DA,"TPB"))
- N PSOPOM S PSOPOM=$$GET1^DIQ(59.7,1,102,"I") ; JCH-PSO*7*630; Pharmacy Operating Mode=MBM or VAMC
- S DR="53.91;53.6" D ^DIE I $D(Y)!$D(DTOUT) G QX ; JCH-PSO*7*630; Prompt for PROVIDER TYPE after NON-VA
- I '$$GET1^DIQ(200,DA,53.91,"I"),$G(PSOTPBFG) G QX
- I $$GET1^DIQ(200,DA,53.91,"I") S DR="53.92R;53.93R;53.94R;53.95R"
- E S DR="53.92;53.93;53.94;53.95"
- S DR=DR_";D:X MS^PSOPRVW",DIE("NO^")="OUTOK" D ^DIE K DIE("NO^")
- I '$D(^VA(200,DA,"TPB")),$G(PSOTPBFG) G QX
- I $D(Y)!$D(DTOUT) D:$P($G(^VA(200,DA,"TPB")),U,3) G QX
- .I RTPB=""!('$P(RTPB,U,3)) S DR="53.96////"_DUZ D ^DIE
- I $P($G(^VA(200,DA,"TPB")),U,3) D
- .I RTPB=""!('$P(RTPB,U,3)) S DR="53.96////"_DUZ D ^DIE
- N PSORTPB S PSORTPB=$G(^VA(200,DA,"TPB"))
- I $P(PSORTPB,U,4)'=$P(RTPB,U,4)!($P(PSORTPB,U,5)'=$P(RTPB,U,5)) D
- .S DR="53.96////"_DUZ D ^DIE
- G:$G(PSOTPBFG) QX
- ; PSO*7*630; Move PROVIDER TYPE (53.6), DETOX/MAINTENANCE ID NUMBER to after check of PROVIDER TYPE and NON-VA PRESCRIBER
- ED1 ; Edit provider
- S DR="53.1"
- S DIE("NO^")="OUTOK" D ^DIE I $D(Y)!$D(DTOUT) G QX
- D DEAEDT^PSOPRVW1(DA)
- D VANUMEDT(DA) I $D(DTOUT) K DTOUT G QX
- S DR="53.4;53.5;D DR1^PSOPRVW"
- S DR(1,200,1)="D DR1^PSOPRVW" ;Just a place holder PSO*7.0*450
- S DIE("NO^")="OUTOK" D ^DIE K DIE("NO^") S FADA=DA D:'$D(Y) KEY
- QX K FADA,RTPB,PSORTPB L -^VA(200,DA) Q:$G(PSOTPBFG) K DR,DIC,DIQ G:+$G(VADA) ADD G ASK
- Q
- G:'$D(^VA(200,DA,"TPB")) ED1
- ADD ;add new providers (kernel 7)
- N PSDRSTR N VADA ;,PSOPX
- S PSDRSTR="53.91;53.6;S:'($$GET1^DIQ(200,DA,53.91,""I"")) Y=""@2"";53.92R;53.93R;53.94R;53.95R;D:X MS^PSOPRVW;@2;53.1;"
- W ! S VADA=$$ADD^XUSERNEW(PSDRSTR)
- S (FADA,DA)=+VADA,(DIC,DIE)="^VA(200,"
- I VADA>0,$P(VADA,U,3) D
- . D DEAEDT^PSOPRVW1(DA)
- . D VANUMEDT(DA) I $D(DTOUT) K DTOUT Q
- . K DR I $$EDITCHK^PSOPRVW(+$G(FADA)) S DR="29;8932.1;"
- . S DR=$G(DR)_"53.4;53.5;53.7;S:'X Y=""@1"";53.8;@1;53.9;.111:.116;.131:.134;.136;.141"
- . D ^DIE
- I VADA>0,$P(VADA,U,3),$P($G(^VA(200,DA,"TPB")),U) D
- .S DR="53.96////"_DUZ S DIE("NO^")="OUTOK" D ^DIE
- I VADA>0,'$P(VADA,U,3) S DIC(0)="AEQMZ" G:'$D(^VA(200,+VADA,"PS")) NPRV G:$D(^VA(200,+VADA,"PS")) ASK1
- I VADA>0 D KEY K DIK,DIC,Y,X,VADA,VA,DEA Q:$G(PSOTPBFG) K DA D EX G ADD
- Q
- NPRV W ! S DIR("A",1)=$P(^VA(200,DA,0),U)_" is NOT currently indicated as being a provider.",DIR("A")="Do you want to make "_$P(^VA(200,DA,0),U)_" a provider? (Y/N): ",DIR(0)="SA^1:YES;0:NO",DIR("B")="NO"
- S DIR("?",1)="Answer with '1' or 'Yes' if "_$P(^VA(200,DA,0),U)_" is to become a provider",DIR("?")="otherwise press return for 'No' and re-enter name." D ^DIR G:$D(DTOUT) EX
- G:'Y!($D(DIRUT))&('+$G(VADA)) ASK G:'$P(+$G(VADA),U,3)&('Y) ADD
- G EDT
- Q
- KEY I $D(^VA(200,DA,"PS")) D
- .I '$P(^VA(200,DA,"PS"),U,4)!($P(^("PS"),U,4)>DT) S PSOPDA=DA K DIC S DIC="^DIC(19.1,",DIC(0)="MZ",X="PROVIDER" D ^DIC K DIC S DA=PSOPDA K PSOPDA I +Y>0 S X=+Y D
- ..S:'$D(^VA(200,FADA,51,0)) ^VA(200,FADA,51,0)=U_$P(^DD(200,51,0),U,2)_"^^"
- ..S DIC="^VA(200,"_FADA_",51,",DIC(0)="LM",DIC("DR")="1////"_$S($G(DUZ):DUZ,1:"")_";2///"_DT,DLAYGO=200.051,DINUM=X,DA(1)=FADA
- ..L +^VA(200,FADA):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) K DD,DO D FILE^DICN L -^VA(200,FADA) K DIC,DR,X,Y
- Q
- MS ;
- W !!,$C(7),"This provider will not be selectable during TPB medication order entry!!",!
- Q
- DR1 ;Added for processing of JUMP correctly PSO*7.0*450
- ; PSO*7*630; Use PROVIDER TYPE that was filed into $P(^VA(200,DA,"PS"),U,6), not X. The last field has been re-requenced, so can't rely on local X at this point.
- N PSOPX S PSOPX=$$GET1^DIQ(200,+$G(DA),53.6,"I")
- I PSOPX'?1N!(PSOPX'>0)!(PSOPX'<6) Q
- I $$EDITCHK(+$G(DA)) D Q ; PROVIDER TYPE="C&A"or"FEE BASIS" -OR- NON-VA PRESCRIBER="YES"
- .N TMPDR S TMPDR="D DR1^PSOPRVW;S Y=""@1"";53.1;53.3;53.4;53.5;@1;29;8932.1;53.7;"
- .S (DR,DR(1),DR(1,200,1))=TMPDR_"I 'X S Y=""@2"";53.8;@2;53.9;.111:.116;.131:.134;.136;.137;.138;.141" ;_";53.1;53.3:53.5"
- S (DR,DR(1),DR(1,200,1))="D DR1^PSOPRVW;S Y=""@1"";53.1;53.3;53.4;53.5;@1;53.7;I 'X S Y=""@2"";53.8;@2;53.9;.111:.116;.131:.134;.136;.137;.138;.141"
- Q
- CHKP(ROWPAD) ; Check for End Of Page
- N X,Y,DTOUT,DUOUT,DIRUT,DIR,RESPONSE S RESPONSE=0
- S:'$G(ROWPAD) ROWPAD=6
- I $Y>(IOSL-ROWPAD) S DIR(0)="E" D ^DIR S:$D(DIRUT) RESPONSE=1 W @IOF D PRNAMDSP(PRNO)
- Q RESPONSE
- VANUMEDT(DA) ; -- Code used to add/edit/delete the VA Number
- N ACNT,DIE,DIR,DR,X,Y
- VANUMEDC ; -- Loop Continuation Point
- S DIR(0)="200,53.3" D ^DIR
- I $G(X)="^" S DTOUT=1 Q
- I $G(X)["^" W !,$C(7)," No Jumping allowed??" G VANUMEDC
- I $G(X)="@" D Q
- . S DIR("A")="DO YOU STILL WANT TO DELETE THIS VA NUMBER"
- . S ACNT=0
- . S ACNT=ACNT+1,DIR("A",ACNT)="Removing the VA number does not affect previously written prescriptions."
- . I '$$NPDEACNT^PSOPRVW1(DA) D
- .. S ACNT=ACNT+1,DIR("A",ACNT)="There are no DEA#'s on file for this provider. The provider will no"
- .. S ACNT=ACNT+1,DIR("A",ACNT)="longer be able to prescribe controlled substances at the VA."
- . S ACNT=ACNT+1,DIR("A",ACNT)=" "
- . S DIR(0)="Y" D ^DIR
- . I Y=1 S DIE="^VA(200,",DR="53.3///@" D ^DIE Q
- ;S DIE="^VA(200,",DR="53.3////"_X D ^DIE
- N FDA S FDA(200,DA_",",53.3)=X D FILE^DIE("","FDA","MSGROOT")
- Q
- ;
- EDITCHK(PSOPRDA) ; Check fields to enable editing of DETOX NUMBER , EXPIRATION DATE , SERVICE/SECTION (29), PERSON CLASS (8932.1), SCHEDULES
- ; INPUT: PSOPRDA = Provider DUZ
- N PROVTYP K EDCHKRET S EDCHKRET="000"
- I '$L($$GET1^DIQ(200,PSOPRDA,.01)) Q ""
- I $$POM="MBM" S $E(EDCHKRET)=1
- I $$GET1^DIQ(200,PSOPRDA,53.91,"I") S $E(EDCHKRET,2)=1
- S PROVTYP=$$GET1^DIQ(200,PSOPRDA,53.6,"I")
- I PROVTYP=3!(PROVTYP=4) S $E(EDCHKRET,3)=1
- Q EDCHKRET
- ;
- DISPLAY(PRNO) ; Display Provider Info from NEW PERSON file (#200)
- ; Input: PRNO - Provider IEN from NEW PERSON file (#200)
- N PSAR,PSDATA S EXIT=0
- W ?2,"NAME: "_$P(^VA(200,PRNO,0),U)
- D GETS^DIQ(200,PRNO,53.4,"IE","PSINACT")
- S PSINACTE=$G(PSINACT(200,PRNO_",",53.4,"E"))
- S PSINACTI=$G(PSINACT(200,PRNO_",",53.4,"I"))
- W !?2,"INITIALS: "_$P(^VA(200,PRNO,0),"^",2) I PSINACTI D
- .I PSINACTI>DT W ?40,"INACTIVE DATE: ",PSINACTE
- .I PSINACTI'>DT W ?40,$C(7),"*** INACTIVE AS OF ",PSINACTE," ***"
- N NPI S NPI=$P($$NPI^XUSNPI("Individual_ID",PRNO),U) S NPI=$S(NPI>0:+NPI,1:"")
- D GETS^DIQ(200,PRNO,"53.91;53.92;53.93;53.94;53.95;53.96","E","PSAR")
- N PSLINE D LINEP(PRNO,.PSAR,53.91,,53.92),LINEP(PRNO,.PSAR,53.93,,53.95),LINEP(PRNO,.PSAR,53.94),LINEP(PRNO,.PSAR,53.96)
- D GETS^DIQ(200,PRNO,"29;53.1;53.3;53.4;53.5;53.6;53.7;53.8;53.9;55.1;55.2;55.3;55.4;55.5;55.6;.111;.112;.113;.114;.115;.116;.131;.132;.133;.134;.136;.137;.138;.141","E","PSAR")
- ; Don't print lines with no Data
- N PSLINE D LINEP(PRNO,.PSAR,53.1) ; "Authorized to Write Med Orders"
- ;
- ; PSO*7*545 - Multiple DEA Enhancements
- N NPDEAIEN,DNDEAIEN,EXIT
- W ! G:$$CHKP START
- N SET,SETARRAY,LINE S SET=0
- S NPDEAIEN=0 F S NPDEAIEN=$O(^VA(200,PRNO,"PS4",NPDEAIEN)) Q:'+NPDEAIEN D
- . N PSODOJE
- . S DNDEAIEN=$P(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,3) Q:DNDEAIEN=""
- . S PSODOJE=$G(^XTV(8991.9,DNDEAIEN,0)) Q:PSODOJE=""
- . S SET=SET+1,LINE=0
- . S LINE=LINE+1,SETARRAY(SET,LINE)="DEA NUMBER: "_$P(PSODOJE,U,1)
- . S:$P(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,2)'="" SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_"-"_$P(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,2)
- . S LINE=LINE+1,SETARRAY(SET,LINE)="DEA EXPIRATION DATE: " S T=+$P(^XTV(8991.9,DNDEAIEN,0),U,4) S:T SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_$$FMTE^XLFDT(T)
- . S LINE=LINE+1,SETARRAY(SET,LINE)=" USE FOR INPATIENT ORDERS: " S T=+$P(^XTV(8991.9,DNDEAIEN,0),U,6) S SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_$S(T:"YES",1:"NO")
- . ;P731 detox/x-waiver removal
- . ;S:$P(^XTV(8991.9,DNDEAIEN,0),U,3)'="" LINE=LINE+1,SETARRAY(SET,LINE)=" DETOX NUMBER: "_$P(^XTV(8991.9,DNDEAIEN,0),U,3)
- . N SCHNODE S SCHNODE=$G(^XTV(8991.9,DNDEAIEN,2)) D:SCHNODE'=""
- .. I $$GET1^DIQ(8991.9,DNDEAIEN,.07)="INSTITUTIONAL" S SCHNODE=$G(^VA(200,PRNO,"PS3"))
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE II NARCOTIC: "_$S($P(SCHNODE,U,1):"YES",1:"NO")
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE II NON-NARCOTIC: "_$S($P(SCHNODE,U,2):"YES",1:"NO")
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE III NARCOTIC: "_$S($P(SCHNODE,U,3):"YES",1:"NO")
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE III NON-NARCOTIC: "_$S($P(SCHNODE,U,4):"YES",1:"NO")
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE IV: "_$S($P(SCHNODE,U,5):"YES",1:"NO")
- .. S LINE=LINE+1,SETARRAY(SET,LINE)=" SCHEDULE V: "_$S($P(SCHNODE,U,6):"YES",1:"NO")
- . S:'$D(SETARRAY(SET,10)) SETARRAY(SET,10)=""
- ;
- ;Print DEA data
- ;PSO*7*762 change to CHKP(12)
- S EXIT=0
- F SET=1:2:$O(SETARRAY(100),-1) Q:($G(EXIT)=1) D
- . W ! I $$CHKP(12) S EXIT=1 Q
- . F LINE=1:1:10 Q:EXIT D
- .. Q:'$D(SETARRAY(SET)) ; Should never happen - IEN in 200.5321 doesn't exist in 8991.9
- .. W SETARRAY(SET,LINE),?40,$G(SETARRAY(SET+1,LINE)),!
- .. I SETARRAY(SET,LINE)="" I $$CHKP(12) S EXIT=1 Q
- K SETARRAY,SET,LINE
- Q:EXIT=1 W ! I $$CHKP(20) S EXIT=1 Q
- ;
- D LINEP(PRNO,.PSAR,53.3,,53.5) I $$CHKP S EXIT=1 Q ; VA# and Provider Class
- N HASVANO
- S HASVANO=$$DEA^XUSER(1,PRNO)
- I HASVANO'="",HASVANO=$$GET1^DIQ(200,PRNO,53.3,"I") D SKED200
- D LINEP(PRNO,.PSAR,53.6,,,$S($L($G(NPI)):"NPI",1:""),,,$S($L($G(NPI)):NPI,1:"")) I $$CHKP S EXIT=1 Q ; Provider Type
- D LINEP(PRNO,.PSAR,53.7,,53.8) I $$CHKP S EXIT=1 Q ; Cosigners
- D LINEP(PRNO,.PSAR,53.9) I $$CHKP S EXIT=1 Q
- W !?2,"SYNONYM(S): "_$S($P($G(^VA(200,PRNO,.1)),U,4)]"":$P(^(.1),U,4)_",",1:"")_$S($P(^(0),U,2)]"":" "_$P(^(0),U,2),1:"") I $$CHKP S EXIT=1 Q
- W !?2,"SERVICE/SECTION: "_$G(PSAR(200,PRNO_",",29,"E")) I $$CHKP S EXIT=1 Q
- W ! D LINEP(PRNO,.PSAR,.111,,.112),LINEP(PRNO,.PSAR,.113,,.114),LINEP(PRNO,.PSAR,.115,,.116) I $$CHKP S EXIT=1 Q
- D LINEP(PRNO,.PSAR,.131,,.132),LINEP(PRNO,.PSAR,.133,,.134),LINEP(PRNO,.PSAR,.136,,.137),LINEP(PRNO,.PSAR,.138,,.141)
- K DIC,Y
- Q
- SKED200 ;
- N SKED200 S SKED200=$G(^VA(200,PRNO,"PS3")) D:SKED200'=""
- . W !," SCHEDULE II NARCOTIC: "_$S($P(SKED200,U,1):"YES",1:"NO")
- . W !," SCHEDULE II NON-NARCOTIC: "_$S($P(SKED200,U,2):"YES",1:"NO")
- . W !," SCHEDULE III NARCOTIC: "_$S($P(SKED200,U,3):"YES",1:"NO")
- . W !," SCHEDULE III NON-NARCOTIC: "_$S($P(SKED200,U,4):"YES",1:"NO")
- . W !," SCHEDULE IV: "_$S($P(SKED200,U,5):"YES",1:"NO")
- . W !," SCHEDULE V: "_$S($P(SKED200,U,6):"YES",1:"NO")
- . W !,""
- Q
- LINEP(DA,PSAR,F1,L1,F2,L2,DSPNUL,V1,V2) ; Print Line
- ; Input: DA - Provider IEN from NEW PERSON file (#200). (required)
- ; PSAR - Array returned from GETS^DIQ(200,DA. (required)
- ; F1 - Field number from NEW PERSON file (#200) to display in left column. (required)
- ; L1 - Label text to display with F1 field. (optional-label from ^DD(200 will be used if not passed).
- ; F2 - Field number from NEW PERSON file (#200) to display in right column. (optional)
- ; L2 - Label text to display with F2 field. (optional-label from ^DD(200 will be used if not passed).
- ; DSPNUL - Display Null data - 1:Only applies to first column/field, 2:Only applies to second column/field, 3: Both fields
- ; V1 - Constant value to be displayed with label 1
- ; V2 - Constant value to be displayed with label 2
- N PSDATA1,PSDATA2,LB1,LB2
- S PSDATA1="",PSDATA2="",LB1=$G(L1),LB2=$G(L2),DSPNUL=$G(DSPNUL),F1=$G(F1),F2=$G(F2),V1=$G(V1),V2=$G(V2)
- I $L(F1) S PSDATA1=$G(PSAR(200,DA_",",F1,"E"))
- I $L(F2) S PSDATA2=$G(PSAR(200,DA_",",F2,"E")) ; Get values from New Person file
- I $L(V1) S PSDATA1=V1
- I $L(V2) S PSDATA2=V2
- I '$G(DSPNUL) Q:'$L(PSDATA1_PSDATA2) ; display null labels?
- I '$L(LB1) D FIELD^DID(200,F1,,"LABEL","LABEL","ERR") S LB1=$S($L(LABEL("LABEL")):LABEL("LABEL"),1:"NO LABEL")
- Q:'$L(LB1)
- W !
- I '$L(LB2) I $L(F2) D FIELD^DID(200,F2,,"LABEL","LABEL","ERR") S LB2=$S($L(LABEL("LABEL")):LABEL("LABEL"),1:"NO LABEL")
- I $L(PSDATA1)!(DSPNUL=1)!(DSPNUL=3) W ?2,LB1_": ",PSDATA1
- I $L(PSDATA2)!(DSPNUL=2)!(DSPNUL=3) W ?40,LB2_": ",PSDATA2
- Q
- ;
- POM() ; Pharmacy Operating Mode
- N POM S POM=$$GET1^DIQ(59.7,1,102,"I")
- Q POM
- ;
- PRNAMDSP(PRNO) ; Display provider name and label
- N PSOMARG,PRVNMLBL
- S PSOMARG=$S($G(IOM):$G(IOM)-6,1:74)
- W:$D(IOF) @IOF
- S PRVNMLBL="NAME: "_$P($G(^VA(200,PRNO,0)),"^")
- W !?((PSOMARG/2)-($L(PRVNMLBL)/2)),PRVNMLBL,!
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOPRVW 14364 printed Feb 18, 2025@23:59:33 Page 2
- PSOPRVW ;BIR/SAB,MHA-enter/edit/view provider ;3/10/22 16:20
- +1 ;;7.0;OUTPATIENT PHARMACY;**11,146,153,263,268,264,398,391,450,630,545,731,743,762**;DEC 1997;Build 3
- +2 ;
- +3 ;Ref. to ^VA(200 supp. by IA 224
- +4 ;Ref. to ^DIC(7 supp. by IA 491
- +5 ;Ref. to $$NPI^XUSNPI supp. by IA 4532
- +6 ;Ref. to XUSERNEW supp. by 10053
- +7 ;External reference to sub-file NEW DEA #'S (#200.5321) is supported by DBIA 7000
- +8 ;External reference to DEA NUMBERS file (#8991.9) is supported by DBIA 7002
- +9 ;
- START WRITE !
- SET DIC("A")="Select Provider: "
- SET DIC("S")="I $D(^VA(200,+Y,""PS""))"
- SET DIC="^VA(200,"
- SET DIC(0)="AEQMZ"
- DO ^DIC
- if U[X
- GOTO EX
- if Y<0
- GOTO START
- KILL DIC
- SET PRNO=+Y
- +1 ;N PSOMARG,PRVNMLBL
- +2 ;S PSOMARG=$S($G(IOM):$G(IOM)-6,1:74)
- +3 ;W:$D(IOF) @IOF
- +4 ;S PRVNMLBL="NAME: "_$P($G(^VA(200,PRNO,0)),"^")
- +5 ;W !?((PSOMARG/2)-($L(PRVNMLBL)/2)),PRVNMLBL,!
- +6 ;W @IOF,?2,"NAME: "_$P(^VA(200,PRNO,0),U) G:$$CHKP START
- +7 ;I +$P(^VA(200,PRNO,"PS"),U,4),$P(^("PS"),U,4)'>DT W ?40,$C(7),"* * * INACTIVE AS OF ",$E($P(^("PS"),U,4),4,5),"/",$E($P(^("PS"),U,4),6,7),"/",$E($P(^("PS"),U,4),2,3)," * * *"
- +8 ;W !?2,"INITIALS: "_$P(^VA(200,PRNO,0),U,2)
- +9 DO PRNAMDSP(PRNO)
- +10 DO DISPLAY(PRNO)
- +11 GOTO START
- EX KILL DIC,DIE,DA,DR,D0,PRNO,PRCLS,STAT,T,Y,X,L,LF,I,DIR,DIROUT,DUOUT,DTOUT,DIRUT,%,%Y,%W,%Z,C,DDH,DI,DIH,DLAYGO,DQ,X1,XMDT,XMN
- +1 QUIT
- ASK ;edit providers
- +1 KILL DIR,DTOUT,DUOUT,DIROUT,DIRUT,FMG,FMGO,FMGX,MSG,EXIT
- SET EXIT=0
- +2 WRITE !!
- SET DIC("A")="Select Provider: "
- SET (DIC,DIE)=200
- SET DIC(0)="AEQMZ"
- DO ^DIC
- if U[X
- GOTO EX
- if Y<0
- GOTO ASK
- SET (FADA,DA)=+Y
- +3 IF '$DATA(^VA(200,DA,"PS"))
- GOTO NPRV
- ASK1 ; Prompt for provider
- +1 ;N PSOMARG,PRVNMLBL
- +2 ;S PSOMARG=$S($G(IOM):$G(IOM)-6,1:74)
- +3 ;W:$D(IOF) @IOF
- +4 ;S PRVNMLBL="NAME: "_$P($G(^VA(200,DA,0)),"^")
- +5 ;W !?((PSOMARG/2)-($L(PRVNMLBL)/2)),PRVNMLBL,! G:$$CHKP START
- +6 DO PRNAMDSP(DA)
- +7 DO DISPLAY(DA)
- if $GET(EXIT)
- GOTO START
- EDT WRITE !
- LOCK +^VA(200,DA):$SELECT(+$GET(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
- +1 IF '$TEST
- WRITE $CHAR(7),!!,"Provider Data is Being Edited by Another User!",!
- GOTO QX
- +2 NEW RTPB
- SET RTPB=$GET(^VA(200,DA,"TPB"))
- +3 ; JCH-PSO*7*630; Pharmacy Operating Mode=MBM or VAMC
- NEW PSOPOM
- SET PSOPOM=$$GET1^DIQ(59.7,1,102,"I")
- +4 ; JCH-PSO*7*630; Prompt for PROVIDER TYPE after NON-VA
- SET DR="53.91;53.6"
- DO ^DIE
- IF $DATA(Y)!$DATA(DTOUT)
- GOTO QX
- +5 IF '$$GET1^DIQ(200,DA,53.91,"I")
- IF $GET(PSOTPBFG)
- GOTO QX
- +6 IF $$GET1^DIQ(200,DA,53.91,"I")
- SET DR="53.92R;53.93R;53.94R;53.95R"
- +7 IF '$TEST
- SET DR="53.92;53.93;53.94;53.95"
- +8 SET DR=DR_";D:X MS^PSOPRVW"
- SET DIE("NO^")="OUTOK"
- DO ^DIE
- KILL DIE("NO^")
- +9 IF '$DATA(^VA(200,DA,"TPB"))
- IF $GET(PSOTPBFG)
- GOTO QX
- +10 IF $DATA(Y)!$DATA(DTOUT)
- if $PIECE($GET(^VA(200,DA,"TPB")),U,3)
- Begin DoDot:1
- +11 IF RTPB=""!('$PIECE(RTPB,U,3))
- SET DR="53.96////"_DUZ
- DO ^DIE
- End DoDot:1
- GOTO QX
- +12 IF $PIECE($GET(^VA(200,DA,"TPB")),U,3)
- Begin DoDot:1
- +13 IF RTPB=""!('$PIECE(RTPB,U,3))
- SET DR="53.96////"_DUZ
- DO ^DIE
- End DoDot:1
- +14 NEW PSORTPB
- SET PSORTPB=$GET(^VA(200,DA,"TPB"))
- +15 IF $PIECE(PSORTPB,U,4)'=$PIECE(RTPB,U,4)!($PIECE(PSORTPB,U,5)'=$PIECE(RTPB,U,5))
- Begin DoDot:1
- +16 SET DR="53.96////"_DUZ
- DO ^DIE
- End DoDot:1
- +17 if $GET(PSOTPBFG)
- GOTO QX
- +18 ; PSO*7*630; Move PROVIDER TYPE (53.6), DETOX/MAINTENANCE ID NUMBER to after check of PROVIDER TYPE and NON-VA PRESCRIBER
- ED1 ; Edit provider
- +1 SET DR="53.1"
- +2 SET DIE("NO^")="OUTOK"
- DO ^DIE
- IF $DATA(Y)!$DATA(DTOUT)
- GOTO QX
- +3 DO DEAEDT^PSOPRVW1(DA)
- +4 DO VANUMEDT(DA)
- IF $DATA(DTOUT)
- KILL DTOUT
- GOTO QX
- +5 SET DR="53.4;53.5;D DR1^PSOPRVW"
- +6 ;Just a place holder PSO*7.0*450
- SET DR(1,200,1)="D DR1^PSOPRVW"
- +7 SET DIE("NO^")="OUTOK"
- DO ^DIE
- KILL DIE("NO^")
- SET FADA=DA
- if '$DATA(Y)
- DO KEY
- QX KILL FADA,RTPB,PSORTPB
- LOCK -^VA(200,DA)
- if $GET(PSOTPBFG)
- QUIT
- KILL DR,DIC,DIQ
- if +$GET(VADA)
- GOTO ADD
- GOTO ASK
- +1 QUIT
- +2 if '$DATA(^VA(200,DA,"TPB"))
- GOTO ED1
- ADD ;add new providers (kernel 7)
- +1 ;,PSOPX
- NEW PSDRSTR
- NEW VADA
- +2 SET PSDRSTR="53.91;53.6;S:'($$GET1^DIQ(200,DA,53.91,""I"")) Y=""@2"";53.92R;53.93R;53.94R;53.95R;D:X MS^PSOPRVW;@2;53.1;"
- +3 WRITE !
- SET VADA=$$ADD^XUSERNEW(PSDRSTR)
- +4 SET (FADA,DA)=+VADA
- SET (DIC,DIE)="^VA(200,"
- +5 IF VADA>0
- IF $PIECE(VADA,U,3)
- Begin DoDot:1
- +6 DO DEAEDT^PSOPRVW1(DA)
- +7 DO VANUMEDT(DA)
- IF $DATA(DTOUT)
- KILL DTOUT
- QUIT
- +8 KILL DR
- IF $$EDITCHK^PSOPRVW(+$GET(FADA))
- SET DR="29;8932.1;"
- +9 SET DR=$GET(DR)_"53.4;53.5;53.7;S:'X Y=""@1"";53.8;@1;53.9;.111:.116;.131:.134;.136;.141"
- +10 DO ^DIE
- End DoDot:1
- +11 IF VADA>0
- IF $PIECE(VADA,U,3)
- IF $PIECE($GET(^VA(200,DA,"TPB")),U)
- Begin DoDot:1
- +12 SET DR="53.96////"_DUZ
- SET DIE("NO^")="OUTOK"
- DO ^DIE
- End DoDot:1
- +13 IF VADA>0
- IF '$PIECE(VADA,U,3)
- SET DIC(0)="AEQMZ"
- if '$DATA(^VA(200,+VADA,"PS"))
- GOTO NPRV
- if $DATA(^VA(200,+VADA,"PS"))
- GOTO ASK1
- +14 IF VADA>0
- DO KEY
- KILL DIK,DIC,Y,X,VADA,VA,DEA
- if $GET(PSOTPBFG)
- QUIT
- KILL DA
- DO EX
- GOTO ADD
- +15 QUIT
- NPRV WRITE !
- SET DIR("A",1)=$PIECE(^VA(200,DA,0),U)_" is NOT currently indicated as being a provider."
- SET DIR("A")="Do you want to make "_$PIECE(^VA(200,DA,0),U)_" a provider? (Y/N): "
- SET DIR(0)="SA^1:YES;0:NO"
- SET DIR("B")="NO"
- +1 SET DIR("?",1)="Answer with '1' or 'Yes' if "_$PIECE(^VA(200,DA,0),U)_" is to become a provider"
- SET DIR("?")="otherwise press return for 'No' and re-enter name."
- DO ^DIR
- if $DATA(DTOUT)
- GOTO EX
- +2 if 'Y!($DATA(DIRUT))&('+$GET(VADA))
- GOTO ASK
- if '$PIECE(+$GET(VADA),U,3)&('Y)
- GOTO ADD
- +3 GOTO EDT
- +4 QUIT
- KEY IF $DATA(^VA(200,DA,"PS"))
- Begin DoDot:1
- +1 IF '$PIECE(^VA(200,DA,"PS"),U,4)!($PIECE(^("PS"),U,4)>DT)
- SET PSOPDA=DA
- KILL DIC
- SET DIC="^DIC(19.1,"
- SET DIC(0)="MZ"
- SET X="PROVIDER"
- DO ^DIC
- KILL DIC
- SET DA=PSOPDA
- KILL PSOPDA
- IF +Y>0
- SET X=+Y
- Begin DoDot:2
- +2 if '$DATA(^VA(200,FADA,51,0))
- SET ^VA(200,FADA,51,0)=U_$PIECE(^DD(200,51,0),U,2)_"^^"
- +3 SET DIC="^VA(200,"_FADA_",51,"
- SET DIC(0)="LM"
- SET DIC("DR")="1////"_$SELECT($GET(DUZ):DUZ,1:"")_";2///"_DT
- SET DLAYGO=200.051
- SET DINUM=X
- SET DA(1)=FADA
- +4 LOCK +^VA(200,FADA):$SELECT(+$GET(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
- KILL DD,DO
- DO FILE^DICN
- LOCK -^VA(200,FADA)
- KILL DIC,DR,X,Y
- End DoDot:2
- End DoDot:1
- +5 QUIT
- MS ;
- +1 WRITE !!,$CHAR(7),"This provider will not be selectable during TPB medication order entry!!",!
- +2 QUIT
- DR1 ;Added for processing of JUMP correctly PSO*7.0*450
- +1 ; PSO*7*630; Use PROVIDER TYPE that was filed into $P(^VA(200,DA,"PS"),U,6), not X. The last field has been re-requenced, so can't rely on local X at this point.
- +2 NEW PSOPX
- SET PSOPX=$$GET1^DIQ(200,+$GET(DA),53.6,"I")
- +3 IF PSOPX'?1N!(PSOPX'>0)!(PSOPX'<6)
- QUIT
- +4 ; PROVIDER TYPE="C&A"or"FEE BASIS" -OR- NON-VA PRESCRIBER="YES"
- IF $$EDITCHK(+$GET(DA))
- Begin DoDot:1
- +5 NEW TMPDR
- SET TMPDR="D DR1^PSOPRVW;S Y=""@1"";53.1;53.3;53.4;53.5;@1;29;8932.1;53.7;"
- +6 ;_";53.1;53.3:53.5"
- SET (DR,DR(1),DR(1,200,1))=TMPDR_"I 'X S Y=""@2"";53.8;@2;53.9;.111:.116;.131:.134;.136;.137;.138;.141"
- End DoDot:1
- QUIT
- +7 SET (DR,DR(1),DR(1,200,1))="D DR1^PSOPRVW;S Y=""@1"";53.1;53.3;53.4;53.5;@1;53.7;I 'X S Y=""@2"";53.8;@2;53.9;.111:.116;.131:.134;.136;.137;.138;.141"
- +8 QUIT
- CHKP(ROWPAD) ; Check for End Of Page
- +1 NEW X,Y,DTOUT,DUOUT,DIRUT,DIR,RESPONSE
- SET RESPONSE=0
- +2 if '$GET(ROWPAD)
- SET ROWPAD=6
- +3 IF $Y>(IOSL-ROWPAD)
- SET DIR(0)="E"
- DO ^DIR
- if $DATA(DIRUT)
- SET RESPONSE=1
- WRITE @IOF
- DO PRNAMDSP(PRNO)
- +4 QUIT RESPONSE
- VANUMEDT(DA) ; -- Code used to add/edit/delete the VA Number
- +1 NEW ACNT,DIE,DIR,DR,X,Y
- VANUMEDC ; -- Loop Continuation Point
- +1 SET DIR(0)="200,53.3"
- DO ^DIR
- +2 IF $GET(X)="^"
- SET DTOUT=1
- QUIT
- +3 IF $GET(X)["^"
- WRITE !,$CHAR(7)," No Jumping allowed??"
- GOTO VANUMEDC
- +4 IF $GET(X)="@"
- Begin DoDot:1
- +5 SET DIR("A")="DO YOU STILL WANT TO DELETE THIS VA NUMBER"
- +6 SET ACNT=0
- +7 SET ACNT=ACNT+1
- SET DIR("A",ACNT)="Removing the VA number does not affect previously written prescriptions."
- +8 IF '$$NPDEACNT^PSOPRVW1(DA)
- Begin DoDot:2
- +9 SET ACNT=ACNT+1
- SET DIR("A",ACNT)="There are no DEA#'s on file for this provider. The provider will no"
- +10 SET ACNT=ACNT+1
- SET DIR("A",ACNT)="longer be able to prescribe controlled substances at the VA."
- End DoDot:2
- +11 SET ACNT=ACNT+1
- SET DIR("A",ACNT)=" "
- +12 SET DIR(0)="Y"
- DO ^DIR
- +13 IF Y=1
- SET DIE="^VA(200,"
- SET DR="53.3///@"
- DO ^DIE
- QUIT
- End DoDot:1
- QUIT
- +14 ;S DIE="^VA(200,",DR="53.3////"_X D ^DIE
- +15 NEW FDA
- SET FDA(200,DA_",",53.3)=X
- DO FILE^DIE("","FDA","MSGROOT")
- +16 QUIT
- +17 ;
- EDITCHK(PSOPRDA) ; Check fields to enable editing of DETOX NUMBER , EXPIRATION DATE , SERVICE/SECTION (29), PERSON CLASS (8932.1), SCHEDULES
- +1 ; INPUT: PSOPRDA = Provider DUZ
- +2 NEW PROVTYP
- KILL EDCHKRET
- SET EDCHKRET="000"
- +3 IF '$LENGTH($$GET1^DIQ(200,PSOPRDA,.01))
- QUIT ""
- +4 IF $$POM="MBM"
- SET $EXTRACT(EDCHKRET)=1
- +5 IF $$GET1^DIQ(200,PSOPRDA,53.91,"I")
- SET $EXTRACT(EDCHKRET,2)=1
- +6 SET PROVTYP=$$GET1^DIQ(200,PSOPRDA,53.6,"I")
- +7 IF PROVTYP=3!(PROVTYP=4)
- SET $EXTRACT(EDCHKRET,3)=1
- +8 QUIT EDCHKRET
- +9 ;
- DISPLAY(PRNO) ; Display Provider Info from NEW PERSON file (#200)
- +1 ; Input: PRNO - Provider IEN from NEW PERSON file (#200)
- +2 NEW PSAR,PSDATA
- SET EXIT=0
- +3 WRITE ?2,"NAME: "_$PIECE(^VA(200,PRNO,0),U)
- +4 DO GETS^DIQ(200,PRNO,53.4,"IE","PSINACT")
- +5 SET PSINACTE=$GET(PSINACT(200,PRNO_",",53.4,"E"))
- +6 SET PSINACTI=$GET(PSINACT(200,PRNO_",",53.4,"I"))
- +7 WRITE !?2,"INITIALS: "_$PIECE(^VA(200,PRNO,0),"^",2)
- IF PSINACTI
- Begin DoDot:1
- +8 IF PSINACTI>DT
- WRITE ?40,"INACTIVE DATE: ",PSINACTE
- +9 IF PSINACTI'>DT
- WRITE ?40,$CHAR(7),"*** INACTIVE AS OF ",PSINACTE," ***"
- End DoDot:1
- +10 NEW NPI
- SET NPI=$PIECE($$NPI^XUSNPI("Individual_ID",PRNO),U)
- SET NPI=$SELECT(NPI>0:+NPI,1:"")
- +11 DO GETS^DIQ(200,PRNO,"53.91;53.92;53.93;53.94;53.95;53.96","E","PSAR")
- +12 NEW PSLINE
- DO LINEP(PRNO,.PSAR,53.91,,53.92)
- DO LINEP(PRNO,.PSAR,53.93,,53.95)
- DO LINEP(PRNO,.PSAR,53.94)
- DO LINEP(PRNO,.PSAR,53.96)
- +13 DO GETS^DIQ(200,PRNO,"29;53.1;53.3;53.4;53.5;53.6;53.7;53.8;53.9;55.1;55.2;55.3;55.4;55.5;55.6;.111;.112;.113;.114;.115;.116;.131;.132;.133;.134;.136;.137;.138;.141","E","PSAR")
- +14 ; Don't print lines with no Data
- +15 ; "Authorized to Write Med Orders"
- NEW PSLINE
- DO LINEP(PRNO,.PSAR,53.1)
- +16 ;
- +17 ; PSO*7*545 - Multiple DEA Enhancements
- +18 NEW NPDEAIEN,DNDEAIEN,EXIT
- +19 WRITE !
- if $$CHKP
- GOTO START
- +20 NEW SET,SETARRAY,LINE
- SET SET=0
- +21 SET NPDEAIEN=0
- FOR
- SET NPDEAIEN=$ORDER(^VA(200,PRNO,"PS4",NPDEAIEN))
- if '+NPDEAIEN
- QUIT
- Begin DoDot:1
- +22 NEW PSODOJE
- +23 SET DNDEAIEN=$PIECE(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,3)
- if DNDEAIEN=""
- QUIT
- +24 SET PSODOJE=$GET(^XTV(8991.9,DNDEAIEN,0))
- if PSODOJE=""
- QUIT
- +25 SET SET=SET+1
- SET LINE=0
- +26 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)="DEA NUMBER: "_$PIECE(PSODOJE,U,1)
- +27 if $PIECE(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,2)'=""
- SET SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_"-"_$PIECE(^VA(200,PRNO,"PS4",NPDEAIEN,0),U,2)
- +28 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)="DEA EXPIRATION DATE: "
- SET T=+$PIECE(^XTV(8991.9,DNDEAIEN,0),U,4)
- if T
- SET SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_$$FMTE^XLFDT(T)
- +29 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" USE FOR INPATIENT ORDERS: "
- SET T=+$PIECE(^XTV(8991.9,DNDEAIEN,0),U,6)
- SET SETARRAY(SET,LINE)=SETARRAY(SET,LINE)_$SELECT(T:"YES",1:"NO")
- +30 ;P731 detox/x-waiver removal
- +31 ;S:$P(^XTV(8991.9,DNDEAIEN,0),U,3)'="" LINE=LINE+1,SETARRAY(SET,LINE)=" DETOX NUMBER: "_$P(^XTV(8991.9,DNDEAIEN,0),U,3)
- +32 NEW SCHNODE
- SET SCHNODE=$GET(^XTV(8991.9,DNDEAIEN,2))
- if SCHNODE'=""
- Begin DoDot:2
- +33 IF $$GET1^DIQ(8991.9,DNDEAIEN,.07)="INSTITUTIONAL"
- SET SCHNODE=$GET(^VA(200,PRNO,"PS3"))
- +34 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE II NARCOTIC: "_$SELECT($PIECE(SCHNODE,U,1):"YES",1:"NO")
- +35 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE II NON-NARCOTIC: "_$SELECT($PIECE(SCHNODE,U,2):"YES",1:"NO")
- +36 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE III NARCOTIC: "_$SELECT($PIECE(SCHNODE,U,3):"YES",1:"NO")
- +37 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE III NON-NARCOTIC: "_$SELECT($PIECE(SCHNODE,U,4):"YES",1:"NO")
- +38 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE IV: "_$SELECT($PIECE(SCHNODE,U,5):"YES",1:"NO")
- +39 SET LINE=LINE+1
- SET SETARRAY(SET,LINE)=" SCHEDULE V: "_$SELECT($PIECE(SCHNODE,U,6):"YES",1:"NO")
- End DoDot:2
- +40 if '$DATA(SETARRAY(SET,10))
- SET SETARRAY(SET,10)=""
- End DoDot:1
- +41 ;
- +42 ;Print DEA data
- +43 ;PSO*7*762 change to CHKP(12)
- +44 SET EXIT=0
- +45 FOR SET=1:2:$ORDER(SETARRAY(100),-1)
- if ($GET(EXIT)=1)
- QUIT
- Begin DoDot:1
- +46 WRITE !
- IF $$CHKP(12)
- SET EXIT=1
- QUIT
- +47 FOR LINE=1:1:10
- if EXIT
- QUIT
- Begin DoDot:2
- +48 ; Should never happen - IEN in 200.5321 doesn't exist in 8991.9
- if '$DATA(SETARRAY(SET))
- QUIT
- +49 WRITE SETARRAY(SET,LINE),?40,$GET(SETARRAY(SET+1,LINE)),!
- +50 IF SETARRAY(SET,LINE)=""
- IF $$CHKP(12)
- SET EXIT=1
- QUIT
- End DoDot:2
- End DoDot:1
- +51 KILL SETARRAY,SET,LINE
- +52 if EXIT=1
- QUIT
- WRITE !
- IF $$CHKP(20)
- SET EXIT=1
- QUIT
- +53 ;
- +54 ; VA# and Provider Class
- DO LINEP(PRNO,.PSAR,53.3,,53.5)
- IF $$CHKP
- SET EXIT=1
- QUIT
- +55 NEW HASVANO
- +56 SET HASVANO=$$DEA^XUSER(1,PRNO)
- +57 IF HASVANO'=""
- IF HASVANO=$$GET1^DIQ(200,PRNO,53.3,"I")
- DO SKED200
- +58 ; Provider Type
- DO LINEP(PRNO,.PSAR,53.6,,,$SELECT($LENGTH($GET(NPI)):"NPI",1:""),,,$SELECT($LENGTH($GET(NPI)):NPI,1:""))
- IF $$CHKP
- SET EXIT=1
- QUIT
- +59 ; Cosigners
- DO LINEP(PRNO,.PSAR,53.7,,53.8)
- IF $$CHKP
- SET EXIT=1
- QUIT
- +60 DO LINEP(PRNO,.PSAR,53.9)
- IF $$CHKP
- SET EXIT=1
- QUIT
- +61 WRITE !?2,"SYNONYM(S): "_$SELECT($PIECE($GET(^VA(200,PRNO,.1)),U,4)]"":$PIECE(^(.1),U,4)_",",1:"")_$SELECT($PIECE(^(0),U,2)]"":" "_$PIECE(^(0),U,2),1:"")
- IF $$CHKP
- SET EXIT=1
- QUIT
- +62 WRITE !?2,"SERVICE/SECTION: "_$GET(PSAR(200,PRNO_",",29,"E"))
- IF $$CHKP
- SET EXIT=1
- QUIT
- +63 WRITE !
- DO LINEP(PRNO,.PSAR,.111,,.112)
- DO LINEP(PRNO,.PSAR,.113,,.114)
- DO LINEP(PRNO,.PSAR,.115,,.116)
- IF $$CHKP
- SET EXIT=1
- QUIT
- +64 DO LINEP(PRNO,.PSAR,.131,,.132)
- DO LINEP(PRNO,.PSAR,.133,,.134)
- DO LINEP(PRNO,.PSAR,.136,,.137)
- DO LINEP(PRNO,.PSAR,.138,,.141)
- +65 KILL DIC,Y
- +66 QUIT
- SKED200 ;
- +1 NEW SKED200
- SET SKED200=$GET(^VA(200,PRNO,"PS3"))
- if SKED200'=""
- Begin DoDot:1
- +2 WRITE !," SCHEDULE II NARCOTIC: "_$SELECT($PIECE(SKED200,U,1):"YES",1:"NO")
- +3 WRITE !," SCHEDULE II NON-NARCOTIC: "_$SELECT($PIECE(SKED200,U,2):"YES",1:"NO")
- +4 WRITE !," SCHEDULE III NARCOTIC: "_$SELECT($PIECE(SKED200,U,3):"YES",1:"NO")
- +5 WRITE !," SCHEDULE III NON-NARCOTIC: "_$SELECT($PIECE(SKED200,U,4):"YES",1:"NO")
- +6 WRITE !," SCHEDULE IV: "_$SELECT($PIECE(SKED200,U,5):"YES",1:"NO")
- +7 WRITE !," SCHEDULE V: "_$SELECT($PIECE(SKED200,U,6):"YES",1:"NO")
- +8 WRITE !,""
- End DoDot:1
- +9 QUIT
- LINEP(DA,PSAR,F1,L1,F2,L2,DSPNUL,V1,V2) ; Print Line
- +1 ; Input: DA - Provider IEN from NEW PERSON file (#200). (required)
- +2 ; PSAR - Array returned from GETS^DIQ(200,DA. (required)
- +3 ; F1 - Field number from NEW PERSON file (#200) to display in left column. (required)
- +4 ; L1 - Label text to display with F1 field. (optional-label from ^DD(200 will be used if not passed).
- +5 ; F2 - Field number from NEW PERSON file (#200) to display in right column. (optional)
- +6 ; L2 - Label text to display with F2 field. (optional-label from ^DD(200 will be used if not passed).
- +7 ; DSPNUL - Display Null data - 1:Only applies to first column/field, 2:Only applies to second column/field, 3: Both fields
- +8 ; V1 - Constant value to be displayed with label 1
- +9 ; V2 - Constant value to be displayed with label 2
- +10 NEW PSDATA1,PSDATA2,LB1,LB2
- +11 SET PSDATA1=""
- SET PSDATA2=""
- SET LB1=$GET(L1)
- SET LB2=$GET(L2)
- SET DSPNUL=$GET(DSPNUL)
- SET F1=$GET(F1)
- SET F2=$GET(F2)
- SET V1=$GET(V1)
- SET V2=$GET(V2)
- +12 IF $LENGTH(F1)
- SET PSDATA1=$GET(PSAR(200,DA_",",F1,"E"))
- +13 ; Get values from New Person file
- IF $LENGTH(F2)
- SET PSDATA2=$GET(PSAR(200,DA_",",F2,"E"))
- +14 IF $LENGTH(V1)
- SET PSDATA1=V1
- +15 IF $LENGTH(V2)
- SET PSDATA2=V2
- +16 ; display null labels?
- IF '$GET(DSPNUL)
- if '$LENGTH(PSDATA1_PSDATA2)
- QUIT
- +17 IF '$LENGTH(LB1)
- DO FIELD^DID(200,F1,,"LABEL","LABEL","ERR")
- SET LB1=$SELECT($LENGTH(LABEL("LABEL")):LABEL("LABEL"),1:"NO LABEL")
- +18 if '$LENGTH(LB1)
- QUIT
- +19 WRITE !
- +20 IF '$LENGTH(LB2)
- IF $LENGTH(F2)
- DO FIELD^DID(200,F2,,"LABEL","LABEL","ERR")
- SET LB2=$SELECT($LENGTH(LABEL("LABEL")):LABEL("LABEL"),1:"NO LABEL")
- +21 IF $LENGTH(PSDATA1)!(DSPNUL=1)!(DSPNUL=3)
- WRITE ?2,LB1_": ",PSDATA1
- +22 IF $LENGTH(PSDATA2)!(DSPNUL=2)!(DSPNUL=3)
- WRITE ?40,LB2_": ",PSDATA2
- +23 QUIT
- +24 ;
- POM() ; Pharmacy Operating Mode
- +1 NEW POM
- SET POM=$$GET1^DIQ(59.7,1,102,"I")
- +2 QUIT POM
- +3 ;
- PRNAMDSP(PRNO) ; Display provider name and label
- +1 NEW PSOMARG,PRVNMLBL
- +2 SET PSOMARG=$SELECT($GET(IOM):$GET(IOM)-6,1:74)
- +3 if $DATA(IOF)
- WRITE @IOF
- +4 SET PRVNMLBL="NAME: "_$PIECE($GET(^VA(200,PRNO,0)),"^")
- +5 WRITE !?((PSOMARG/2)-($LENGTH(PRVNMLBL)/2)),PRVNMLBL,!
- +6 QUIT