[613] | 1 | VBECA4 ;HINES OI/REL-APIs for Health Summary ;10/12/00 14:02
|
---|
| 2 | ;;0.5;VBECS;**288**;APR 26, 2002
|
---|
| 3 | ; This routine retrieves data maintained by a regulated medical
|
---|
| 4 | ; device. The routine must not be modified by anyone other than the
|
---|
| 5 | ; device manufacturer.
|
---|
| 6 | Q
|
---|
| 7 | TRAN(DFN,TMPLOC,GMTS1,GMTS2) ; Get Transfusion Data for Health Summary
|
---|
| 8 | ; Input variables:
|
---|
| 9 | ; DFN = Internal number of patient
|
---|
| 10 | ; TMPLOC = Node in ^TMP to be used for output data array
|
---|
| 11 | ; GMTS1 = Inverse end date of search
|
---|
| 12 | ; GMTS2 = Inverse start date of search
|
---|
| 13 | ;
|
---|
| 14 | ; Output is data array:
|
---|
| 15 | ; ^TMP(TMPLOC,$J,n)
|
---|
| 16 | N LRDFN,IDT,CNTR,TR,PN,PRODUCT,UNITS,TDT,ITDT
|
---|
| 17 | Q:$G(TMPLOC)=""
|
---|
| 18 | K ^TMP(TMPLOC,$J)
|
---|
| 19 | Q:'$G(DFN)
|
---|
| 20 | S:'$G(GMTS1) GMTS1=5555555 S:'$G(GMTS2) GMTS2=9999999
|
---|
| 21 | S LRDFN=$$LRDFN^LR7OR1(DFN) Q:'LRDFN
|
---|
| 22 | S IDT=GMTS1-1 F S IDT=$O(^LR(LRDFN,1.6,IDT)) Q:+IDT'>0!(IDT>GMTS2) D
|
---|
| 23 | . S TR=$G(^LR(LRDFN,1.6,IDT,0)) D SET
|
---|
| 24 | S IDT=0 F S IDT=$O(CNTR(IDT)) Q:+IDT'>0 D
|
---|
| 25 | . S ^TMP(TMPLOC,$J,IDT)=9999999-IDT_U
|
---|
| 26 | . S PN=0 F S PN=$O(CNTR(IDT,PN)) Q:PN'>0 D
|
---|
| 27 | . . S PRODUCT=$G(^LAB(66,+PN,0)),^TMP(TMPLOC,$J,$P(PRODUCT,U,2))=$P(PRODUCT,U)
|
---|
| 28 | . . S ^TMP(TMPLOC,$J,IDT)=^TMP(TMPLOC,$J,IDT)_CNTR(IDT,PN)_"\"_$P(PRODUCT,U,2)_";"
|
---|
| 29 | Q
|
---|
| 30 | AVUNIT(DFN,TMPLOC,GMTS1,GMTS2,GMTSNDM) ; Get Available Units for Health Summary
|
---|
| 31 | ; Input variables:
|
---|
| 32 | ; DFN = Internal number of patient
|
---|
| 33 | ; TMPLOC = Node in ^TMP to be used for output data array
|
---|
| 34 | ; GMTS1 = Inverse end date of search
|
---|
| 35 | ; GMTS2 = Inverse start date of search
|
---|
| 36 | ; GMTSNDM = Maximum number to be extracted
|
---|
| 37 | ;
|
---|
| 38 | ; Output is data array:
|
---|
| 39 | ; ^TMP(TMPLOC,$J,n)
|
---|
| 40 | N LRDFN,IDT,UN,CNT,ABO,ADT,COMP,DTYP,EDT,EFLG,GMI,RH,UDIV,UID,ULOC,VOL
|
---|
| 41 | Q:$G(TMPLOC)=""
|
---|
| 42 | K ^TMP(TMPLOC,$J)
|
---|
| 43 | Q:'$G(DFN)
|
---|
| 44 | S:'$G(GMTS1) GMTS1=5555555 S:'$G(GMTS2) GMTS2=9999999 S:'$G(GMTSNDM) GMTSNDM=999
|
---|
| 45 | S LRDFN=$$LRDFN^LR7OR1(DFN) Q:'LRDFN
|
---|
| 46 | I $L($P(^LR(LRDFN,0),U,5,6)) S ^TMP(TMPLOC,$J,0)=$P(^(0),U,5)_U_$P(^(0),U,6)
|
---|
| 47 | S UN="",CNT=0 F S UN=$O(^LRD(65,"AP",LRDFN,UN)) Q:UN=""!(CNT'<GMTSNDM) D BASET
|
---|
| 48 | ;K:'CNT ^TMP(TMPLOC,$J)
|
---|
| 49 | Q
|
---|
| 50 | BASET ; Sets ^TMP with data elements
|
---|
| 51 | S (EFLG,DTYP,ULOC)=""
|
---|
| 52 | S UID=$P(^LRD(65,UN,0),U),EDT=$P(^(0),U,6),ABO=$P(^(0),U,7),RH=$P(^(0),U,8),VOL=$P(^(0),U,11),COMP=$P(^LAB(66,$P(^LRD(65,UN,0),U,4),0),U)
|
---|
| 53 | S ADT=$P(^LRD(65,UN,2,LRDFN,0),U,2)
|
---|
| 54 | S UDIV=$P(^LRD(65,UN,0),U,16),UDIV=$$NS^XUAF4(UDIV),UDIV=$P(UDIV,"^",1) ;Gets division unit is located at
|
---|
| 55 | I $D(^LRD(65,UN,8)) D
|
---|
| 56 | . S DIC=65,DIQ="DON",DIQ(0)="E",DR=8.3,DA=UN D EN^DIQ1
|
---|
| 57 | . S:$D(DON) DTYP=DON(65,UN,8.3,"E") K DA,DIC,DIQ,DON,DR Q
|
---|
| 58 | S GMI=$O(^LRD(65,UN,3,0)) I +GMI>0 D
|
---|
| 59 | . S ULOC=$P($G(^LRD(65,UN,3,GMI,0)),U,4)
|
---|
| 60 | ; If unit will expire w/in 48 hrs, flag with "*"; w/in 24 hrs, flag with "**"
|
---|
| 61 | I EDT>DT S EFLG=$S(EDT-DT<2:"*",EDT-DT<1:"**",1:"")
|
---|
| 62 | S IDT=9999999-ADT
|
---|
| 63 | I $S(IDT<GMTS1:1,IDT>GMTS2:1,EDT<DT:1,1:0) Q
|
---|
| 64 | S EDT=$TR($$FMTE^XLFDT(EDT,"5DZ"),"@"," ")
|
---|
| 65 | F Q:'$D(^TMP(TMPLOC,$J,IDT)) S IDT=IDT+.0001
|
---|
| 66 | S ^TMP(TMPLOC,$J,IDT)=EFLG_U_EDT_U_UID_U_COMP_U_VOL_U_ABO_U_RH_U_DTYP_U_UDIV_U_ULOC
|
---|
| 67 | S CNT=CNT+1
|
---|
| 68 | Q
|
---|
| 69 | SET ; Sets CNTR w/appropriate data
|
---|
| 70 | S TDT=9999999-IDT,ITDT=9999999-$P(TDT,".")
|
---|
| 71 | S UNITS=+$P(TR,U,7) S:UNITS'>0 UNITS=1
|
---|
| 72 | S CNTR(ITDT,+$P(TR,U,2))=+$G(CNTR(ITDT,+$P(TR,U,2)))+UNITS
|
---|
| 73 | Q
|
---|