1 | SDSCUTL ;ALB/JAM/RBS - ASCD Utility Program ; 4/24/07 4:26pm
|
---|
2 | ;;5.3;Scheduling;**495**;Aug 13, 1993;Build 50
|
---|
3 | ;;MODIFIED FOR NATIONAL RELEASE from a Class III software product
|
---|
4 | ;;known as Service Connected Automated Monitoring (SCAM).
|
---|
5 | ;
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | TYPE ; Select proper user type based on security key.
|
---|
9 | ; called by routines: SDSCEDT,SDSCLST,SDSCMSR,SDSCRP1,SDSCSSD
|
---|
10 | ; sets variables: SDTYPE,SDSCTAT,SDOPT,SDSCCR
|
---|
11 | ; (should be killed by calling routines)
|
---|
12 | I $G(SDTYPE)=""!($G(SDSCTAT)="")!($G(SDOPT)="") D
|
---|
13 | . I $D(^XUSEC("SDSC SUPER",DUZ)) D Q
|
---|
14 | .. ; Supervisor can look at encounters with any status.
|
---|
15 | .. S SDTYPE="S",SDSCTAT="",SDOPT="SA^Y:YES;N:NO;S:SKIP;R:REVIEW"
|
---|
16 | .. S SDSCCR=""
|
---|
17 | .. Q
|
---|
18 | . I $D(^XUSEC("SDSC CLINICAL",DUZ)) D Q
|
---|
19 | .. ; Clinician can only look at encounters with a status of REVIEW.
|
---|
20 | .. S SDTYPE="C",SDSCTAT="R",SDOPT="SA^Y:YES;N:NO;S:SKIP;R:REVIEW"
|
---|
21 | .. S SDSCCR="I $P(^(0),U,5)=SDSCTAT"
|
---|
22 | .. Q
|
---|
23 | . ; User (default) can only look at encounters with a status of NEW.
|
---|
24 | . S SDTYPE="U",SDSCTAT="N",SDOPT="SA^Y:YES;N:NO;S:SKIP;R:REVIEW"
|
---|
25 | . S SDSCCR="I $P(^(0),U,5)=SDSCTAT"
|
---|
26 | . Q
|
---|
27 | Q
|
---|
28 | ;
|
---|
29 | NBFP(SDOE) ; Is first-party non-billable based on either clinic, stop code, or patient?
|
---|
30 | N SDOE0,SDPAT,SDOEDT
|
---|
31 | I $G(SDOE)="" Q 0
|
---|
32 | S SDOE0=$$GETOE^SDOE(SDOE),SDPAT=$P(SDOE0,U,2),SDOEDT=+SDOE0
|
---|
33 | I '+$$FIRST^IBRSUTL(SDOE) Q 1
|
---|
34 | Q 0
|
---|
35 | ;
|
---|
36 | NBTP(SDOE) ; Is third-party non-billable based on either clinic, stop code, or patient?
|
---|
37 | N SDOE0,SDPAT,SDOEDT,SDCOV
|
---|
38 | I $G(SDOE)="" Q 0
|
---|
39 | S SDOE0=$$GETOE^SDOE(SDOE),SDPAT=$P(SDOE0,U,2),SDOEDT=+SDOE0
|
---|
40 | I '+$$THIRD^IBRSUTL(SDOE) Q 1
|
---|
41 | ; ICR#: 4419 (SUPPORTED) - look for Outpatient coverage
|
---|
42 | S SDCOV=$S($$INSUR^IBBAPI(SDPAT,SDOEDT,"O","",16)<1:0,1:1)
|
---|
43 | I 'SDCOV Q 1
|
---|
44 | Q 0
|
---|
45 | ;
|
---|
46 | SENS(SDFN,SDFLG) ; Check for Sensitive Patient
|
---|
47 | ; Input
|
---|
48 | ; SDFN - Patient IEN
|
---|
49 | ; SDFLG - '1' if called from ListMan edit
|
---|
50 | ; - '0' if called from roll-and-scroll
|
---|
51 | ; Returns
|
---|
52 | ; '0' - OK to view (patient is not sensitive, user has key, or answered 'OK')
|
---|
53 | ; '1' - not OK to view patient (patient is sensitive, user does not have key and answered 'NO')
|
---|
54 | ;
|
---|
55 | N SDANS
|
---|
56 | S SDANS=0
|
---|
57 | I +$P($G(^DGSL(38.1,+SDFN,0)),U,2) D
|
---|
58 | . NEW DIC,Y,DFN,X,VADM
|
---|
59 | . S DFN=SDFN D DEM^VADPT
|
---|
60 | . I $G(SDFLG)=0 W !!,$E(VADM(1),1,25)_" ("_$E($P(VADM(2),U),6,9)_")",!!
|
---|
61 | . I $G(SDFLG)=1 D FULL^VALM1
|
---|
62 | . S DIC(0)="AE",Y=SDFN
|
---|
63 | . D ^DGSEC
|
---|
64 | . I Y<0 S SDANS=1
|
---|
65 | . I $D(^XUSEC("DG SENSITIVITY",DUZ)) D
|
---|
66 | .. ; If user holds key, prevent sensitive patient warning from scrolling off screen
|
---|
67 | .. N DIR W ! S DIR(0)="E" D ^DIR
|
---|
68 | .D KVA^VADPT
|
---|
69 | Q SDANS
|
---|
70 | ;
|
---|
71 | DIV ; Ask for Division
|
---|
72 | N SDN
|
---|
73 | S SDN=0
|
---|
74 | F S SDN=$O(^DG(40.8,SDN)) Q:'SDN D
|
---|
75 | . S DIR("A",SDN)=SDN_" "_$P(^DG(40.8,SDN,0),"^",1)
|
---|
76 | . S SCLN=SDN
|
---|
77 | S SCLN=SCLN+1,DIR("A",SCLN)=SCLN_" ALL"
|
---|
78 | S DIR(0)="L^1:"_SCLN,DIR("B")=SCLN
|
---|
79 | S DIR("A")="Select DIVISION"
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | SRV ; Ask for Clinic Service
|
---|
83 | N TDIR
|
---|
84 | S TDIR="M:MEDICINE;S:SURGERY;P:PSYCHIATRY;R:REHAB MEDICINE;N:NEUROLOGY;0:NONE;"
|
---|
85 | S TDIR=TDIR_"A:ALL"
|
---|
86 | S DIR(0)="S^"_TDIR,DIR("A")="Select SERVICE"
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | STEDT(SDOE,SDTYPE,SDRFLG,SDSCC) ; Store the TRACK EDITS multiple for encounter
|
---|
90 | ; Input:
|
---|
91 | ; SDOE - Encounter IEN
|
---|
92 | ; SDTYPE - Type of User - (Supervisor, Clinician, User)
|
---|
93 | ; SDRFLG - Review flag var
|
---|
94 | ; SDSCC - visit file service connected value (1/0)
|
---|
95 | ;
|
---|
96 | ; Output: none
|
---|
97 | ;
|
---|
98 | ; First add a new entry to the multiple.
|
---|
99 | Q:'$G(SDOE)
|
---|
100 | N DD,DO,X,DA,DIC,DIE,DLAYGO,SDIENS,SDPD,SDVBA,ERR
|
---|
101 | I '$D(^SDSC(409.48,SDOE,1,0)) S ^SDSC(409.48,SDOE,1,0)="^409.481^^"
|
---|
102 | S X=$P(^SDSC(409.48,SDOE,1,0),U,3)+1
|
---|
103 | S DA(1)=SDOE,DA=X,DIC="^SDSC(409.48,"_DA(1)_",1,",DIE=DIC
|
---|
104 | S DLAYGO=409.481,DIC("P")=DLAYGO,DIC(0)="L"
|
---|
105 | K DD,DO
|
---|
106 | D FILE^DICN
|
---|
107 | K DD,DO
|
---|
108 | ; Next update the fields within the multiple.
|
---|
109 | S SDIENS=$$IENS^DILF(.DA)
|
---|
110 | S SDPD(409.481,SDIENS,.02)=DT
|
---|
111 | S SDPD(409.481,SDIENS,.03)=DUZ
|
---|
112 | S SDPD(409.481,SDIENS,.04)=$G(SDTYPE)
|
---|
113 | ; If user answered "REVIEW", set the review flag to "YES".
|
---|
114 | ; Else, set SERV. CONNECT (OK BY USER?) field with current SC status.
|
---|
115 | I $G(SDRFLG)=1 S SDPD(409.481,SDIENS,.06)=1
|
---|
116 | E S SDPD(409.481,SDIENS,.05)=$G(SDSCC)
|
---|
117 | D FILE^DIE("","SDPD","ERR")
|
---|
118 | ;
|
---|
119 | ; -- If not "REVIEW" flag,
|
---|
120 | ; Set file;field (#409.48;.09) SERV. CONNECT (OK BY VBA/ICD?)
|
---|
121 | ; equal to the VBA/ICD9 match result.
|
---|
122 | I '$G(SDRFLG) D
|
---|
123 | . K SDPD,ERR
|
---|
124 | . S SDVBA=$$SC^SDSCAPI(,,SDOE)
|
---|
125 | . S SDPD(409.48,SDOE_",",.09)=$P(SDVBA,U,3)
|
---|
126 | . D FILE^DIE("","SDPD","ERR")
|
---|
127 | Q
|
---|
128 | ;
|
---|
129 | CONT ; Standard press RETURN to continue prompt.
|
---|
130 | N DIR,X,Y,DTOUT,DUOUT
|
---|
131 | S DIR(0)="EA"
|
---|
132 | S DIR("A")="Enter RETURN to continue "
|
---|
133 | D ^DIR
|
---|
134 | I $D(DTOUT)!$D(DUOUT) S SDQFLG=1
|
---|
135 | W @IOF,!,"Encounter ",SDOE," (cont'd)"
|
---|
136 | Q
|
---|
137 | ;
|
---|
138 | ANCPKG(SCEIEN) ;check if visit came from an ancillary package & if to continue
|
---|
139 | N PCEIEN,DIR,DA,X,Y
|
---|
140 | I '$G(SCEIEN) Q 1
|
---|
141 | S PCEIEN=$P($$GETOE^SDOE(SCEIEN),"^",5) I 'PCEIEN Q 1
|
---|
142 | I $P($G(^AUPNVSIT(PCEIEN,150)),"^",3)'="A" Q 1
|
---|
143 | W $C(7)
|
---|
144 | S DIR("A",1)="WARNING: This encounter came from another package. If it is changed"
|
---|
145 | S DIR("A",2)=" it will not agree with what is in the originating package."
|
---|
146 | S DIR("A",3)=" "
|
---|
147 | S DIR("A")="Do you want to continue with this encounter"
|
---|
148 | S DIR("B")="YES",DIR(0)="Y"
|
---|
149 | D ^DIR
|
---|
150 | Q $S(Y:1,Y<0:1,1:0)
|
---|
151 | NCTCL(SDCLIN) ;Checks if a non-count clinic
|
---|
152 | I $P($G(^SC(+SDCLIN,0)),U,17)="Y" Q 1
|
---|
153 | Q 0
|
---|
154 | SCHNG(SDOE) ;Checks if a completed encounter SC value was changed.
|
---|
155 | ;Input: SDOE - Encounter IEN
|
---|
156 | ;Output: SC Changed^Orignal Value(1 or 0)^Last Value(1 or 0)
|
---|
157 | ; SC Changed: 0-no change, 1-change
|
---|
158 | ; Null is return if invalid
|
---|
159 | N SDVAL,SDORG,SDUSR
|
---|
160 | I $G(SDOE)="" Q ""
|
---|
161 | S SDVAL=$G(^SDSC(409.48,SDOE,0)) I SDVAL="" Q ""
|
---|
162 | I $P(SDVAL,"^",5)'="C" Q ""
|
---|
163 | S SDORG=$P(SDVAL,U,13),SDUSR=$P(SDVAL,U,6)
|
---|
164 | I SDORG="" S SDORG=1
|
---|
165 | Q $S(SDORG=SDUSR:0,1:1)_U_SDORG_U_SDUSR
|
---|
166 | ;
|
---|
167 | LOCK(SCIEN) ;Locks an ASCD record.
|
---|
168 | ; This function locks an ASCD so as to prevent another process from
|
---|
169 | ; editing the same record.
|
---|
170 | ; Input: SCIEN - IEN of record in file #409.48
|
---|
171 | ;
|
---|
172 | ; Output: Returns 1 if lock was successful, 0 otherwise
|
---|
173 | ;
|
---|
174 | I $G(SCIEN) L +^SDSC(409.48,SCIEN):5
|
---|
175 | Q $T
|
---|
176 | ;
|
---|
177 | UNLOCK(SCIEN) ;Unlocks an ASCD record.
|
---|
178 | ; This function releases the lock on an ASCD record created by $$LOCK.
|
---|
179 | ; Input: SCIEN - IEN of record in file #409.48
|
---|
180 | ;
|
---|
181 | ; Output: None
|
---|
182 | ;
|
---|
183 | I $G(SCIEN) L -^SDSC(409.48,SCIEN)
|
---|
184 | Q
|
---|
185 | ;
|
---|
186 | SCSEL() ;Prompts for the type of service connection records to review.
|
---|
187 | ; Input: No input required
|
---|
188 | ; Output: 1 - SC, 0 - NSC, 2 - All and "" (null)
|
---|
189 | N DIR
|
---|
190 | W !,"Service Connected Encounters Review Selection"
|
---|
191 | S DIR(0)="SO^S:Service Connected;N:Non-Service Connected;A:All"
|
---|
192 | S DIR("B")="S",DIR("A")="Which type do you want to review?"
|
---|
193 | D ^DIR I $D(DIRUT) Q ""
|
---|
194 | Q $S(Y="S":1,Y="N":0,1:2)
|
---|