| [613] | 1 | IMRRX ; HCIOFO-FAI/EXTRACT PHARMACY DATA FOR IMR REGISTRY ; 12/24/02 9:31am | 
|---|
|  | 2 | ;;2.1;IMMUNOLOGY CASE REGISTRY;**3,8,5,15,18,19**;Feb 09, 1998 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ;***** EXTRACTS THE OUTPATIENT PHARMACY DATA | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ; IMRSD         Start date | 
|---|
|  | 7 | ; [IMRED]       End date (unlimited by default) | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | GET(IMRSD,IMRED) ; | 
|---|
|  | 10 | N IMRP,IMRR,NODE | 
|---|
|  | 11 | S NODE=$NA(^PS(55,IMRDFN,"P")),IMRRX=0 | 
|---|
|  | 12 | S:$G(IMRED)'>0 IMRED=9999999 | 
|---|
|  | 13 | ;--- Get outpatient pharmacy data | 
|---|
|  | 14 | S IMRP=IMRSD-1 | 
|---|
|  | 15 | F  S IMRP=$O(@NODE@("A",IMRP))  Q:IMRP'>0  D | 
|---|
|  | 16 | . S IMRR=0 | 
|---|
|  | 17 | . F  S IMRR=$O(@NODE@("A",IMRP,IMRR))  Q:IMRR'>0  D RX^IMRUTL,OPT | 
|---|
|  | 18 | ;--- Cleanup | 
|---|
|  | 19 | K IMREXP,X,IMRX3,IMRDST,IMRX,IMRN,IMRRI,IMRNDF,IMRSTR,IMRRXD1,IMRRXDR,IMRPS,IMRRXD,IMRCL,IMRXX1,IMREF,IMRDST,IMRAR,IMRDSUP,IMRDU,IMRUCST,IMRQ | 
|---|
|  | 20 | Q | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ;***** OUTPATIENT PHARMACY (RX SEGMENT) | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | ; Uses the data loaded by the RX^IMRUTL (^TMP("PSOR",$J,...) | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | ; piece 4=$S(0:original fill,1:1-n:refill number) | 
|---|
|  | 27 | ; piece 5 (IMRRXD)=last dispensed date | 
|---|
|  | 28 | ; piece 6 (IMRQ)=Quantity | 
|---|
|  | 29 | ; piece 7 (IMRDSUP)=days supply | 
|---|
|  | 30 | ; piece 8 (IMREF)=# of refills | 
|---|
|  | 31 | ; piece 9 (IMRPS)=patient status | 
|---|
|  | 32 | ; piece 10 (IMRCL)=clinic | 
|---|
|  | 33 | ; piece 11 (IMRUCST)=unit price of drugs | 
|---|
|  | 34 | ; piece 12 (IMRXSIG)=SIG | 
|---|
|  | 35 | ; piece 13 (IMRNDF)=national drug file entry external format | 
|---|
|  | 36 | ; piece 14 (IMRNFN)=National drug file entry internal format | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | OPT ; | 
|---|
|  | 39 | N BUF,TMP | 
|---|
|  | 40 | I 'IMRRXD1!('IMRXX1)  Q  ;quit if no issue date or drug | 
|---|
|  | 41 | ;--- Quit if status is canceled or deleted | 
|---|
|  | 42 | I IMRDST="CANCELLED"!(IMRDST="DELETED")  Q | 
|---|
|  | 43 | ;--- Quit if expiration is not greater than extract start date | 
|---|
|  | 44 | I IMREXP,IMREXP'>IMRSD  Q | 
|---|
|  | 45 | ;--- Get internal name of national drug | 
|---|
|  | 46 | S IMRNDF=$$NDF(IMRXX1,$S(+$G(IMRTRANS):"I",1:"")) | 
|---|
|  | 47 | ;--- Get external name of national drug | 
|---|
|  | 48 | S IMRNFN=$$NDF(IMRXX1,$S(+$G(IMRTRANS):"E",1:"")) | 
|---|
|  | 49 | S IMRX3="RX^"_(IMRRXD1\1)_"^"_IMRRXDR  ; RX^issue date^drug | 
|---|
|  | 50 | ;--- If no last dispensed date, set last dispensed date =issue date | 
|---|
|  | 51 | S:'IMRRXD IMRRXD=IMRRXD1 | 
|---|
|  | 52 | ;--- Use fill date if available | 
|---|
|  | 53 | S:IMRFILDT IMRRXD=IMRFILDT | 
|---|
|  | 54 | ;--- If no unit price of drugs, set it equal to price per | 
|---|
|  | 55 | ;--- dispensed unit | 
|---|
|  | 56 | S:'IMRUCST IMRUCST=IMRDU | 
|---|
|  | 57 | ;--- If last dispensed date'<start date AND last dispensed date'>end | 
|---|
|  | 58 | ;--- date, set message node. | 
|---|
|  | 59 | I IMRRXD'<IMRSD,IMRRXD'>IMRED  D | 
|---|
|  | 60 | . S IMRC=IMRC+1 | 
|---|
|  | 61 | . S ^TMP($J,"IMRX",IMRC)=IMRX3_"^0^"_IMRRXD_"^"_IMRQ_"^"_IMRDSUP_"^"_IMREF_"^"_IMRPS_"^"_IMRCL_"^"_IMRUCST_"^^"_IMRNDF_"^"_IMRNFN | 
|---|
|  | 62 | . S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="RXS^"_IMRXSIG | 
|---|
|  | 63 | . S IMRSEND=1  D LCHK^IMRDAT | 
|---|
|  | 64 | . S:IMRRXD>IMRRX IMRRX=IMRRXD | 
|---|
|  | 65 | ;--- Process the refills | 
|---|
|  | 66 | S IMRN="",IMRRI=0 | 
|---|
|  | 67 | F  S IMRN=$O(^TMP("PSOR",$J,IMRR,"REF",IMRN))  Q:IMRN=""  D | 
|---|
|  | 68 | . S BUF=$G(^TMP("PSOR",$J,IMRR,"REF",IMRN,0)) | 
|---|
|  | 69 | . S IMRRXD=$P(BUF,"^")     ; Refill date | 
|---|
|  | 70 | . Q:(IMRRXD'>IMRSD)!(IMRRXD>IMRED) | 
|---|
|  | 71 | . S IMRUCST=$P(BUF,"^",6)  ; Current unit price of drug | 
|---|
|  | 72 | . ;--- If no current unit price, set IMRUCST=price per dispensed unit | 
|---|
|  | 73 | . S:'IMRUCST IMRUCST=IMRDU | 
|---|
|  | 74 | . ;--- Add RX and RXS segments | 
|---|
|  | 75 | . S IMRRI=IMRRI+1,IMRC=IMRC+1 | 
|---|
|  | 76 | . S ^TMP($J,"IMRX",IMRC)=IMRX3_"^"_IMRRI_"^"_IMRRXD_"^"_$P(BUF,"^",4)_"^"_$P(BUF,"^",5)_"^^^^"_IMRUCST_"^^"_IMRNDF_"^"_IMRNFN | 
|---|
|  | 77 | . S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)="RXS^"_IMRXSIG | 
|---|
|  | 78 | . S IMRSEND=1  D LCHK^IMRDAT | 
|---|
|  | 79 | . S:IMRRXD>IMRRX IMRRX=IMRRXD | 
|---|
|  | 80 | Q | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | NDF(IMRDRG0,IMRFLG) ; Input: PSDRUG IEN, and either "I" or "E" or NULL for | 
|---|
|  | 83 | ;                 Internal or External data format.  A Null,"", will | 
|---|
|  | 84 | ;                 return the external format. | 
|---|
|  | 85 | ;                 RETURN: NDF IEN for Internal or NDF name for External. | 
|---|
|  | 86 | S IMRDRG1="" | 
|---|
|  | 87 | I $T(^PSNAPIS)]"","E"[IMRFLG,IMRDRG0,$P($G(^PSDRUG(IMRDRG0,"ND")),"^") S IMRDRG1=$$VAGN^PSNAPIS($P($G(^PSDRUG(IMRDRG0,"ND")),"^")) G EXIT ;use api if available | 
|---|
|  | 88 | G:'IMRDRG0 EXIT | 
|---|
|  | 89 | I IMRFLG="I" S IMRDRG1=$$GET1^DIQ(50,IMRDRG0,20,IMRFLG) ;File 50=DRUG file (^PSDRUG), field #20 is national drug file entry (pointer) | 
|---|
|  | 90 | EXIT Q IMRDRG1 | 
|---|