| [613] | 1 | IBCEF72 ;WOIFO/SS - FORMATTER AND EXTRACTOR SPECIFIC BILL FUNCTIONS ;8/6/03 10:56am
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**232,320,349**;21-MAR-94;Build 46
 | 
|---|
 | 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 |  ;Input:
 | 
|---|
 | 7 |  ;IBINSCO - ptr to #36
 | 
|---|
 | 8 |  ;IBFRMTYP 0=unknwn/both,1=UB,2=1500
 | 
|---|
 | 9 |  ;IBCARE - 0=unknwn or both inp/outp,1=inpatient, 2=outpatient, 3 -RX
 | 
|---|
 | 10 |  ;Output: X12 IDtype^ID^ID TYPE ptr to file 355.97
 | 
|---|
 | 11 | CH35591(IBINSCO,IBFRMTYP,IBCARE) ;
 | 
|---|
 | 12 |  N IB35591,IBRET,IB1
 | 
|---|
 | 13 |  S IB35591=0,IBRET=""
 | 
|---|
 | 14 |  F  S IB35591=$O(^IBA(355.91,"B",IBINSCO,IB35591)) Q:+IB35591=0  Q:IBRET'=""  D
 | 
|---|
 | 15 |  . S IB1=$G(^IBA(355.91,IB35591,0))
 | 
|---|
 | 16 |  . I '($P(IB1,"^",4)=0!(IBFRMTYP=0)) Q:$P(IB1,"^",4)'=IBFRMTYP  ;if wrong form type
 | 
|---|
 | 17 |  . I ($P(IB1,"^",5)=3)!(IBCARE=3) Q:IBCARE'=$P(IB1,"^",5)  ;if not RX
 | 
|---|
 | 18 |  . I ($P(IB1,"^",5)=1)!($P(IB1,"^",5)=2) I (IBCARE=1)!(IBCARE=2) Q:$P(IB1,"^",5)'=IBCARE  ;if wrong care type
 | 
|---|
 | 19 |  . S IBRET=$P($G(^IBE(355.97,+$P(IB1,"^",6),0)),"^",3)_"^"_$P(IB1,"^",7)_U_+$P(IB1,U,6)
 | 
|---|
 | 20 |  Q IBRET
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 | FINDEIN(IBXIEN,IBPROV,IBFAC,IBS) ; find EIN for facility/ SSN for person
 | 
|---|
 | 23 |  ; IBXIEN = ien of bill entry file 399
 | 
|---|
 | 24 |  ; IBFAC = 1 if facility, 0 if individual provider
 | 
|---|
 | 25 |  ; IBPROV = ien of provider (vp format)
 | 
|---|
 | 26 |  ; IBS = 1 if person's EIN should be returned if there, otherwise SSN
 | 
|---|
 | 27 |  ; FUNCTION RETURNS 
 | 
|---|
 | 28 |  ;    EIN or SSN ^ 24 for EIN, 34 for SSN or null if none found
 | 
|---|
 | 29 |  N Z,Z0,IBARR,IBEIN,IBSSN
 | 
|---|
 | 30 |  S (IBEIN,IBSSN)=""
 | 
|---|
 | 31 |  D ALLID^IBCEP8(IBPROV,"",.IBARR)
 | 
|---|
 | 32 |  S Z=0 F  S Z=$O(IBARR(Z)) Q:'Z  D  Q:IBEIN'=""
 | 
|---|
 | 33 |  . I $G(IBFAC) Q:$P(IBARR(Z),U,7)'="EI"  S IBEIN=$P(IBARR(Z),U,2)_U_24 Q
 | 
|---|
 | 34 |  . I $P(IBARR(Z),U,7)="SY" D  Q
 | 
|---|
 | 35 |  .. I $G(IBS) S IBSSN=$P(IBARR(Z),U,2)_U_34 Q
 | 
|---|
 | 36 |  . S IBEIN=$P(IBARR(Z),U,2)_U_24
 | 
|---|
 | 37 |  . I $G(IBS),$P(IBARR(Z),U,7)="EI" S IBEIN=$P(IBARR(Z),U,2)_U_24
 | 
