1 | PSJ59P5 ;BIR/LDT,TSS - API FOR INFORMATION FROM FILE 59.5; 5 Sep 03
|
---|
2 | ;;5.0; INPATIENT MEDICATIONS ;**163,172**;16 DEC 97;Build 13
|
---|
3 | ;
|
---|
4 | ;Reference to ^DG(40.8 - DBIA 2269
|
---|
5 | ;
|
---|
6 | ALL(PSJIEN,PSJFT,LIST) ;
|
---|
7 | ;PSJIEN - IEN of entry in 59.5.
|
---|
8 | ;PSJFT - Free Text name in 59.5 or "??" for all names
|
---|
9 | ;LIST - Subscript of ^TMP array in the form ^TMP($J,LIST,Field Number where Field Number is the
|
---|
10 | ; Field Number of the data piece being returned.
|
---|
11 | ;Returns NAME field (#.01), DIVISION field (#.02), and INACTIVATION DATE field (#19) of IV ROOM file (#59.5).
|
---|
12 | N DIERR,ZZERR,PSJ59P5,SCR,PSJ,PSJIEN2
|
---|
13 | I $G(LIST)']"" Q
|
---|
14 | K ^TMP($J,LIST)
|
---|
15 | I +$G(PSJIEN)'>0,($G(PSJFT)']"") S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q
|
---|
16 | I $G(PSJIEN)]"",+$G(PSJIEN)'>0 S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q
|
---|
17 | I +$G(PSJIEN)>0 S PSJIEN2=$$FIND1^DIC(59.5,"","A","`"_PSJIEN,,,"") D
|
---|
18 | .I +PSJIEN2'>0 S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q
|
---|
19 | .S ^TMP($J,LIST,0)=1
|
---|
20 | .D GETS^DIQ(59.5,+PSJIEN2,".01;.02;19","IE","PSJ59P5") S PSJ(1)=0
|
---|
21 | .F S PSJ(1)=$O(PSJ59P5(59.5,PSJ(1))) Q:'PSJ(1) D SETALL
|
---|
22 | I +$G(PSJIEN)'>0,$G(PSJFT)="??" D Q
|
---|
23 | .D LOOPDIR
|
---|
24 | I +$G(PSJIEN)'>0,$G(PSJFT)]"" D
|
---|
25 | .D FIND^DIC(59.5,,"@;.01;","QP",PSJFT,,"B",,,"")
|
---|
26 | .I +$G(^TMP("DILIST",$J,0))=0 S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q
|
---|
27 | .I +^TMP("DILIST",$J,0)>0 S ^TMP($J,LIST,0)=+^TMP("DILIST",$J,0) N PSJXLP S PSJXLP=0 F S PSJXLP=$O(^TMP("DILIST",$J,PSJXLP)) Q:'PSJXLP D
|
---|
28 | ..S PSJIEN=+^TMP("DILIST",$J,PSJXLP,0) K PSJ59P5 D GETS^DIQ(59.5,+PSJIEN,".01;.02;19","IE","PSJ59P5") S PSJ(1)=0
|
---|
29 | ..F S PSJ(1)=$O(PSJ59P5(59.5,PSJ(1))) Q:'PSJ(1) D SETALL
|
---|
30 | K ^TMP("DILIST",$J)
|
---|
31 | Q
|
---|
32 | ;
|
---|
33 | LOOPDIR ;LOOP FOR A DIRECT READ.
|
---|
34 | N PSJCNT S PSJCNT=0
|
---|
35 | S PSJIEN2=0
|
---|
36 | F S PSJIEN2=$O(^PS(59.5,PSJIEN2)) Q:'PSJIEN2 D
|
---|
37 | .D SETDIR
|
---|
38 | D COUNT
|
---|
39 | Q
|
---|
40 | ;
|
---|
41 | SETALL ;
|
---|
42 | S ^TMP($J,LIST,+PSJ(1),.01)=$G(PSJ59P5(59.5,PSJ(1),.01,"I"))
|
---|
43 | S ^TMP($J,LIST,"B",$G(PSJ59P5(59.5,PSJ(1),.01,"I")),+PSJ(1))=""
|
---|
44 | S ^TMP($J,LIST,+PSJ(1),.02)=$S($G(PSJ59P5(59.5,PSJ(1),.02,"I"))="":"",1:PSJ59P5(59.5,PSJ(1),.02,"I")_"^"_PSJ59P5(59.5,PSJ(1),.02,"E"))
|
---|
45 | S ^TMP($J,LIST,+PSJ(1),19)=$S($G(PSJ59P5(59.5,PSJ(1),19,"I"))="":"",1:PSJ59P5(59.5,PSJ(1),19,"I")_"^"_PSJ59P5(59.5,PSJ(1),19,"E"))
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | SETDIR ;
|
---|
49 | S ^TMP($J,LIST,+PSJIEN2,.01)=$P($G(^PS(59.5,PSJIEN2,0)),U,1)
|
---|
50 | S ^TMP($J,LIST,"B",$P($G(^PS(59.5,PSJIEN2,0)),U,1),+PSJIEN2)=""
|
---|
51 | S ^TMP($J,LIST,+PSJIEN2,.02)=$S($P($G(^PS(59.5,PSJIEN2,0)),U,4)="":"",1:$P($G(^PS(59.5,PSJIEN2,0)),U,4)_"^"_$P($G(^DG(40.8,$P($G(^PS(59.5,PSJIEN2,0)),U,4),0)),U,1))
|
---|
52 | S ^TMP($J,LIST,+PSJIEN2,19)=$S($P($G(^PS(59.5,PSJIEN2,"I")),U,1)="":"",1:$P($G(^PS(59.5,PSJIEN2,"I")),U,1)_"^"_$$GETDATE($P($G(^PS(59.5,PSJIEN2,"I")),U,1)))
|
---|
53 | S PSJCNT=PSJCNT+1
|
---|
54 | Q
|
---|
55 | ;
|
---|
56 | GETDATE(PSJDATE) ;RETURNS FORMATTED DATE
|
---|
57 | N Y S Y=PSJDATE X ^DD("DD")
|
---|
58 | Q $G(Y)
|
---|
59 | ;
|
---|
60 | WRT(PSJDFN,PSJVAL,LIST) ;Sets Division field
|
---|
61 | ;PSJDFN = IV ROOM (REQUIRED)
|
---|
62 | ;PSJVAL = Division (REQUIRED)
|
---|
63 | ;LIST: Subscript name used in ^TMP global [REQUIRED]
|
---|
64 | I $G(PSJDFN)'>0 Q
|
---|
65 | I $G(PSJVAL)="" Q
|
---|
66 | I $G(LIST)="" Q
|
---|
67 | I '$D(^PS(59.5,PSJDFN)) S ^TMP($J,LIST,0)=0 Q
|
---|
68 | I $G(PSJVAL)'>0 S ^TMP($J,LIST,0)=0 Q
|
---|
69 | I '$D(^DG(40.8,PSJVAL,0)) S ^TMP($J,LIST,0)=0 Q
|
---|
70 | S $P(^PS(59.5,PSJDFN,0),"^",4)=PSJVAL,^TMP($J,LIST,0)=1 K PSJVAL,PSJDFN Q
|
---|
71 | COUNT ;
|
---|
72 | I PSJCNT>0 S ^TMP($J,LIST,0)=PSJCNT
|
---|
73 | ELSE S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND"
|
---|
74 | Q
|
---|
75 | ;
|
---|