source: WorldVistAEHR/trunk/r/OUTPATIENT_PHARMACY-PSO-APSP-HUIP/PSONDCUT.m@ 1080

Last change on this file since 1080 was 613, checked in by George Lilly, 15 years ago

initial load of WorldVistAEHR

File size: 5.0 KB
Line 
1PSONDCUT ;BIRM/MFR - NDC Utilities ;10/15/04
2 ;;7.0;OUTPATIENT PHARMACY;**148**;DEC 1997
3 ;Reference to $$ECMEON^BPSUTIL supported by DBIA 4410
4 ;References to $$GETNDC^PSSNDCUT,$$NDCFMT^PSSNDCUT,SAVNDC^PSSNDCUT supported by IA 4707
5 ;
6CHGNDC(RX,RFL,BCODE) ; Prompt for NDC code during Rx Release for HIPAA/NCPDP project
7 ;Input: (r) RX - Rx IEN (#52)
8 ; (o) RFL - Refill Number (#52.1)
9 ; (o) BCODE - Displays PID: 999-99-9999/MED: XXXXX XXXXXXXXXXX 999MG in the NDC prompt (1-YES/0-NO)
10 ;
11 ;Output: (r) NDCCHG - NDC was changed? (1-YES/0-NO)^New NDC number
12 ; OR "^" if no valid NDC or "^" entered
13 ;
14 N PSONDC,NEWNDC,SITE
15 I '$D(RFL) S RFL=$$LSTRFL^PSOBPSU1(RX)
16 S SITE=$$RXSITE^PSOBPSUT(RX,RFL) I '$$ECMEON^BPSUTIL(SITE) Q "^" ; ECME is not turned ON for the Rx's Division
17 ;
18 ; - Retrieving Rx NDC and Fill Date
19 S PSONDC=$$GETNDC(RX,RFL)
20 ;
21 ; - Prompts for NDC number
22 I $G(BCODE) F I=1:1:5 W $C(7)
23 S NEWNDC=PSONDC D NDCEDT(RX,RFL,,SITE,.NEWNDC,$G(BCODE)) I NEWNDC="^"!(NEWNDC="") Q "^"
24 ;
25 ; - If NDC changed, resubmit to ECME and save new NDC in the DRUG and PRESCRIPTION files
26 I PSONDC'=NEWNDC D Q ("1^"_NEWNDC)
27 . D SAVNDC(RX,RFL,NEWNDC,0,1)
28 . D ECMESND^PSOBPSU1(RX,RFL,,"ED",NEWNDC,,"RX RELEASE-NDC CHANGE",,1,,1)
29 Q 0
30 ;
31NDCEDT(RX,RFL,DRG,SITE,NDC,BCODE) ; Allows editing of the Rx NDC code
32 ; Input: (r) RX - Rx IEN (#52)
33 ; (o) RFL - Refill Number (#52.1)
34 ; (o) DRG - Drug IEN (#50)
35 ; (o) NDC - Default NDC Number/Return parameter ("" means no NDC selected) (Note: REQUIRED for Output value)
36 ; (o) BCODE - Display the PID/Drug Name in the NDC prompt
37 ;Output: (r) .NDC - Selected NDC Number
38 ;
39 N SNDC,SYN,Z,IDX,I,PID,DFN,DRGNAM,PRPT,DIR
40 K ^TMP($J,"PSONDCDP"),^TMP($J,"PSONDCFM")
41 I '$G(DRG),$G(RX) S DRG=$$GET1^DIQ(52,RX,6,"I")
42 I '$D(RFL) S RFL=$$LSTRFL^PSOBPSU1(RX)
43 S IDX=0,SITE=+$G(SITE) I 'SITE,$G(RX) S SITE=$$RXSITE^PSOBPSUT(RX,RFL)
44 ;
45 ; - Setting the NDC currently on the PRESCRIPTION (passed in)
46 I $G(NDC)'="",$$NDCFMT^PSSNDCUT(NDC)'="" S IDX=1,^TMP($J,"PSONDCFM",IDX)=NDC,^TMP($J,"PSONDCDP",NDC)=IDX
47 ;
48 ; - Retrieving NDC from the PRESCRIPTION file
49 I $G(RX) D
50 . S NDC=$$GETNDC(RX,RFL)
51 . I NDC'="",'$D(^TMP($J,"PSONDCDP",NDC)) D
52 . . S IDX=IDX+1,^TMP($J,"PSONDCFM",IDX)=NDC,^TMP($J,"PSONDCDP",NDC)=IDX
53 ;
54 S:'IDX IDX=1
55 ;
56 ; - Retrieving NDC from the DRUG/NDF files
57 S NDC=$$GETNDC^PSSNDCUT(DRG)
58 I NDC'="",'$D(^TMP($J,"PSONDCDP",NDC)) D
59 . S IDX=IDX+1,^TMP($J,"PSONDCFM",IDX)=NDC,^TMP($J,"PSONDCDP",NDC)=IDX
60 ;
61 ; - Retrieving NDC by OUTPATIENT SITE from the DRUG/NDF files
62 S NDC=$$GETNDC^PSSNDCUT(DRG,SITE)
63 I NDC'="",'$D(^TMP($J,"PSONDCDP",NDC)) D
64 . S IDX=IDX+1,^TMP($J,"PSONDCFM",IDX)=NDC,^TMP($J,"PSONDCDP",NDC)=IDX
65 ;
66 ; - Retrieving NDCs from SYNONYMS
67 S SYN=0
68 F S SYN=$O(^PSDRUG(DRG,1,SYN)) Q:SYN="" D
69 . S Z=$G(^PSDRUG(DRG,1,SYN,0)),SNDC=$$NDCFMT^PSSNDCUT($P(Z,"^",2)) I SNDC="" Q
70 . I $D(^TMP($J,"PSONDCDP",SNDC)) Q
71 . S IDX=IDX+1,^TMP($J,"PSONDCFM",IDX)=SNDC
72 . S ^TMP($J,"PSONDCDP",SNDC)=IDX
73 ;
74 I '$D(^TMP($J,"PSONDCFM")) D S NDC="^" G END
75 . W !!,"No valid NDC codes found for "_$$GET1^DIQ(50,DRG,.01),$C(7)
76 ;
77ASK ; Ask for NDC
78 S PRPT=""
79 I $G(BCODE) D
80 . S DFN=$$GET1^DIQ(52,RX,2,"I") D DEM^VADPT S PID=$P(VADM(2),"^",2)
81 . S DRGNAM=$E($$GET1^DIQ(50,DRG,.01),1,25),PRPT="PID: "_PID_"/MED: "_DRGNAM_"/"
82 K DIR S DIR(0)="FOA^1:15",DIR("A")=PRPT_"NDC: ",DIR("B")=$G(^TMP($J,"PSONDCFM",1)) I DIR("B")="" K DIR("B")
83 S DIR("?")="^D NDCHLP^PSONDCUT" D ^DIR I $D(DIRUT) S NDC="^" G END
84 I Y'?.N S NDC=Y I '$D(^TMP($J,"PSONDCDP",NDC)) W !,$C(7) D NDCHLP W !,$C(7) G ASK
85 I Y?.N D I NDC="" W !,$C(7) D NDCHLP W !,$C(7) G ASK
86 . I $L(Y)=11 S NDC=$$NDCFMT^PSSNDCUT(Y) S:NDC'="" NDC=$S($D(^TMP($J,"PSONDCDP",NDC)):NDC,1:"") Q
87 . S NDC=$G(^TMP($J,"PSONDCFM",+Y))
88 W " ",NDC
89 ;
90END K ^TMP($J,"PSONDCDP"),^TMP($J,"PSONDCFM")
91 Q
92 ;
93SAVNDC(RX,RFL,NDC,CMP,DRG) ; Saves the NDC in the PRESCRIPTION and DRUG files
94 ; Input: (r) RX - Rx IEN (#52)
95 ; (o) RFL - Refill Number (#52.1)
96 ; (r) NDC - NDC Number
97 ; (o) CMP - CMOP? (1-YES/0-NO)
98 ; (o) DRG - Save in the DRUG file (1-YES/0-NO) ((Def: 0)
99 ;
100 S NDC=$$NDCFMT^PSSNDCUT(NDC) I NDC="" Q
101 ;
102 ;- Saving the NDC in the PRESCRIPTION file (#52)
103 I '$D(RFL) S RFL=$$LSTRFL^PSOBPSU1(RX)
104 ;
105 N DA,DIE,DR
106 I 'RFL S DIE="^PSRX(",DA=RX,DR="27///"_NDC D ^DIE
107 I RFL,$D(^PSRX(RX,1,RFL,0)) S DIE="^PSRX("_RX_",1,",DA(1)=RX,DA=RFL,DR="11///"_NDC D ^DIE
108 ;
109 ;- Saving the NDC in the DRUG file (#50)
110 I $G(DRG) D SAVNDC^PSSNDCUT($$GET1^DIQ(52,RX,6,"I"),$$RXSITE^PSOBPSUT(RX,RFL),NDC,$G(CMP))
111 Q
112 ;
113GETNDC(RX,RFL) ; Returns the Rx NDC #
114 ; Input: (r) RX - Rx IEN (#52)
115 ; (o) RFL - Refill #
116 ; Output: NDC - Rx NDC #
117 N NDC,I S NDC=""
118 I '$D(RFL) S RFL=$$LSTRFL^PSOBPSU1(RX)
119 I RFL S NDC=$$GET1^DIQ(52.1,RFL_","_RX,11)
120 I 'RFL!(NDC="") S NDC=$$GET1^DIQ(52,RX,27)
121 Q $$NDCFMT^PSSNDCUT(NDC)
122 ;
123NDCHLP ; Help Text for the NDC Code Selection
124 N I
125 W !,"Select one of the following valid NDC code(s) below: ",!
126 S I=0 F S I=$O(^TMP($J,"PSONDCFM",I)) Q:'I D
127 . W !?10,$J(I,2)," - ",^TMP($J,"PSONDCFM",I)
128 Q
Note: See TracBrowser for help on using the repository browser.