|---|
 | 38 |  I $G(IBS),IBEIN="" S IBEIN=IBSSN
 | 
|---|
 | 39 |  Q IBEIN
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 | NONVAID(IBXIEN,IBX,IBFAC,IBS) ; Find the non-VA provider default id
 | 
|---|
 | 43 |  ; IBXIEN = the ien of the bill (file 399)
 | 
|---|
 | 44 |  ; IBX = id data returned if passed by reference
 | 
|---|
 | 45 |  ; IBFAC = 1 if getting the id for the facility or 0 for rendering prov
 | 
|---|
 | 46 |  ; IBS = 1 if getting id for person, but need the EIN if there
 | 
|---|
 | 47 |  ; Function returns the id^type of id^person/facility flag:
 | 
|---|
 | 48 |  ;   Type of id: 1 = SSN    2 = EIN   0 = not found
 | 
|---|
 | 49 |  ;   person/facility: 1 = person   2 = facility
 | 
|---|
 | 50 |  N Z,IBXSAVE,IBU2,IBTYPE,IBZ,IBF,IBPROV,Q,Q0
 | 
|---|
 | 51 |  S IBTYPE=2,IBU2=$G(^DGCR(399,IBXIEN,"U2")),IBF=2,IBPROV=""
 | 
|---|
 | 52 |  ;
 | 
|---|
 | 53 |  S Z=$P(IBU2,U,10)
 | 
|---|
 | 54 |  I 'Z S IBX="",IBTYPE=0 G NONVAQ ; Not a non-VA facility
 | 
|---|
 | 55 |  S IBPROV=Z_";IBA(355.93,"
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  ; Get EIN
 | 
|---|
 | 58 |  I $G(IBFAC) D  G NONVAQ
 | 
|---|
 | 59 |  . S IBX=$P($$FINDEIN(IBXIEN,IBPROV,IBFAC),U),IBTYPE=2
 | 
|---|
 | 60 |  ;
 | 
|---|
 | 61 |  ; Get EIN/SSN
 | 
|---|
 | 62 |  I '$G(IBFAC) D  G NONVAQ
 | 
|---|
 | 63 |  . S IBX="",IBF=1
 | 
|---|
 | 64 |  . S Q0=($$FT^IBCEF(IBXIEN)=3)+3 ; 3 for rendering/4 for attending
 | 
|---|
 | 65 |  . S Q=+$O(^DGCR(399,IBXIEN,"PRV","B",Q0,0))
 | 
|---|
 | 66 |  . S IBPROV=$P($G(^DGCR(399,IBXIEN,"PRV",Q,0)),U,2)
 | 
|---|
 | 67 |  . I IBPROV S IBX=$$FINDEIN(IBXIEN,IBPROV,IBFAC,$G(IBS)),IBTYPE=$S($P(IBX,U,2)=24:2,$P(IBX,U,2)=34:1,1:0),IBX=$P(IBX,U)
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 | NONVAQ I IBTYPE,IBX="",$P(IBU2,U,12)'="" S IBX=$P(IBU2,U,12) ; pull from 399
 | 
|---|
 | 70 |  S IBX=$G(IBX)
 | 
|---|
 | 71 |  Q IBX_U_IBTYPE_U_IBF
 | 
|---|
 | 72 |  ;----
 | 
|---|
 | 73 |  ;checks if there is data for OP* segments and 
 | 
|---|
 | 74 |  ;then populates PROV COB SEQ
 | 
|---|
 | 75 |  ;Input:
 | 
|---|
 | 76 |  ;IBXIEN - ien in #399
 | 
|---|
 | 77 |  ;IBSAVE - "in" array (i.e. IBXSAVE)
 | 
|---|
 | 78 |  ;IBDATA - "out" array (i.e. IBXDATA)
 | 
|---|
 | 79 |  ;IBFUNC - FUNCTION from #399 (1-refering, 2 -operating, etc)
 | 
|---|
 | 80 |  ;IBSEGM - segment record ID, optional
 | 
|---|
 | 81 |  ;Output:
 | 
|---|
 | 82 |  ; IBDATA with formatted output
 | 
