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

PSOPRVW1.m

Go to the documentation of this file.
  1. PSOPRVW1 ;BIR/BI,MHA-enter/edit/view provider ; 11/9/2018
  1. ;;7.0;OUTPATIENT PHARMACY;**545,731,743**;DEC 1997;Build 24
  1. ;External reference to sub-file NEW DEA #'S (#200.5321) is supported by DBIA 7000
  1. ;External reference to DEA NUMBERS file (#8991.9) is supported by DBIA 7002
  1. ;
  1. Q
  1. WS(X,PSOIENS,PSOWSDWN) ; -- Link the NEW PERSON FILE #200 DEA pointer to the DEA NUMBERS FILE #8991.9 record.
  1. N DNDEAIEN,DA,DR,FDA
  1. Q:$G(X)="" Q:$L(PSOIENS,",")'=3
  1. S DNDEAIEN=$$EN^PSODEAME(X,PSOWSDWN)
  1. I +DNDEAIEN D
  1. . S FDA(2,200.5321,DIIENS,.03)=+DNDEAIEN
  1. . D UPDATE^DIE("","FDA(2)")
  1. Q
  1. ;
  1. INS(X) ; -- Check for an Institutional DEA Number
  1. N DNDEAIEN,TYPE
  1. Q:$G(X)="" 0
  1. S DNDEAIEN=$O(^XTV(8991.9,"B",X,0)) Q:'DNDEAIEN 0
  1. S TYPE=$$GET1^DIQ(8991.9,DNDEAIEN,.07)
  1. I TYPE="INSTITUTIONAL" Q 1
  1. Q 0
  1. ;
  1. NULL(X,DIIENS) ; -- Check for an User Exit without using the Copy function.
  1. N DNDEAIEN,DA,DR,FDA,DQ,DP,DM,DL,DK
  1. Q:$G(X)="" 0
  1. S DNDEAIEN=$O(^XTV(8991.9,"B",X,0))
  1. I '+DNDEAIEN D Q 1
  1. . S DA=$P(DIIENS,",",1),DA(1)=$P(DIIENS,",",2)
  1. . S DIE="^VA(200,"_DA(1)_",""PS4"","
  1. . S DR=".01///@" D ^DIE
  1. Q 0
  1. ;
  1. DEAEDT(NPIEN) ; -- Code to use the DEA API to download and update DOJ/DEA Information
  1. N DEAEDQ
  1. S DEAEDQ=0
  1. ; Allow user to edit multiple DEA numbers without having to reselect provider and start over
  1. F Q:$G(DEAEDQ) D DEAEDT1(NPIEN)
  1. W !! D INPUSE(NPIEN)
  1. Q
  1. ;
  1. DEAEDT1(NPIEN) ; Select one DEA number and edit it
  1. S DEAEDQ=0
  1. I '$G(NPIEN) S DEAEDQ=1 Q
  1. N %,%DT,CNT,DA,DIIENS,DIE,D,DI,DIC,DIR,DIRUT,DNDEAIEN,DNDEATXT,DR,D0,NPDEAIEN,NPDEALST,NPDEATXT,X,Y,SAVEX
  1. N DK,DL,DM,DP,DQ,PSOWSDWN,PSODEAE
  1. S PSOWSDWN=0 ; Web Service down flag
  1. ;
  1. ; Check VAMC/MbM mode
  1. ; If VAMC mode only allow for FEE BASIS and C & A provider types.
  1. I '$$EDITCHK^PSOPRVW(NPIEN) S DEAEDQ=2
  1. ;
  1. S NPDEALST(0)=0
  1. S NPDEAIEN=0 F CNT=1:1 S NPDEAIEN=$O(^VA(200,NPIEN,"PS4",NPDEAIEN)) Q:'NPDEAIEN D
  1. . S NPDEALST(CNT)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.01)
  1. . S $P(NPDEALST(CNT),U,2)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.02)
  1. . N F8991P9IE,F8991P9ER S F8991P9IE=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I")
  1. . I '$$FIND1^DIC(8991.9,,"AX",F8991P9IE,,,"F8991P9ER"),($P(NPDEALST(CNT),U,3)="") S $P(NPDEALST(CNT),U,2)=" **ERROR-MISSING FROM DEA NUMBERS FILE**"
  1. . S $P(NPDEALST(CNT),U,3)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I")
  1. . S $P(NPDEALST(CNT),U,4)=NPDEAIEN_","_NPIEN_","
  1. . S:$P(NPDEALST(CNT),U,3) $P(NPDEALST(CNT),U,5)=$$GET1^DIQ(8991.9,$P(NPDEALST(CNT),U,3)_",",1.6)
  1. . S:$P(NPDEALST(CNT),U,3) $P(NPDEALST(CNT),U,6)=$$GET1^DIQ(8991.9,$P(NPDEALST(CNT),U,3)_",",.03)
  1. . S NPDEALST("B",$P(NPDEALST(CNT),U,1))=NPDEALST(CNT)
  1. . S NPDEALST(0)=CNT
  1. W !!,"DEA NUMBERS",!
  1. I 'NPDEALST(0) W ?5," * NO DEA NUMBERS ON FILE *",!
  1. F CNT=1:1:NPDEALST(0) D
  1. . Q:'$D(NPDEALST(CNT))
  1. . W $E(" ",1,5-$L(CNT)),CNT," - ",$P(NPDEALST(CNT),U,1)
  1. . W:$P(NPDEALST(CNT),U,2)'="" "-",$P(NPDEALST(CNT),U,2)
  1. . W " ",$P(NPDEALST(CNT),U,5)
  1. . ;P731 detox/x-waiver removal
  1. . ;W:$P(NPDEALST(CNT),U,6)'="" " Contains Detox # ",$P(NPDEALST(CNT),U,6)
  1. . W:$O(NPDEALST(CNT)) !
  1. I $G(DEAEDQ)=2 D Q
  1. .W !,"Use EPCS GUI (EPCS Data Entry for Prescriber) to manage this provider's DEA"
  1. .W !,"numbers."
  1. Q:$G(DEAEDQ)
  1. K DIRUT,DIR
  1. S DIR(0)="FO^1:9^K:'$$DEAEDTST^PSOPRVW1(X,.NPDEALST,NPIEN,.PSOWSDWN) X"
  1. ;
  1. I $O(^VA(200,+$G(NPIEN),"PS4",0)) S DIR("A",1)="SELECT an existing entry to edit,"
  1. I $O(^VA(200,+$G(NPIEN),"PS4",0)) S DIR("A",2)="or type '@' to delete an existing entry."
  1. S DIR("A")="Type a DEA number (e.g., AA1234563) to begin a new entry"
  1. ;
  1. S DIR("?")="^D DEAHELP^PSOPRVW1"
  1. ;
  1. D ^DIR S:X="@" DIRUT=0 I $G(DIRUT) S DEAEDQ=1 Q
  1. S (PSODEAE,SAVEX)=X S PSODEANW='$$FIND1^DIC(8991.9,,"QA",$G(PSODEAE))
  1. I $G(PSOWSDWN)&$G(PSODEANW) D Q
  1. .N DIR,ASTRSK S $P(ASTRSK,"*",75)="*"
  1. .S DIR("A",1)=" ",DIR("A",2)=" "_$E(ASTRSK,1,60)
  1. .S DIR("A",3)=" UNABLE TO ESTABLISH A CONNECTION TO THE DOJ/DEA WEB SERVER "
  1. .S DIR("A",4)=" DEA number "_PSODEAE_" cannot be added at this time "
  1. .S DIR("A",5)=" "_$E(ASTRSK,1,60),DIR("A",6)=" "
  1. .S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K X,Y,DIRUT,DUOUT
  1. I '$D(NPDEALST(X))&('$D(NPDEALST("B",X))) D
  1. . Q:$E(X)="@"
  1. . S:'$D(^VA(200,NPIEN,"PS4",0)) ^VA(200,NPIEN,"PS4",0)="^200.5321^^0"
  1. . S DIIENS=$O(^VA(200,NPIEN,"PS4",999),-1)+1_","_NPIEN_","
  1. . S DA=$P(DIIENS,",",1),DA(1)=$P(DIIENS,",",2)
  1. . S DIE="^VA(200,"_DA(1)_",""PS4"","
  1. . S DR=".01///"_X D ^DIE
  1. S X=SAVEX
  1. I $D(NPDEALST(X)) D
  1. . S DNDEATXT=$P(NPDEALST(X),U,1)
  1. . S DNDEAIEN=$P(NPDEALST(X),U,3)
  1. . S DIIENS=$P(NPDEALST(X),U,4)
  1. I $D(NPDEALST("B",X)) D
  1. . S DNDEATXT=$P(NPDEALST("B",X),U,1)
  1. . S DNDEAIEN=$P(NPDEALST("B",X),U,3)
  1. . S DIIENS=$P(NPDEALST("B",X),U,4)
  1. S X=SAVEX
  1. I X="@",$$DELDEA(.NPDEALST,NPIEN) Q ; 731 - Include Provider IEN
  1. I X="@" Q ;S DEAEDQ=1 Q
  1. S NPDEATXT=$$GET1^DIQ(200.5321,DIIENS,.01)
  1. D WS^PSOPRVW1(NPDEATXT,DIIENS,PSOWSDWN)
  1. I $$NULL^PSOPRVW1(NPDEATXT,DIIENS) Q
  1. I '$$INS^PSOPRVW1(NPDEATXT) Q
  1. S DA=$P(DIIENS,",",1),DA(1)=$P(DIIENS,",",2)
  1. S DIE="^VA(200,"_DA(1)_",""PS4"",",DR=".02R",DIE("NO^")="NO" D ^DIE
  1. I '$D(DA),$D(DNDEATXT),DNDEAIEN,'$D(^VA(200,"PS4",DNDEATXT)) D
  1. . K FDA S FDA(1,8991.9,DNDEAIEN_",",.06)=0 D UPDATE^DIE("","FDA(1)") K FDA
  1. Q
  1. ;
  1. DEAEDTST(X,NPDEALST,NPIEN,PSOWSDWN) ; -- Input Transform for the DEAEDT Tag.
  1. N DIR,DNDEAIEN,FG,INST,LNAME,RESPONSEX,PSOASTK
  1. S RESPONSE=0,$P(PSOASTK,"*",75)="*"
  1. I X="@" S RESPONSE=1 G DEAEDTSX
  1. I $D(NPDEALST(X)) S RESPONSE=1 G DEAEDTSX
  1. I '$$DEANUM^PSODEAUT(X) S RESPONSE=0 D G DEAEDTSX
  1. . D EN^DDIOL($C(7)_" "),EN^DDIOL($C(7)_" DEA number is invalid. Please check the number entered.")
  1. . S RESPONSE=0
  1. I '$$DEANUMFL^PSODEAUT(X) S RESPONSE=0 G DEAEDTSX
  1. S DNDEAIEN=$O(^XTV(8991.9,"B",X,0)),INST=$$GET1^DIQ(8991.9,DNDEAIEN,.07,"I")
  1. I INST'=1,$D(X),$D(NPIEN),$D(^VA(200,"PS4",X)),$O(^(X,0))'=NPIEN D G DEAEDTSX
  1. . D EN^DDIOL($C(7)_" "),EN^DDIOL($C(7)_$E(PSOASTK,1,70))
  1. . D EN^DDIOL($C(7)_" DEA number "_X_" has already been assigned to another provider:")
  1. . N DUPIEN S DUPIEN=$O(^VA(200,"PS4",X,"")) I DUPIEN S DUPNAME=$P($G(^VA(200,+DUPIEN,0)),U)
  1. . I DUPIEN D
  1. . . D EN^DDIOL($C(7)_" NAME: "_$G(DUPNAME))
  1. . . D EN^DDIOL($C(7)_" IEN: "_DUPIEN)
  1. . D EN^DDIOL($C(7)_$E(PSOASTK,1,70))
  1. . D EN^DDIOL($C(7)_"Please check the number entered.")
  1. . S RESPONSE=0
  1. . N DIR W ! S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K X,Y,DIRUT,DUOUT
  1. S RESPONSE=$$WSGET^PSODEAUT(.FG,X)
  1. I 'RESPONSE!($P(RESPONSE,U,3)=6059) D G DEAEDTSX
  1. .S PSOECODE=$P(RESPONSE,U,3) I PSOECODE=6059 S RESPONSE=PSOECODE_"^"_RESPONSE,PSOWSDWN=1 Q
  1. .I '$G(PSOWSDWN) W !!,"*** "_$P(RESPONSE,U,2)_" ***"
  1. .S RESPONSE=0
  1. ;
  1. ; Test for name match, provide an option to reject.
  1. S LNAME=$$GET1^DIQ(200,NPIEN,.01)
  1. I $G(FG("name"))'="" I $P(FG("name"),",",1)'=$P(LNAME,",",1) D
  1. . W !!,"DOJ NAME: ",FG("name")
  1. . W !,"VISTA NAME: ",LNAME,!
  1. . S DIR(0)="Y"
  1. . S DIR("A",1)="The last names don't match."
  1. . S DIR("A")="Do you really want to continue"
  1. . D ^DIR I Y'=1 S RESPONSE=0
  1. ;
  1. DEAEDTSX ; Subroutine Exit Tag
  1. Q RESPONSE
  1. ;
  1. INPUSE(NPIEN) ; -- Subroutine to set the DEA NUMBER "USE FOR INPATIENT ORDERS?" flag.
  1. N CNT,DEACNT,DIR,DIRUT,DNDEAIEN,FDA,MULTIP,NPDEAIEN,NPDEALST,UFIO,UFIOCNTY,UFIOCNTN,X,XSAVE,Y S UFIOCNTY=0,UFIOCNTN=0
  1. ;
  1. I '$O(^VA(200,NPIEN,"PS4",0)) Q
  1. ;
  1. ; Loop through the DEA numbers in the NEW PERSON FILE #200
  1. S CNT=0,DEACNT=0,NPDEAIEN=0 F S NPDEAIEN=$O(^VA(200,NPIEN,"PS4",NPDEAIEN)) Q:'NPDEAIEN D
  1. . ;
  1. . ; Get the DEA NUMBER IEN from the pointer in the NEW PERSON FILE
  1. . S DNDEAIEN=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I") Q:'DNDEAIEN
  1. . ;
  1. . ; Test for an INSTITUTIONAL DEA; ignore INSTITIONAL DEA Numbers?
  1. . Q:$$GET1^DIQ(8991.9,DNDEAIEN,.07,"I")'=2
  1. . ;
  1. . ; Load the New Person Dea List (NPDEALST)
  1. . ; Piece: 1 - DEA NUMBER
  1. . ; 2 - DEA POINTER; POINTER TO DEA NUMBERS FILE (#8991.9)
  1. . ; 3 - USE FOR INPATIENT ORDERS? flag from the DEA NUMBERS FILE (#8991.9)
  1. . S CNT=CNT+1
  1. . S $P(NPDEALST(CNT),U,1)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN,.01)
  1. . S $P(NPDEALST(CNT),U,2)=DNDEAIEN
  1. . S UFIO=$$GET1^DIQ(8991.9,DNDEAIEN,.06),$P(NPDEALST(CNT),U,3)=$S(UFIO="YES":"YES",1:"NO")
  1. . S:UFIO="YES" UFIOCNTY=UFIOCNTY+1
  1. . S:UFIO'="YES" UFIOCNTN=UFIOCNTN+1
  1. . S DEACNT=CNT
  1. Q:DEACNT=0
  1. ;
  1. I DEACNT=1,$P(NPDEALST(1),U,3)="YES" Q
  1. I DEACNT=1,$P(NPDEALST(1),U,3)'="YES" D Q
  1. . K FDA S FDA(1,8991.9,$P(NPDEALST(1),U,2)_",",.06)=1 D UPDATE^DIE("","FDA(1)") K FDA
  1. ;
  1. ; Write the list to the screen, identifying the current DEA NUMBER to "USE FOR INPATIENT ORDERS?"
  1. W "USE FOR INPATIENT ORDERS",!
  1. S CNT=0 F S CNT=$O(NPDEALST(CNT)) Q:'CNT D
  1. . W $E(" ",1,5-$L(CNT)),CNT," - ",$P(NPDEALST(CNT),U,1)," - "_$P(NPDEALST(CNT),U,3)
  1. . W:$O(NPDEALST(CNT)) !
  1. ;
  1. IPSLOOP ; Loop to prevent the user from existing without selecting a DEA number for inpatient usage.
  1. ; Set up the user interface prompt to select the "ONE" DEA NUMBER to be used for inpatient orders.
  1. ; If there are more than one DEA NUMBER currently and none selected, make it a required response.
  1. ; If there are more than one DEA NUMBER currently selected, make it a required response.
  1. ; If there is only one DEA NUMBER, make it a required response, and default to 1.
  1. K DIRUT,DIR S DIR(0)="F"_$S(UFIOCNTY=0:"",UFIOCNTY>1:"",DEACNT=1:"",1:"O")_"^1:9^K:'$D(NPDEALST(X)) X"
  1. S DIR("A")="SELECT a DEA NUMBER to change INPATIENT USAGE"
  1. S:DEACNT=1 DIR("B")=1
  1. S DIR("?",1)="Select a choice from the list above."
  1. S DIR("?")="Must be a numeric value from the list above."
  1. D ^DIR
  1. I UFIOCNTY=0,((X="^")!(X="^^")) W !!,"THERE MUST BE ONE DEA SELECTED FOR INPATIENT ORDERS." G IPSLOOP
  1. I UFIOCNTY>1,((X="^")!(X="^^")) W !!,"THERE CAN BE ONLY ONE DEA SELECTED FOR INPATIENT ORDERS." G IPSLOOP
  1. I $G(DIRUT) W ! Q
  1. W !
  1. S XSAVE=X
  1. ;
  1. ; Set up the FDA array; marking the selected DEA NUMBER equal to YES(1) and the other DEA NUMBERS equal to NO(0)
  1. S CNT=0,MULTIP=0 F S CNT=$O(NPDEALST(CNT)) Q:'CNT D
  1. . I CNT=XSAVE S FDA(1,8991.9,$P(NPDEALST(CNT),U,2)_",",.06)=1 Q
  1. . I $P(NPDEALST(CNT),U,3)="YES" D
  1. .. S MULTIP=MULTIP+1
  1. .. W !,"DEA # "_$P(NPDEALST(CNT),U,1)_" is already flagged as ""Use for Inpatient Orders""."
  1. .. S FDA(1,8991.9,$P(NPDEALST(CNT),U,2)_",",.06)=0
  1. ;
  1. ; Ask the user to verify the "Update". Apply the FDA array for a "YES" response.
  1. K DIRUT,DIR
  1. I MULTIP D
  1. . S DIR(0)="Y",DIR("B")="YES"
  1. . S DIR("A",1)="The previous DEA # will no longer be flagged as ""Use for Inpatient Orders""."
  1. . S DIR("A")="Do you want to proceed with this change"
  1. . D ^DIR
  1. I Y=1 D UPDATE^DIE("","FDA(1)")
  1. I 'MULTIP D UPDATE^DIE("","FDA(1)")
  1. ;
  1. ; Re-Display the changes.
  1. W !
  1. N NPDEATXT S NPDEAIEN=0 F S NPDEAIEN=$O(^VA(200,NPIEN,"PS4",NPDEAIEN)) Q:'NPDEAIEN D
  1. . S DNDEAIEN=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I") Q:'DNDEAIEN
  1. . Q:$$GET1^DIQ(8991.9,DNDEAIEN,.07,"I")'=2
  1. . S NPDEATXT=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN,.01)
  1. . S UFIO=$$GET1^DIQ(8991.9,DNDEAIEN,.06)
  1. . W " ",NPDEATXT," - "_$S(UFIO="YES":"YES",1:"NO"),!
  1. Q
  1. ;
  1. DELDEA(NPDEALST,NPIEN) ; -- Code used to add/edit/delete the VA Number
  1. N ACNT,D,DA,DEATYPE,DI,DIC,DIE,DIE1,DIEDA,DIEL,DIETMP,DIEXREF,DIFLD,DIR,DNDEAIEN
  1. N DNDETOX,DR,NPDEACNT,NPDEATXT,RESPONSE,VANUMBER,X,Y,SELECTED,PSOLDEA,PSODELDEA
  1. S RESPONSE=0
  1. I '$G(NPDEALST(0)) D Q RESPONSE
  1. . W " ** No DEA Numbers to Delete ** "
  1. K DIRUT,DIR S DIR(0)="NO^1:"_NPDEALST(0)_":0^"
  1. S DIR("A",1)=" "
  1. S DIR("A")="Select a choice from the list for DELETION."
  1. S DIR("?")="Enter a number from the list above."
  1. D ^DIR I $G(DIRUT) G DELDEAQ
  1. S SELECTED=X
  1. S DIIENS=$P(NPDEALST(SELECTED),"^",4)
  1. I $L(DIIENS,",")'=3 G DELDEAQ
  1. S NPDEACNT=$$NPDEACNT($P(DIIENS,",",2))
  1. S VANUMBER=$$GET1^DIQ(200,$P(DIIENS,",",2),53.3)
  1. S NPDEATXT=$$GET1^DIQ(200.5321,DIIENS,.01)
  1. S DNDEAIEN=$$GET1^DIQ(200.5321,DIIENS,.03,"I")
  1. S DNDETOX=$$GET1^DIQ(8991.9,DNDEAIEN,.03)
  1. S DEATYPE=$$GET1^DIQ(8991.9,DNDEAIEN,.07,"I")
  1. S DA=$P(DIIENS,",",1),DA(1)=$P(DIIENS,",",2)
  1. S DIR("A")="DO YOU STILL WANT TO DELETE THIS DEA NUMBER"
  1. S ACNT=0
  1. S ACNT=ACNT+1,DIR("A",ACNT)=" "
  1. S ACNT=ACNT+1,DIR("A",ACNT)="Removing the DEA number does not affect previously written prescriptions."
  1. I VANUMBER="",NPDEACNT=1 D
  1. . S ACNT=ACNT+1,DIR("A",ACNT)="This is the only DEA number on file for this provider. The provider will no"
  1. . S ACNT=ACNT+1,DIR("A",ACNT)="longer be able to prescribe controlled substances at the VA."
  1. ;P731 detox/x-waiver removal
  1. ;I DNDETOX'="" D
  1. ;. S ACNT=ACNT+1,DIR("A",ACNT)="This DEA # contains Detox # "_DNDETOX_". To maintain the Detox #,"
  1. ;. S ACNT=ACNT+1,DIR("A",ACNT)="please add it to another DEA # on the provider's profile."
  1. S ACNT=ACNT+1,DIR("A",ACNT)=" "
  1. S DIR(0)="Y" D ^DIR K DIR G:Y'=1 DELDEAQ
  1. S DIE="^VA(200,"_DA(1)_",""PS4"",",DR=".01///@" D ^DIE K DIE,DR,DA
  1. S PSOLDEA=$$GET1^DIQ(200,NPIEN,53.2),PSODELDEA=$P($G(NPDEALST(+$G(SELECTED))),"^")
  1. I (PSOLDEA]"") D ; 731 - Remove DEA# field (#53.2) if no remaining DEAs
  1. . ; 743 - Do not delete DEA numbers from DEA NUMBERS file (#8991.9)
  1. . I (PSOLDEA=PSODELDEA)!(($O(NPDEALST(999),-1)=1)&(SELECTED=1)) K DIE,DA,DR,X S DIE="^VA(200,",DA=NPIEN,DR="53.2///@" D ^DIE K DIE,DR,DA
  1. S RESPONSE=1
  1. DELDEAQ ; -- Common Exit Point
  1. Q RESPONSE
  1. ;
  1. NPDEACNT(NPIEN) ; -- Function used to count the number of DEA numbers for a provider.
  1. N NPDEAIEN,NPDEACNT
  1. S NPDEAIEN=0 F NPDEACNT=0:1 S NPDEAIEN=$O(^VA(200,NPIEN,"PS4",NPDEAIEN)) Q:+NPDEAIEN=0
  1. Q NPDEACNT
  1. ;
  1. DEAHELP ; DEA prompt help text for ^DIR(0)
  1. I $G(X)'="?" D REDISP Q
  1. W !,"Enter a New DEA Number."
  1. I $O(^VA(200,+$G(NPIEN),"PS4",0)) W !,"Select a choice from the list above or,"
  1. I $O(^VA(200,+$G(NPIEN),"PS4",0)) W !,"Or type '@' to delete an existing entry."
  1. W !,"DEA NUMBERS must be valid, 2 letters and 7 numbers."
  1. ;
  1. D REDISP
  1. Q
  1. ;
  1. REDISP ; Redisplay DEA numbers
  1. N NPDEALST,CNT
  1. S NPDEALST(0)=0
  1. S NPDEAIEN=0 F CNT=1:1 S NPDEAIEN=$O(^VA(200,NPIEN,"PS4",NPDEAIEN)) Q:'NPDEAIEN D
  1. . S NPDEALST(CNT)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.01)
  1. . S $P(NPDEALST(CNT),U,2)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.02)
  1. . S $P(NPDEALST(CNT),U,3)=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I")
  1. . N F8991P9IE,F8991P9ER S F8991P9IE=$$GET1^DIQ(200.5321,NPDEAIEN_","_NPIEN_",",.03,"I")
  1. . I '$$FIND1^DIC(8991.9,,"AX",F8991P9IE,,,"F8991P9ER"),($P(NPDEALST(CNT),U,3)="") S $P(NPDEALST(CNT),U,2)=" **ERROR-MISSING FROM DEA NUMBERS FILE**"
  1. . S $P(NPDEALST(CNT),U,4)=NPDEAIEN_","_NPIEN_","
  1. . S:$P(NPDEALST(CNT),U,3) $P(NPDEALST(CNT),U,5)=$$GET1^DIQ(8991.9,$P(NPDEALST(CNT),U,3)_",",1.6)
  1. . S:$P(NPDEALST(CNT),U,3) $P(NPDEALST(CNT),U,6)=$$GET1^DIQ(8991.9,$P(NPDEALST(CNT),U,3)_",",.03)
  1. . S NPDEALST("B",$P(NPDEALST(CNT),U,1))=NPDEALST(CNT)
  1. . S NPDEALST(0)=CNT
  1. W !!,"DEA NUMBERS",!
  1. I 'NPDEALST(0) W ?5," * NO DEA NUMBERS ON FILE *",!
  1. F CNT=1:1:NPDEALST(0) D
  1. . Q:'$D(NPDEALST(CNT))
  1. . W $E(" ",1,5-$L(CNT)),CNT," - ",$P(NPDEALST(CNT),U,1)
  1. . W:$P(NPDEALST(CNT),U,2)'="" "-",$P(NPDEALST(CNT),U,2)
  1. . W " ",$P(NPDEALST(CNT),U,5)
  1. . ;P731 detox/x-waiver removal
  1. . ;W:$P(NPDEALST(CNT),U,6)'="" " Contains Detox # ",$P(NPDEALST(CNT),U,6)
  1. . W:$O(NPDEALST(CNT)) !
  1. Q