C0CRXNRD ; WV/SMH - CCR/CCD PROJECT: Routine to Read RxNorm files;11/15/08
 ;;0.1;CCDCCR;nopatch;noreleasedate
 W "No entry from top" Q
 ;
READCON(PATH) ; Open and read concepts file: RXNCONSO.RRF
 I PATH="" QUIT
 N FILENAME S FILENAME="RXNCONSO.RRF"
 D OPEN^%ZISH("FILE",PATH,FILENAME,"R")
 IF POP W "Error reading file..., Please check...",! BREAK
 F I=1:1 Q:$$STATUS^%ZISH  D
 . U IO
 . N LINE R LINE
 . IF $$STATUS^%ZISH QUIT
 . U $P W I,! U IO  ; Write I to the screen, then go back to reading the file
 . N RXCUI,RXAUI,SAB,TTY,CODE,STR  ; Fileman fields numbers below
 . S RXCUI=$P(LINE,"|",1)	; .01
 . S RXAUI=$P(LINE,"|",8)	; 1
 . S SAB=$P(LINE,"|",12)	; 2
 . S TTY=$P(LINE,"|",13)	; 3
 . S CODE=$P(LINE,"|",14)	; 4
 . S STR=$P(LINE,"|",15)	; 5
 . ; Remove embedded "^"
 . S STR=$TR(STR,"^")
 . ; Convert STR into an array of 80 characters on each line
 . N STRLINE S STRLINE=$L(STR)\80+1
 . ; In each line, chop 80 characters off, reset STR to be the rest
 . F J=1:1:STRLINE S STR(J)=$E(STR,1,80) S STR=$E(STR,81,$L(STR))
 . ; Now, construct the FDA array
 . N RXNFDA
 . S RXNFDA(176.001,"+"_I_",",.01)=RXCUI
 . S RXNFDA(176.001,"+"_I_",",1)=RXAUI
 . S RXNFDA(176.001,"+"_I_",",2)=SAB
 . S RXNFDA(176.001,"+"_I_",",3)=TTY
 . S RXNFDA(176.001,"+"_I_",",4)=CODE
 . D UPDATE^DIE("","RXNFDA")
 . I $D(^TMP("DIERR",$J)) U $P BREAK
 . ; Now, file WP field STR
 . D WP^DIE(176.001,I_",",5,,$NA(STR))
 D CLOSE^%ZISH("FILE")
 Q
 ;
READNDC(PATH) ; Open and read NDC/RxNorm/VANDF relationship file: RXNSAT.RRF
 I PATH="" QUIT
 N FILENAME S FILENAME="RXNSAT.RRF"
 D OPEN^%ZISH("FILE",PATH,FILENAME,"R")
 IF POP W "Error reading file..., Please check...",! BREAK
 F I=1:1 Q:$$STATUS^%ZISH  D
 . U IO
 . N LINE R LINE
 . IF $$STATUS^%ZISH QUIT
 . U $P W I U IO
 . IF LINE'["NDC|RXNORM" U $P W ?20,"No NDC Here :-)",! U IO QUIT
 . ; Otherwise, we are good to go
 . U $P W ?20,"Found RXNORM/NDC Set",! U IO
 . N RXCUI,NDC ; Fileman fields below
 . S RXCUI=$P(LINE,"|",1)	; .01
 . S NDC=$P(LINE,"|",11)	; 2
 . ; Using classic call to update.
 . N DIC,X,DA,DR
 . K DO
 . S DIC="^C0CRXN(176.002,",DIC(0)="F",X=RXCUI
 . D FILE^DICN
 . I Y<1 U $P W !,"THERE IS TROUBLE IN RIVER CITY",! BREAK
 . S DIE=DIC,DA=$P(Y,"^")
 . S DR="2////^S X=NDC"
 . D ^DIE 
 D CLOSE^%ZISH("FILE")
 U $P ; reset back to principle device
 QUIT
