[613] | 1 | PSSSCHED ;BIR/JMC-BUILD SCHEDULE LIST FOR CPRS GUI SELECTION;02/27/08
|
---|
| 2 | ;;1.0;PHARMACY DATA MANAGEMENT;**94**;9/30/97;Build 26
|
---|
| 3 | ;
|
---|
| 4 | ;
|
---|
| 5 | Q ;Cannot be called directly. Must use API
|
---|
| 6 | ;
|
---|
| 7 | SCHED(PSSWIEN,PSSARRY) ;Receive ward IEN from CPRS and return list of schedules.
|
---|
| 8 | ;
|
---|
| 9 | ;PSSWIEN = Ward IEN
|
---|
| 10 | ;PSSARRY = array passed by reference from CPRS
|
---|
| 11 | ;
|
---|
| 12 | ;If there is a duplicate schedule, and if one of them contains
|
---|
| 13 | ;ward-specific admin times for the ward location of the patient,
|
---|
| 14 | ;the schedule returned for inclusion in the list of selectable
|
---|
| 15 | ;schedules to CPRS will be the one with the ward-specific admin
|
---|
| 16 | ;times. If neither duplicate has ward-specific admin times,
|
---|
| 17 | ;then the current functionality of the schedule with the lowest
|
---|
| 18 | ;IEN number will remain in place. If both (or more than one)
|
---|
| 19 | ;duplicate schedules have ward-specific admin times for the ward
|
---|
| 20 | ;location of the patient, then the one with the lowest IEN number
|
---|
| 21 | ;will be the schedule returned to CPRS.
|
---|
| 22 | ;
|
---|
| 23 | ;Example: Patient's ward location is ICU
|
---|
| 24 | ;^PS(51.1,"APPSJ","BID",1)=""
|
---|
| 25 | ;^PS(51.1,"APPSJ","BID",2)=""
|
---|
| 26 | ;
|
---|
| 27 | ;If ^PS(51.1,1 does not have ward-specific admin times for
|
---|
| 28 | ;the ICU, but ^PS(51.1,2 does, ^PS(51.1,2 will be in the list
|
---|
| 29 | ;of schedules returned to CPRS.
|
---|
| 30 | ;
|
---|
| 31 | ;If neither schedule has ward-specific admin times for the ICU
|
---|
| 32 | ;then ^PS(51.1,1 will be in the list of schedules returned to CPRS.
|
---|
| 33 | ;
|
---|
| 34 | ;If both schedules have ward-specific admin times for the ICU
|
---|
| 35 | ;then ^PS(51.1,1 will be in the list of schedules returned to CPRS.
|
---|
| 36 | ;
|
---|
| 37 | ;The returned array to CPRS will be in the format:
|
---|
| 38 | ;PSSARRY(n)=IEN^NAME^OUTPATIENT EXPANSION^SCHEDULE TYPE^ADMIN TIME
|
---|
| 39 | ;
|
---|
| 40 | N PSSSKED,PSSSKED1,PSSSK
|
---|
| 41 | K ^TMP("PSSADMIN"),^TMP("PSSDUP")
|
---|
| 42 | I $G(PSSWIEN)="" S PSSWIEN=0
|
---|
| 43 | S PSSSKED=""
|
---|
| 44 | F S PSSSKED=$O(^PS(51.1,"APPSJ",PSSSKED)) Q:PSSSKED="" D
|
---|
| 45 | . S PSSSKED1="",PSSSK=1
|
---|
| 46 | . F S PSSSKED1=$O(^PS(51.1,"APPSJ",PSSSKED,PSSSKED1)) Q:PSSSKED1="" D
|
---|
| 47 | . . Q:$P($G(^PS(51.1,PSSSKED1,0)),"^",5)=""
|
---|
| 48 | . . S ^TMP("PSSDUP",$J,PSSSKED,PSSSK)=PSSSKED1 ;Identify duplicate schedules to work with.
|
---|
| 49 | . . S ^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1)=$S($P($G(^PS(51.1,PSSSKED1,1,PSSWIEN,0)),"^",2)'="":$P($G(^PS(51.1,PSSSKED1,1,PSSWIEN,0)),"^",2),1:$P($G(^PS(51.1,PSSSKED1,0)),"^",2))
|
---|
| 50 | . . S PSSSK=PSSSK+1
|
---|
| 51 | . I '$D(^TMP("PSSDUP",$J,PSSSKED,2)) K ^TMP("PSSDUP",$J,PSSSKED)
|
---|
| 52 | I $D(^TMP("PSSDUP")) D DUP,FORMAT,KILL Q ;Duplicate schedules - determine if any have ward-specific admin times
|
---|
| 53 | I '$D(^TMP("PSSDUP")) D FORMAT,KILL Q ;No duplicates in the schedule file - format for proper return to CPRS
|
---|
| 54 | Q
|
---|
| 55 | KILL ;
|
---|
| 56 | K ^TMP("PSSADMIN"),PSSSKED,PSSSKED1,PSSSK,PSSWIEN
|
---|
| 57 | Q
|
---|
| 58 | DUP ;Compare duplicates to see if any have ward-specific admin times.
|
---|
| 59 | S PSSSKED="",PSSSKED1=""
|
---|
| 60 | F S PSSSKED=$O(^TMP("PSSDUP",$J,PSSSKED)) Q:PSSSKED="" D
|
---|
| 61 | . S PSSSK=""
|
---|
| 62 | . F S PSSSK=$O(^TMP("PSSDUP",$J,PSSSKED,PSSSK)) Q:PSSSK="" D
|
---|
| 63 | . . S PSSSKED1=$G(^TMP("PSSDUP",$J,PSSSKED,PSSSK))
|
---|
| 64 | . . I '$D(^TMP("PSSADMIN",$J,"STD",PSSSKED)) S ^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1)=$P($G(^PS(51.1,PSSSKED1,0)),"^",2)
|
---|
| 65 | . . I '$D(^PS(51.1,PSSSKED1,1,PSSWIEN,0)),PSSSK>1 K ^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1) Q
|
---|
| 66 | . . I $D(^PS(51.1,PSSSKED1,1,PSSWIEN,0)),'$D(^TMP("PSSADMIN",$J,"WARD",PSSSKED)) S ^TMP("PSSADMIN",$J,"WARD",PSSSKED,PSSSKED1)=$P($G(^PS(51.1,PSSSKED1,1,PSSWIEN,0)),"^",2)
|
---|
| 67 | . . I $D(^TMP("PSSADMIN",$J,"WARD",PSSSKED)) D Q
|
---|
| 68 | . . . K ^TMP("PSSADMIN",$J,"STD",PSSSKED)
|
---|
| 69 | . . . S ^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1)=$G(^TMP("PSSADMIN",$J,"WARD",PSSSKED,PSSSKED1))
|
---|
| 70 | . . . K ^TMP("PSSADMIN",$J,"WARD",PSSSKED)
|
---|
| 71 | K ^TMP("PSSDUP")
|
---|
| 72 | Q
|
---|
| 73 | FORMAT ;Format array for proper return to CPRS
|
---|
| 74 | N PSSCNTR,PSSTMP
|
---|
| 75 | S PSSSKED="",PSSSKED1="",PSSCNTR=1
|
---|
| 76 | F S PSSSKED=$O(^TMP("PSSADMIN",$J,"STD",PSSSKED)) Q:PSSSKED="" D
|
---|
| 77 | . F S PSSSKED1=$O(^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1)) Q:PSSSKED1="" D
|
---|
| 78 | . . S PSSTMP=$G(^PS(51.1,PSSSKED1,0))
|
---|
| 79 | . . S PSSARRY(PSSCNTR)=PSSSKED1_"^"_PSSSKED_"^"_$P(PSSTMP,"^",8)_"^"_$P(PSSTMP,"^",5)_"^"_$G(^TMP("PSSADMIN",$J,"STD",PSSSKED,PSSSKED1))
|
---|
| 80 | . . S PSSCNTR=PSSCNTR+1
|
---|
| 81 | K PSSCNTR,PSSTMP
|
---|
| 82 | Q
|
---|