1 | RMPOLZC ;EDS/PAK - HOME OXYGEN LETTERS ;7/24/98
|
---|
2 | ;;3.0;PROSTHETICS;**55**;Feb 09, 1996
|
---|
3 | ;
|
---|
4 | ; ODJ - patch 55 - Need to split RMPOLZ as over 10K
|
---|
5 | ;
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | LST ; Check Letters List
|
---|
9 | ; Input:
|
---|
10 | ; JOB - 1: job, 0: interactive
|
---|
11 | ; Output:
|
---|
12 | ; LST(list parameters) - 0: no action
|
---|
13 | ; 1: use current list
|
---|
14 | ; 2: create new list
|
---|
15 | S (RL,RMLSTF,LST)=0,%=2
|
---|
16 | S RMBAT1=$O(^RMPR(669.9,RMPOXITE,"RMPOXBAT1",0))
|
---|
17 | S RMBAT2=$O(^RMPR(669.9,RMPOXITE,"RMPOXBAT2",0))
|
---|
18 | S RMBAT3=$O(^RMPR(669.9,RMPOXITE,"RMPOXBAT3",0))
|
---|
19 | I $G(RMBAT1)!$G(RMBAT2)!$G(RMBAT3) S RMLSTF=1 ; if already a patient list in existance exit
|
---|
20 | I JOB S LST=1 Q ; use current list as default if run in background
|
---|
21 | LST1 I RMLSTF W !,"A list of patient letters to be printed already exists",!,"Do you wish to manage the current list" D YN^DICN
|
---|
22 | S:%=1 LST=1 S:%=-1 LST=0 S:%=2 RL=2 I %=0 W !,"Answer with 'Y' or 'N' " S %=2 G LST1
|
---|
23 | LST2 I RL=2 S %=2 W !,"Do you wish to generate a new list which will discard any edits" D YN^DICN S:%=1 LST=1 S:%=2 LST=2 S:%=-1 LST=0 I %=0 W !,"Answer with 'Y' or 'N' " S %=2 G LST2
|
---|
24 | Q
|
---|
25 | ;
|
---|
26 | PURGE ; Purge current patient letter list
|
---|
27 | S RMPOLTR=0 F S RMPOLTR=$O(^RMPR(665,"ALTR",RMPOLTR)) Q:RMPOLTR="" D
|
---|
28 | . S RMPODFN=0 F S RMPODFN=$O(^RMPR(665,"ALTR",RMPOLTR,RMPODFN)) Q:RMPODFN="" D UPDLTR^RMPOLZA(RMPODFN,"@")
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | LTRCR() ; build local array CROSS REFERENCE of H.O. letter Code to Letter
|
---|
32 | ; ! assumes a letter code can have many letter templates but one !
|
---|
33 | ; ! template is of a particluar type e.g. a 30,60,90 & 120 Day H.O. !
|
---|
34 | ; ! letters are all of type "B" : prescription pending expiry. !
|
---|
35 | ; Input:
|
---|
36 | ; JOB - 1: job, 0: interactive
|
---|
37 | ; Output:
|
---|
38 | ; LTRX("A",Letter Code,Prosthetics Letter IEN)
|
---|
39 | ; LTRX("B",Prosthetics Letter IEN)=Letter Code
|
---|
40 | ; LTRX("C",Letter Code)=Prosthetics Letter IEN
|
---|
41 | ; LTRX("D",Letter Code)=days till expiry (patch 55)
|
---|
42 | ; ^TMP($J,RMPOXITE,"HEADER",RMPOLTR)= 0: No Letter header
|
---|
43 | N LTRIEN,REC,HEAD,X1,X2,X,%H,%T,%,%I,RMPONOW
|
---|
44 | D NOW^%DTC S RMPONOW=X
|
---|
45 | S LTRIEN=0 F S LTRIEN=$O(^RMPR(669.9,RMPOXITE,"RMPOLET",LTRIEN)) Q:LTRIEN<1 D
|
---|
46 | . S REC=^RMPR(669.9,RMPOXITE,"RMPOLET",LTRIEN,0)
|
---|
47 | . ; if run is backgrd and letters are NOT to be autogenerated then do not list
|
---|
48 | . ; the letter as a valid H.O. letter
|
---|
49 | . I JOB,'$P(REC,U,4) Q
|
---|
50 | . S RMPOLTR=$P(REC,U),RMPOLCD=$P(REC,U,2),RMPOGEN=$P(REC,U,4)
|
---|
51 | . I RMPOLCD=""!(RMPOLTR="")!('$G(RMPOGEN)) Q
|
---|
52 | . S ^TMP($J,RMPOXITE,"HEADER",RMPOLTR)=$P(REC,U,5)
|
---|
53 | . S LTRX("A",RMPOLCD,RMPOLTR)="",LTRX("B",RMPOLTR)=RMPOLCD
|
---|
54 | . S LTRX("C",RMPOLCD)=RMPOLTR
|
---|
55 | . ;
|
---|
56 | . ; calc. a date after which prescription expiry dates will
|
---|
57 | . ; not generate a given letter
|
---|
58 | . S X1=RMPONOW,X2=$P(REC,U,3) D C^%DTC
|
---|
59 | . S LTRX("D",RMPOLCD)=X
|
---|
60 | Q
|
---|
61 | ;
|
---|
62 | ; Get active prescription
|
---|
63 | RXAC(RMPRPAT) ;
|
---|
64 | N RMPRX,RMPRS,X,%,%H,%I,RMPROK,RMDACT,RMDEXP,TODAY,RMPRIEN
|
---|
65 | D NOW^%DTC
|
---|
66 | S TODAY=X
|
---|
67 | S RMPRIEN=0
|
---|
68 | S RMPRX=":"
|
---|
69 | F S RMPRX=$O(^RMPR(665,RMPRPAT,"RMPOB",RMPRX),-1) Q:'+RMPRX D Q:RMPRIEN
|
---|
70 | . S RMPRS=^RMPR(665,RMPRPAT,"RMPOB",RMPRX,0)
|
---|
71 | . S RMDACT=$P(RMPRS,"^",1)
|
---|
72 | . S RMDEXP=$P(RMPRS,"^",3)
|
---|
73 | . I RMDACT'="",RMDACT'>TODAY D
|
---|
74 | .. I RMDEXP="" S RMPRIEN=RMPRX Q
|
---|
75 | .. I RMDEXP>TODAY S RMPRIEN=RMPRX Q
|
---|
76 | .. Q
|
---|
77 | . Q
|
---|
78 | Q RMPRIEN
|
---|