|---|
 | 83 | PROVSEQ(IBXIEN,IBSAVE,IBDATA,IBFUNC,IBSEGM) ;
 | 
|---|
 | 84 |  N IB1,IB2,IBINS,IBFL
 | 
|---|
 | 85 |  S IBFL=$S(IBFUNC=3!(IBFUNC=4):1,1:0)
 | 
|---|
 | 86 |  F IB1=1,2 D
 | 
|---|
 | 87 |  . Q:'$$ISINSUR^IBCEF71($G(IBSAVE("PROVINF",IBXIEN,"O",IB1)),IBXIEN)  ;don't create anything if there is no such insurance
 | 
|---|
 | 88 |  . I IBFL S IBFUNC=$S($O(IBSAVE("PROVINF",IBXIEN,"O",IB1,3,0)):3,1:4)
 | 
|---|
 | 89 |  . S:$O(IBSAVE("PROVINF",IBXIEN,"O",IB1,IBFUNC,0)) IBDATA(IB1)=$G(IBSAVE("PROVINF",IBXIEN,"O",IB1))
 | 
|---|
 | 90 |  . I $G(IBSEGM)'="" D:$O(IBSAVE("PROVINF",IBXIEN,"O",IB1,IBFUNC,0)) ID^IBCEF2(IB1,IBSEGM)
 | 
|---|
 | 91 |  Q
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | OUTPRVID(IBXIEN,IBXSAVE) ; Extract the outside provider or facility ids
 | 
|---|
 | 94 |  ; into IBXSAVE array
 | 
|---|
 | 95 |  ; Function returns 1 if person or 2 if facility ids or "" if neither
 | 
|---|
 | 96 |  N Z,IBXDATA,IBPERSON,TAG
 | 
|---|
 | 97 |  ;WCJ;11/1/2005 Extract the first 3 chars of Z instead.
 | 
|---|
 | 98 |  S Z=$E($$PSPRV^IBCEF7(IBXIEN),1,3),IBPERSON=""
 | 
|---|
 | 99 |  ;EJK 8/23/05 IB*320 - CHANGED Z=101 TO Z=1010. Z WILL ALWAYS BE A 4 DIGIT #. 
 | 
|---|
 | 100 |  ; WCJ 11/1/2005 ; Removed EJK's change and added above change
 | 
