Index: ccr/trunk/rxnorm/trunk/routines/C0CRXNLK.m
===================================================================
--- ccr/trunk/rxnorm/trunk/routines/C0CRXNLK.m	(revision 1615)
+++ ccr/trunk/rxnorm/trunk/routines/C0CRXNLK.m	(revision 1617)
@@ -1,3 +1,3 @@
-C0CRXNLK	; VEN/SMH - RxNorm Lookup Utilities ;2013-04-08  5:00 PM
+C0CRXNLK	; VEN/SMH - RxNorm Lookup Utilities ;2013-04-10  7:01 PM
 	;;1.0;RX NORM;;Apr 25, 2012;Build 99
 	;(c) Sam Habiel 2013
@@ -9,4 +9,9 @@
 	D EN^XTMUNIT($T(+0),1)
 	QUIT
+	;
+EXIST(RXN) ; $$ Public - Does this RxNorm CUI exist?
+	; Input: RxNorm CUI by value
+	; Output: Extrinsic
+	Q ''$D(^C0CRXN(176.001,"B",RXN))
 	;
 GCN2RXN(GCN)	; $$ Public - Get RxNorm CUI using GCN
@@ -62,8 +67,12 @@
 	;
 	;
-VUI2VAP(VUID)	; $$ Public - Get VA Product IEN from VUID
+VUI2VAP(VUID)	; $$ Public - Get VA Product IEN(s) from VUID
 	; Input VUID by Value
 	; Output: Extrinsic
-	Q $$FIND1^DIC(50.68,"","QX",VUID,"AVUID")
+	D FIND^DIC(50.68,,"@","QP",VUID,,"AVUID") ; Find all in VUID index
+	N O S O="" ; Output
+	N I F I=0:0 S I=$O(^TMP("DILIST",$J,I)) Q:'I  S O=O_^(I,0)_U ; Concat results together
+	S O=$E(O,1,$L(O)-1) ; remove trailing ^
+	Q O
 	;
 VUI2VAPT ; @TEST - Get VA Product IEN from VUID
@@ -80,4 +89,5 @@
 	;;4003335;2756
 	;;4002469;1884
+	;;4009488;9046^10090
 	;;<<END>>
 	;
@@ -106,8 +116,16 @@
 	; Output; Caret delimited extrinsic
 	; Un-unit testable
-	N VUIDS S VUIDS=$$RXN2VUI(RXNCUI) ; Get VUID from RXNCUI
-	; TODO: Decide which VUID to use!
-	N VAPROD S VAPROD=$$VUI2VAP(VUIDS) ; Get VA Product from VUID
-	N MEDS S MEDS=$$VAP2MED(VAPROD) ; Get Meds from VA Product
+	N VUIDS S VUIDS=$$RXN2VUI(RXNCUI) ; Get VUID from RXNCUI (multiple VUIDs per CUI)
+	Q:'VUIDS ""
+	N MEDS S MEDS=""
+	N DONE S DONE=0
+	N I F I=1:1:$L(VUIDS,U) D  Q:DONE
+	. N VUID S VUID=$P(VUIDS,U,I)
+	. N VAPRODS S VAPRODS=$$VUI2VAP(VUID) ; Get VA Product from VUID (multiple products per VUID)
+	. I '$L(VAPRODS) S ^SAM(RXNCUI)="TELL SAM",DONE=1 QUIT  ; MUST EXIST. Every VUID must have a product to go with it.
+	. N J F J=1:1:$L(VAPRODS,U) D  Q:DONE
+	. . N VAPROD S VAPROD=$P(VAPRODS,U,J)
+	. . S MEDS=$$VAP2MED(VAPROD) ; Get Meds from VA Product
+	. . I $L(MEDS) S DONE=1
 	QUIT MEDS
 	;
@@ -271,4 +289,5 @@
 	I $$ISBRAND(RXN) S RXN=$$BR2GEN(RXN)
 	N ALLBN S ALLBN=$$GEN2BR(RXN)
+	Q:ALLBN="" ""
 	N BNNO F BNNO=1:1:$L(ALLBN,U) D
 	. N EACHBN S EACHBN=$P(ALLBN,U,BNNO)
