1 | PSSNDCUT ;BIRM/MFR - NDC Utilities ;10/15/04
|
---|
2 | ;;1.0;PHARMACY DATA MANAGEMENT;**90**;9/30/97
|
---|
3 | ;
|
---|
4 | SAVNDC(DRG,SITE,NDC,CMP) ; Saves the NDC in the DRUG file (Format: 5-4-2)
|
---|
5 | ; Input: (r) DRG - Drug IEN (#50)
|
---|
6 | ; (r) SITE - Outpatient Site IEN (#59)
|
---|
7 | ; (r) NDC - NDC Number
|
---|
8 | ; (o) CMP - CMOP? (1-YES/0-NO)
|
---|
9 | N RFL,DIE,DIC,DA,DR,I,DD,DO,DINUM,X,Y
|
---|
10 | ;
|
---|
11 | S NDC=$$NDCFMT(NDC) I NDC="" Q
|
---|
12 | ;
|
---|
13 | ;- Saving the NDC in the DRUG file (#50)
|
---|
14 | I '$D(^PSDRUG(DRG,"NDCOP",SITE)) D
|
---|
15 | . S DIC="^PSDRUG("_DRG_",""NDCOP"","
|
---|
16 | . S (X,DINUM)=SITE,DA(1)=DRG,DIC(0)=""
|
---|
17 | . K DD,DO D FILE^DICN K DD,DO,DINUM,Y
|
---|
18 | ;
|
---|
19 | K DA,DIE,DR S DIE="^PSDRUG("_DRG_",""NDCOP"","
|
---|
20 | S DA(1)=DRG,DA=SITE,DR=$S($G(CMP):2,1:1)_"///"_NDC
|
---|
21 | D ^DIE
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | GETNDC(DRG,SITE,CMOP) ; Retuns the NDC for a specific Drug/Site/CMOP or NON-CMOP
|
---|
25 | N NDC,NDF
|
---|
26 | ;
|
---|
27 | I '$D(CMOP) S CMOP=$S($D(^PSDRUG("AQ",DRG)):1,1:0)
|
---|
28 | ; - LOCAL NDC by DIVISION
|
---|
29 | I $G(SITE),'CMOP S NDC=$$NDCFMT($$GET1^DIQ(50.032,SITE_","_DRG,1)) I NDC'="" Q NDC
|
---|
30 | ; - CMOP NDC by DIVISION
|
---|
31 | I $G(SITE),CMOP S NDC=$$NDCFMT($$GET1^DIQ(50.032,SITE_","_DRG,2)) I NDC'="" Q NDC
|
---|
32 | ; - Drug File NDC
|
---|
33 | S NDC=$$NDCFMT($$GET1^DIQ(50,DRG,31)) I NDC'="" Q NDC
|
---|
34 | ; - National Drug File NDC
|
---|
35 | I NDC="" S NDF=+$$GET1^DIQ(50,DRG,22,"I") I NDF'="" S NDC=$$NDCFMT($$GET1^DIQ(50.68,NDF,13)) I NDC'="" Q NDC
|
---|
36 | Q NDC
|
---|
37 | ;
|
---|
38 | NDCFMT(NDC) ; Formats NDC codes into 5-4-2
|
---|
39 | N S1,S2,S3
|
---|
40 | I '$$CHKCH(NDC) Q ""
|
---|
41 | I NDC?.N,NDC'?11N Q ""
|
---|
42 | I NDC?11N Q ($E(NDC,1,5)_"-"_$E(NDC,6,9)_"-"_$E(NDC,10,11))
|
---|
43 | ;
|
---|
44 | I $L(NDC,"-")'=3 Q ""
|
---|
45 | S S1=$P(NDC,"-"),S2=$P(NDC,"-",2),S3=$P(NDC,"-",3)
|
---|
46 | I '$L(S1)!'$L(S2)!'$L(S3) Q ""
|
---|
47 | I $L(S1)>6!($L(S2)>4)!($L(S3)>2) Q ""
|
---|
48 | ;
|
---|
49 | S:$L(S1)>5 S1=$E(S1,$L(S1)-4,$L(S1))
|
---|
50 | S:$L(S1)<5 S1=$E(S1+100000,2,6)
|
---|
51 | S S2=$E(S2+10000,2,5)
|
---|
52 | S S3=$E(S3+100,2,3)
|
---|
53 | ;
|
---|
54 | Q (S1_"-"_S2_"-"_S3)
|
---|
55 | ;
|
---|
56 | CHKCH(STR) ; Checks characters different from "-" and numbers
|
---|
57 | N CHKCH
|
---|
58 | I STR="" Q 0
|
---|
59 | S CHKCH=1 F I=1:1:$L(STR) I $E(STR,I)'?1N,$E(STR,I)'?1"-" S CHKCH=0 Q
|
---|
60 | Q CHKCH
|
---|