|---|
 | 101 |  I Z=111!(Z=101) S TAG=$S(Z=101:"OUTSIDE FAC PROVIDER INF",1:"CUR/OTH PROVIDER INFO") D F^IBCEF("N-ALL "_TAG) S IBPERSON=$S('$E(Z,2):2,1:1)
 | 
|---|
 | 102 |  Q IBPERSON
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 | OUTPRV(IBREC,IBXIEN,IBXSAVE) ; Extract the outside provider or facility ids
 | 
|---|
 | 105 |  ; into IBXSAVE array
 | 
|---|
 | 106 |  ; Function returns 1 if person or 2 if facility ids or "" if neither
 | 
|---|
 | 107 |  ; IBREC = the record whose ids should be returned
 | 
|---|
 | 108 |  N IBPERSON,IBFRM,IBTYPE,IBFAC
 | 
|---|
 | 109 |  I IBREC="SUB1"!(IBREC="OP6") D
 | 
|---|
 | 110 |  . K IBXSAVE("PROVINF",IBXIEN),IBXSAVE("PROVINF_FAC",IBXIEN)
 | 
|---|
 | 111 |  . S IBPERSON=$$OUTPRVID(IBXIEN,.IBXSAVE),IBFAC=$S(IBPERSON=1:0,1:1)
 | 
|---|
 | 112 |  E  D
 | 
|---|
 | 113 |  . K IBXSAVE("PROVINF_FAC",IBXIEN)
 | 
|---|
 | 114 |  . D F^IBCEF("N-ALL OUTSIDE FAC PROVIDER INF")
 | 
|---|
 | 115 |  . S IBPERSON=2,IBFAC=1
 | 
|---|
 | 116 |  S IBFRM=$$FT^IBCEF(IBXIEN),IBFRM=$S(IBFRM=2:2,1:1)
 | 
|---|
 | 117 |  S IBTYPE=$S(IBREC["SUB":"C",1:"O")
 | 
|---|
 | 118 |  D CHCKSUB^IBCEF73(IBFRM,IBREC,IBFAC,IBTYPE,.IBXSAVE)
 | 
|---|
 | 119 |  Q IBPERSON
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 |  ;get IENs in file #36 for other insurances
 | 
|---|
 | 122 | OTHINS(IB399,IBRES) ;
 | 
|---|
 | 123 |  N IBFRMTYP,Z,Z1,Z2,Z4
 | 
|---|
 | 124 |  S Z=$$COBN^IBCEF(IB399),Z0=0
 | 
|---|
 | 125 |  F Z1=1:1:3 I Z1'=Z,$D(^DGCR(399,IB399,"I"_Z1)) S Z0=Z0+1,IBRES(Z0)=+$G(^DGCR(399,IB399,"I"_Z1))
 | 
|---|
 | 126 |  Q
 | 
|---|
 | 127 |  ;get other insurance EDI ID NUMBERs
 | 
|---|
 | 128 | OTHINSID(IB399,IBRES) ;insurance EDI 
 | 
|---|
 | 129 |  N IBFRMTYP,IBZ,Z0,Z1,Z4
 | 
|---|
 | 130 |  S IBFRMTYP=$$FT^IBCEF(IB399),IBFRMTYP=$S(IBFRMTYP=2:2,IBFRMTYP=3:1,1:0)
 | 
|---|
 | 131 |  S Z4=$S(IBFRMTYP=1:4,1:2) ;UB - piece4,1500 or BOTH -piece 2
 | 
|---|
 | 132 |  D OTHINS(IB399,.IBZ)
 | 
|---|
 | 133 |  S Z1=0
 | 
|---|
 | 134 |  F Z0=1:1:2 I $G(IBZ(Z0)) S IBRES(Z0)=$S($$MCRWNR^IBEFUNC(+IBZ(Z0)):$S(IBFRMTYP=1:"12M61",1:"SMTX1"),1:$P($G(^DIC(36,+IBZ(Z0),3)),U,Z4))
 | 
|---|
 | 135 |  Q
 | 
|---|
 | 136 |  ;
 | 
|---|
 | 137 |  ;get other insurance addresses
 | 
|---|
 | 138 | OTHINADR(IB399,IBRES,IBADDFLD) ;insurance EDI
 | 
|---|
 | 139 |  N IBZ,Z0,Z1,Z4
 | 
|---|
 | 140 |  D OTHINS(IB399,.IBZ)
 | 
|---|
 | 141 |  S Z1=0
 | 
|---|
 | 142 |  I IBADDFLD=18 D  Q
 | 
|---|
 | 143 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 144 |  . . S IBRES(Z0)=$P($G(^DIC(36,+IBZ(Z0),.11)),U,1)
 | 
|---|
 | 145 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,55)
 | 
|---|
 | 146 |  I IBADDFLD=18.9 D  Q
 | 
|---|
 | 147 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 148 |  . . S IBRES(Z0)=$P($G(^DIC(36,+IBZ(Z0),.11)),U,1)
 | 
|---|
 | 149 |  . . S Z4=$P($G(^DIC(36,+IBZ(Z0),.11)),U,2) S:Z4'="" IBRES(Z0)=IBRES(Z0)_", "_Z4
 | 
|---|
 | 150 |  . . S Z4=$P($G(^DIC(36,+IBZ(Z0),.11)),U,3) S:Z4'="" IBRES(Z0)=IBRES(Z0)_", "_Z4
 | 
|---|
 | 151 |  . . S Z4=$P($G(^DIC(36,+IBZ(Z0),.11)),U,4) S:Z4'="" IBRES(Z0)=IBRES(Z0)_", "_Z4
 | 
|---|
 | 152 |  . . S Z4=$P($G(^DIC(5,+$P($G(^DIC(36,+IBZ(Z0),.11)),U,5),0)),U,2) S:Z4'="" IBRES(Z0)=IBRES(Z0)_", "_Z4
 | 
|---|
 | 153 |  . . S Z4=$P($G(^DIC(36,+IBZ(Z0),.11)),U,6) S:Z4'="" IBRES(Z0)=IBRES(Z0)_", "_Z4
 | 
|---|
 | 154 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,157)
 | 
