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