| 1 | NURSAGP3 ;HISC/MD-MULTIPLE SERVICE CATEGORY SELECTION UTILITY ;4/17/97 | 
|---|
| 2 | ;;4.0;NURSING SERVICE;;Apr 25, 1997 | 
|---|
| 3 | ; This routine allows a user to select one or more of the service | 
|---|
| 4 | ; category(ies) at one time: | 
|---|
| 5 | ; The user's selections are returned in a global array | 
|---|
| 6 | ; TMP("NURSCAT",$J,Free-Text service category name)="" | 
|---|
| 7 | EN1 ; SELECT SERVICE CATEGORY | 
|---|
| 8 | N DA,Y,X | 
|---|
| 9 | K NUROUT,^TMP("NURSCAT",$J) | 
|---|
| 10 | D DISP I $O(^TMP("NURSCAT",$J,0))="" S NUROUT=1 | 
|---|
| 11 | QUIT K NURSTAB,NURS,NURSAQ,NURSND,DIC,NURSCAT,DLAYGO,I,NURSMAX,NURSCLA,NURSCNT,NURSI,NURSMI | 
|---|
| 12 | Q | 
|---|
| 13 | DISP ; | 
|---|
| 14 | ; Define list of user selectable service category(ies) from the | 
|---|
| 15 | ; NURS Service Positon (#211.3) File. | 
|---|
| 16 | ; | 
|---|
| 17 | K NURSTAB,NURSCAT S NURSX="",NURSMAX=0 | 
|---|
| 18 | F NURSX="R (RN-REGISTERED NURSE)","L (LPN-LIC. PRACTICAL NURSE)","N (NA-NURSING ASSISTANT)","C (CK-CLERICAL)","S (SE-SUMMER EMPLOYEE)","A (AO-ADMIN. OFFICER)","O (OT-OTHER)" D | 
|---|
| 19 | . I $G(NRNLPN)'="",'(NURSX["(RN-"),'(NURSX["(LPN-") Q | 
|---|
| 20 | . S NURSMAX=NURSMAX+1,NURSCAT(NURSMAX)=NURSX | 
|---|
| 21 | . Q | 
|---|
| 22 | S NURSX="" F  S NURSX=$O(^NURSF(211.3,"F",NURSX)) Q:NURSX=""  S DA=$O(^NURSF(211.3,"F",NURSX,0)) I '$G(NRNLPN) D | 
|---|
| 23 | .   S NURSMAX=NURSMAX+1,NURSCAT(NURSMAX)=$$UP^XLFSTR(NURSX) | 
|---|
| 24 | .   Q | 
|---|
| 25 | S NURSMAX=NURSMAX+1,NURSCAT(NURSMAX)="ALL" | 
|---|
| 26 | S NURSTRT=1,(NUROUT,NURSDONE)=0 | 
|---|
| 27 | F  D DSP I $G(NURSDONE)!$G(NUROUT) Q | 
|---|
| 28 | Q | 
|---|
| 29 | DSP ; | 
|---|
| 30 | ; Display the list of selectable service category(ies) from file 211.3. | 
|---|
| 31 | ; | 
|---|
| 32 | W @IOF W !,$S('($G(NURSI)>7):"NURSING Service Categories",1:"OTHER Service Categories"),!,$$REPEAT^XLFSTR("-",26) S NURSAQ=$Y | 
|---|
| 33 | F NURS=NURSTRT:1:NURSMAX S NURSI=NURS D  I $Y>(IOSL+NURSAQ-10),NURS'=NURSMAX S NURSTRT=NURS+1 Q | 
|---|
| 34 | .  Q:$D(NURSCAT(NURSI))[0 | 
|---|
| 35 | .  I NURSI=8 W !!,"OTHER Service Categories",!,$$REPEAT^XLFSTR("-",24) | 
|---|
| 36 | .  W ! W:$G(NURSCAT(NURSI))'="" ?1,$J(NURSI,2),".  ",$G(NURSCAT(NURSI)) | 
|---|
| 37 | .  Q | 
|---|
| 38 | S NURSDONE=(NURS=NURSMAX) | 
|---|
| 39 | I 'NURSDONE W !!,"<<More>>",! S DIR(0)="E" D ^DIR I $G(DIRUT) S NUROUT=1 Q | 
|---|
| 40 | G:NUROUT QUIT | 
|---|
| 41 | I 'NURSDONE G DSP | 
|---|
| 42 | ASK ; | 
|---|
| 43 | ;  Interactive user service category selection. | 
|---|
| 44 | ; | 
|---|
| 45 | W !!,"Select SERVICE CATEGORY: " R NURSX:DTIME | 
|---|
| 46 | S:'$T NURSX="^" I "^"[NURSX S:$E(NURSX)="^" NUROUT=1 Q | 
|---|
| 47 | I NURSX=NURSMAX!($$UP^XLFSTR(NURSX)="ALL") S NURSX="1"_$S(NURSMAX>2:"-"_(NURSMAX-1),1:"") | 
|---|
| 48 | D:'(NURSX?2."?") VALENT^NURSUT4 I (NURSX["?"!($G(NURSBAD))) S:NURSX?2."?" (NURSTRT,NURSI)=1 G DSP:NURSX?2."?",ASK | 
|---|
| 49 | K ^TMP("NURSCAT") F NURSI=1:1 S NURSCLA=$P(NURSX,",",NURSI) Q:NURSCLA=""  S NURSND=$P(NURSCLA,"-",2)_"+"_NURSCLA F NURSCNT=+NURSCLA:1:NURSND I +$G(NURSCAT(NURSCNT))'="" D | 
|---|
| 50 | . S X=NURSCAT(NURSCNT),Y=$S(X["(RN-":"R",X["(LPN-":"L",X["(NA-":"N",X["(CK-":"C",X["(SE-":"S",X["AO-":"A",X["OT-":"O",1:X) | 
|---|
| 51 | .  S ^TMP("NURSCAT",$J,Y)="" | 
|---|
| 52 | Q | 
|---|