|---|
 | 155 |  I IBADDFLD=19 D  Q
 | 
|---|
 | 156 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 157 |  . . S IBRES(Z0)=$P($G(^DIC(36,+IBZ(Z0),.11)),U,2)
 | 
|---|
 | 158 |  . . S IBRES(Z0)=IBRES(Z0)_" "_$P($G(^DIC(36,+IBZ(Z0),.11)),U,3)
 | 
|---|
 | 159 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,55)
 | 
|---|
 | 160 |  I IBADDFLD=20 D  Q
 | 
|---|
 | 161 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 162 |  . . S IBRES(Z0)=$P($G(^DIC(36,+IBZ(Z0),.11)),U,4)
 | 
|---|
 | 163 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,30)
 | 
|---|
 | 164 |  I IBADDFLD=21 D  Q
 | 
|---|
 | 165 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 166 |  . . S IBRES(Z0)=$P($G(^DIC(5,+$P($G(^DIC(36,+IBZ(Z0),.11)),U,5),0)),U,2)
 | 
|---|
 | 167 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,2)
 | 
|---|
 | 168 |  I IBADDFLD=22 D  Q
 | 
|---|
 | 169 |  . F Z0=1:1:2 I $G(IBZ(Z0)) D
 | 
|---|
 | 170 |  . . S IBRES(Z0)=$P($G(^DIC(36,+IBZ(Z0),.11)),U,6)
 | 
|---|
 | 171 |  . . S IBRES(Z0)=$E(IBRES(Z0),1,15)
 | 
|---|
 | 172 |  Q
 | 
|---|
 | 173 |  ;
 | 
|---|
 | 174 | SFIDQ(IBXIEN,IBXSAVE,IBXDATA) ; Find the service facility id qualifier for
 | 
|---|
 | 175 |  ; 837 record SUB2-5
 | 
|---|
 | 176 |  ;IBXIEN = ien of 399
 | 
|---|
 | 177 |  ;Pass by reference: IBXSAVE (input/output)  IBXDATA (output)
 | 
|---|
 | 178 |  N B,Z
 | 
|---|
 | 179 |  K IBXSAVE("NVID")
 | 
|---|
 | 180 |  D  ; protect IBXDATA
 | 
|---|
 | 181 |  . N IBXDATA
 | 
|---|
 | 182 |  . D F^IBCEF("N-RENDERING INSTITUTION")
 | 
|---|
 | 183 |  . S:IBXDATA'="" IBXSAVE("IBFAC")=IBXDATA
 | 
|---|
 | 184 |  I $P($G(IBXSAVE("IBFAC")),U,2)'=1 K IBXDATA Q
 | 
|---|
 | 185 |  S Z=$$PSPRV^IBCEF7(IBXIEN)
 | 
|---|
 | 186 |  ;WCJ 11/04/2005 If a Non-VA facility 
 | 
|---|
 | 187 |  I $E(Z) D
 | 
|---|
 | 188 |  . S IBXSAVE("NVID")=$$NONVAID^IBCEF72(IBXIEN,.B,$E(Z),1)
 | 
