[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
|
---|