Changeset 1630 for ccr/trunk/rxnorm/trunk/routines/C0CRXNLK.m
- Timestamp:
- Nov 14, 2013, 5:40:26 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ccr/trunk/rxnorm/trunk/routines/C0CRXNLK.m
r1617 r1630 1 C0CRXNLK ; VEN/SMH - RxNorm Lookup Utilities ;2013- 04-10 7:01PM2 ;; 1.0;RX NORM;;Apr 25, 2012;Build 991 C0CRXNLK ; VEN/SMH - RxNorm Lookup Utilities ;2013-11-14 2:43 PM 2 ;;2.2;RXNORM FOR VISTA;;Nov 14, 2013;Build 8 3 3 ;(c) Sam Habiel 2013 4 4 ; See accompanying license. Don't use otherwise. … … 10 10 QUIT 11 11 ; 12 EXIST(RXN) 12 EXIST(RXN) ; $$ Public - Does this RxNorm CUI exist? 13 13 ; Input: RxNorm CUI by value 14 14 ; Output: Extrinsic … … 22 22 Q ^(IEN) 23 23 ; 24 GCN2RXNT ; @TEST - Test Get RxNorm CUI using GCN 24 GCN2RXNT ; @TEST - Test Get RxNorm CUI using GCN 25 Q:'$D(^C0CRXN(176.001,"STC","NDDF")) 25 26 N L F L=1:1 N LN S LN=$T(GCN2RXND+L) Q:LN["<<END>>" Q:LN="" D 26 27 . N GCN S GCN=$P(LN,";",3) … … 29 30 QUIT 30 31 ; 31 GCN2RXND 32 GCN2RXND ; @DATA - Data for Tests ;;GCN;EXPECTED RXNCUI 32 33 ;;16033;991632 33 34 ;;8208;310429 … … 35 36 ;;18;197604 36 37 ;;346;884173 38 ;;<<END>> 39 ; 40 ; 41 ; 42 RXN2GCN(RXNCUI) ; $$ Public - Get GCN(s) given an RxNorm Number 43 ; Input: RXNCUI by Value 44 ; Output: Caret delimited Extrinsic 45 N GCNS S GCNS="" 46 N I S I="" 47 F S I=$O(^C0CRXN(176.001,"STX","NDDF","CDC",RXNCUI,I)) Q:I="" S GCNS=GCNS_+^(I)_U ; + b/c we want the GCN w/o leading zeros 48 S GCNS=$E(GCNS,1,$L(GCNS)-1) ; remove trailing ^ 49 Q GCNS 50 ; 51 RXN2GCNT ; @TEST - Test Get GCN from RXNCUI 52 Q:'$D(^C0CRXN(176.001,"STX","NDDF")) 53 N L F L=1:1 N LN S LN=$T(RXN2GCND+L) Q:LN["<<END>>" Q:LN="" D 54 . N RXN S RXN=$P(LN,";",3) 55 . N GCN S GCN=$P(LN,";",4) 56 . D CHKEQ^XTMUNIT($$RXN2GCN(RXN),GCN,"Translation from RXCUI to GCN failed") 57 QUIT 58 ; 59 ; 60 RXN2GCND ; @DATA - Data for Tests ;;RXNORM CUI;Expected GCN; Human Readable Drug name for dear reader 61 ;;998689;5145;Acetabulol 200mg tab 62 ;;745679;5037;Albuterol Inhaler 63 ;;197320;2536;Allopurinol 300mg tab 64 ;;993691;3948^46236;Bupropion 75mg tab 65 ;;197591;3768;Diazepam 5mg tab 37 66 ;;<<END>> 38 67 ; … … 50 79 Q C0PVUID 51 80 ; 52 RXN2VUIT 81 RXN2VUIT ; @TEST - Get VUIDs given RxNorm values 53 82 N L F L=1:1 N LN S LN=$T(RXN2VUID+L) Q:LN["<<END>>" Q:LN="" D 54 83 . N RXN S RXN=$P(LN,";",3) … … 57 86 QUIT 58 87 ; 59 RXN2VUID 88 RXN2VUID ; @DATA - Data items for previous test 60 89 ;;991632;4006455 61 90 ;;310429;4002369^4013941 … … 76 105 Q O 77 106 ; 78 VUI2VAPT 107 VUI2VAPT ; @TEST - Get VA Product IEN from VUID 79 108 N L F L=1:1 N LN S LN=$T(VUI2VAPD+L) Q:LN["<<END>>" Q:LN="" D 80 109 . N VUID S VUID=$P(LN,";",3) … … 83 112 QUIT 84 113 ; 85 VUI2VAPD 114 VUI2VAPD ; @DATA - Data for above test 86 115 ;;4006455;5932 87 116 ;;4002369;1784 … … 112 141 ; 113 142 ; 114 RXN2MEDS(RXNCUI) 143 RXN2MEDS(RXNCUI) ; $$ Public - Convert RxNorm value to currently existing drugs in File 50. 115 144 ; Input: SCD RXNCUI 116 145 ; Output; Caret delimited extrinsic … … 123 152 . N VUID S VUID=$P(VUIDS,U,I) 124 153 . N VAPRODS S VAPRODS=$$VUI2VAP(VUID) ; Get VA Product from VUID (multiple products per VUID) 125 . I '$L(VAPRODS) S ^SAM(RXNCUI)="TELL SAM",DONE=1 QUIT; MUST EXIST. Every VUID must have a product to go with it.154 . I '$L(VAPRODS) S $ECODE=",U-NO-VA-PRODUCT-CORRUPT-NDF," ; MUST EXIST. Every VUID must have a product to go with it. 126 155 . N J F J=1:1:$L(VAPRODS,U) D Q:DONE 127 156 . . N VAPROD S VAPROD=$P(VAPRODS,U,J) … … 138 167 ; 139 168 FDI2RXNT ; @TEST - Test Get RxNorm CUI for FDB Ingredient/Base 169 Q:'$D(^C0CRXN(176.001,"STC","NDDF")) 140 170 D CHKEQ^XTMUNIT($$FDI2RXN(14739),1362160,"$$FDI2RXN failed") 141 171 QUIT … … 162 192 Q C0PIEN_"^"_C0P01 163 193 ; 164 VIN2VAGT 194 VIN2VAGT ; @TEST - Test Get VA Generic for VUID Ingredient 165 195 D CHKEQ^XTMUNIT(+$$VIN2VAG(4023636),2832,"$$VIN2VAG failed") 166 196 QUIT … … 202 232 QUIT RXNS 203 233 ; 204 MED2RXN(DA) ; $$ Public - Get RxNorm CUI for Drug 234 VUI2GCN(VUID) ; $$ Public - Get GCNs for a given VUID (any VUID type) 235 ; Input: VUID by Value 236 ; Output: GCNs delimited by ^ 237 ; TODO: Unit Test 238 N RXNS S RXNS=$$VUI2RXN(VUID) 239 N GCNS S GCNS="" 240 N I F I=1:1:$L(RXNS,U) S GCNS=GCNS_$$RXN2GCN($P(RXNS,U,I))_U 241 S GCNS=$E(GCNS,1,$L(GCNS)-1) 242 QUIT GCNS 243 ; 244 MED2RXN(DA) ; $$ Public - Get RxNorm CUI for Drug 205 245 ; Input: DA - Medication IEN 206 246 ; Output: RXNCUIs delimited by ^ … … 212 252 Q $$VUI2RXN(VUID) 213 253 ; 214 MED2SCDN(DA) 254 MED2SCDN(DA) ; $$ Public - Medication to Semantic Clinical Drug Name 215 255 ; Input: DA - Medication IEN 216 256 ; Output: The Canonical Semantic Clinical Drug name … … 239 279 ; --- 240 280 ; 241 NDC2RXN(NDC) 281 NDC2RXN(NDC) ; $$ Public - Get RxCUI given the NDC 242 282 ; NB: Will only work if passed NDC is in 5-4-2 format. 243 283 ; Input: NDC By Value in 5-4-2 Format … … 246 286 N IEN S IEN=$O(^C0CRXN(176.002,"ASAA","RXNORM","NDC",NDC,"")) Q ^(IEN) 247 287 ; 248 NDC2RXNT 288 NDC2RXNT ; @TEST - Test Get RxCUI given the NDC 249 289 D CHKEQ^XTMUNIT($$NDC2RXN("30142-0917-71"),198439,"$$NDC2RXN failed") 250 290 QUIT … … 252 292 ; --- 253 293 ; 254 ISBRAND(RXN) 294 ISBRAND(RXN) ; $$ Public - Is this RxCUI for a brand drug? 255 295 ; Input: RxCUI 256 296 ; Output: 0 or 1 257 297 Q ''$D(^C0CRXN(176.001,"STC","RXNORM","SBD",RXN)) 258 ISBRANDT 298 ISBRANDT ; @TEST - Test Is this RxCUI for a brand drug? 259 299 D CHKEQ^XTMUNIT($$ISBRAND(205535),1,"$$ISBRAND failed") ; Brand Prozac 260 300 D CHKEQ^XTMUNIT($$ISBRAND(310384),0,"$$ISBRAND failed") ; Generic Fluoxetine … … 263 303 ; --- 264 304 ; 265 BR2GEN(RXN) 305 BR2GEN(RXN) ; $$ Public - Convert Brand RxCUI to Generic RxCUI (many to 1) 266 306 ; Input: RxCUI of Brand 267 307 ; Output: RxCUI of Generic 268 308 Q $O(^C0CRXN(176.005,"B",RXN,"has_tradename","")) 269 BR2GENT 309 BR2GENT ; @TEST - Test Convert Brand RxCUI to Generic RxCUI (many to 1) 270 310 D CHKEQ^XTMUNIT($$BR2GEN(205535),310384,"$$BR2GEN failed") 271 311 QUIT … … 273 313 ; --- 274 314 ; 275 GEN2BR(RXN) 315 GEN2BR(RXN) ; $$ Public - Convert Generic RxCUI to Brand RxCUIs (1 to many). 276 316 N RTN S RTN="" ; Return 277 317 N I S I="" F S I=$O(^C0CRXN(176.005,"B",RXN,"tradename_of",I)) Q:'I S RTN=RTN_I_U … … 279 319 Q RTN 280 320 ; 281 GEN2BRT 321 GEN2BRT ; @TEST - Test Convert Generic RxCUI to Brand RxCUIs (1 to many). 282 322 D CHKTF^XTMUNIT($$GEN2BR(310384)[205535,"$$GEN2BR failed") 283 323 QUIT … … 285 325 ; --- 286 326 ; 287 RXN2BNS(RXN) 327 RXN2BNS(RXN) ; $$ Public - Get all Brand Names associated with an RXN 288 328 N BNS S BNS="" 289 329 I $$ISBRAND(RXN) S RXN=$$BR2GEN(RXN) … … 297 337 . S BNS=BNS_$P(^C0CRXN(176.001,BNIEN,0),U,15)_U 298 338 QUIT $E(BNS,1,$L(BNS)-1) 299 RXN2BNST 339 RXN2BNST ; @TEST - Test Get all Brand Names associated with an RXN 300 340 D CHKTF^XTMUNIT($$RXN2BNS(205535)["Prozac","$$RXN2BNS failed") 301 341 QUIT 342 ; 343 ; --- 344 ; 345 RXN2NDC(RXN) ; Get NDC codes for RxNorm code 346 N NDCS S NDCS="" 347 N I F I=0:0 S I=$O(^C0CRXN(176.002,"ASAR","RXNORM","NDC",RXN,I)) Q:'I S NDCS=NDCS_^(I)_"^" 348 S $E(NDCS,$L(NDCS))="" 349 QUIT NDCS 350 RXN2NDCT ; @TEST - Test Get NDC codes for RxNorm code 351 D CHKTF^XTMUNIT($$RXN2NDC(197379)["^"_16714003309,"$$RXN2NDC failed") 352 QUIT
Note:
See TracChangeset
for help on using the changeset viewer.