|---|
 | 189 |  .; S IBXSAVE("NVID")=$$NONVAID^IBCEF72(IBXIEN,.B,'$E(Z,2),1)
 | 
|---|
 | 190 |  . S IBXDATA=$P("^34^24",U,$P(IBXSAVE("NVID"),U,2)+1)
 | 
|---|
 | 191 |  ;S Z=$$PSPRV^IBCEF7(IBXIEN),IBXSAVE("NVID")=$$NONVAID^IBCEF72(IBXIEN,.B,'$E(Z,2),1),IBXDATA=24
 | 
|---|
 | 192 |  Q
 | 
|---|
 | 193 |  ;
 | 
|---|
 | 194 | OTHP36(IBXIEN,IBZOUT)   ;
 | 
|---|
 | 195 |  N Z,Z0,Z1,IBZ
 | 
|---|
 | 196 |  D F^IBCEF("N-ALL INSURANCE CO 837 ID","IBZ")
 | 
|---|
 | 197 |  F Z=1,2,3 S IBZOUT(Z)=+$$POLICY^IBCEF(IBXIEN,1,$E("PST",Z))
 | 
|---|
 | 198 |  Q
 | 
|---|
 | 199 |  ;
 | 
|---|
 | 200 |  ;---------SORT-----------
 | 
|---|
 | 201 |  ;IBPRNUM - seq #
 | 
|---|
 | 202 |  ;IBPRTYP - type of provider (use FUNCTION value from file 399, fld 222)
 | 
|---|
 | 203 |  ;IB399 = ien file 399
 | 
|---|
 | 204 |  ;IBSRC,IBDST - source,destination arrays
 | 
|---|
 | 205 |  ;IBN - starting #
 | 
|---|
 | 206 |  ;Output:
 | 
|---|
 | 207 |  ; IBDST(1-primary/2-secondary provider,Provider type(FUNCTION),N)=
 | 
|---|
 | 208 |  ; =provider/VARIABLEPTR^Insurance PTR #36 or NONE^ID type^ID^Form type^Care type^state ptr #5 for state license #
 | 
|---|
 | 209 |  ; where N is numeration (1 for ID1, 2 for ID2, etc)
 | 
|---|
 | 210 | GETSSN(IBPTR)   ;look for SSN in #200 first and if not found then look at #355.9
 | 
|---|
 | 211 |  ;if in file #200
 | 
|---|
 | 212 |  I $P(IBPTR,";",2)="VA(200," Q $$SSN200^IBCEF73(IBPTR)
 | 
|---|
 | 213 |  ;if in 355.93 then use 355.9
 | 
|---|
 | 214 |  Q $$SSN3559^IBCEF73(IBPTR)
 | 
|---|
 | 215 |  ;--
 | 
|---|
 | 216 |  ;SSN3559
 | 
|---|
 | 217 |  ;Find SSN from 355.9
 | 
|---|
 | 218 |  ;Input:
 | 
|---|
 | 219 |  ; Variable pointer to ^VA(200 or ^IBA(355.93
 | 
|---|
 | 220 |  ;Output:
 | 
|---|
 | 221 |  ; SSN or null
 | 
|---|
 | 222 |  ;
 | 
|---|
 | 223 | PADNDC(Z) ;PAD LEADING ZERO'S INTO A NON 5-4-2 FORMAT NDC NUMBER
 | 
|---|
 | 224 |  ;Z IS ITERATION, ONLY PAD CURRENT NDC NUMBER
 | 
|---|
 | 225 |  N NDC
 | 
|---|
 | 226 |  S NDC=$P(IBXSAVE("OUTPT",Z,"RX"),"^",3)
 | 
|---|
 | 227 |  Q:$L(NDC)=13
 | 
|---|
 | 228 |  I $L(NDC)=14 D  Q
 | 
|---|
 | 229 |  . S $P(NDC,"-",1)=$E($P(NDC,"-",1),2,$L($P(NDC,"-",1)))
 | 
|---|
 | 230 |  . S $P(IBXSAVE("OUTPT",Z,"RX"),"^",3)=NDC
 | 
|---|
 | 231 |  I $L($P(NDC,"-",1))'=5 S $P(NDC,"-",1)="0"_$P(NDC,"-",1)
 | 
|---|
 | 232 |  I $L($P(NDC,"-",2))'=4 S $P(NDC,"-",2)="0"_$P(NDC,"-",2)
 | 
|---|
 | 233 |  I $L($P(NDC,"-",3))'=2 S $P(NDC,"-",3)="0"_$P(NDC,"-",3)
 | 
|---|
 | 234 |  S $P(IBXSAVE("OUTPT",Z,"RX"),"^",3)=NDC
 | 
|---|
 | 235 |  Q
 | 
|---|
 | 236 |  ;
 | 
|---|