| 1 | NURSUT5 ;HIRMFO/WAA-API FOR NURS LOCATION (#211.4) FILE ;2/29/00
 | 
|---|
| 2 |  ;;4.0;NURSING SERVICE;**31**;APR 25, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Nursing Unit Function
 | 
|---|
| 5 |  ;    Input Values:
 | 
|---|
| 6 |  ;    FUNCT = Piece1_^_Piece2
 | 
|---|
| 7 |  ;           Piece1 must contain an "L" or "Q"
 | 
|---|
| 8 |  ;               Piece1 "L" means Look-up of specified entry
 | 
|---|
| 9 |  ;                      in File 211.4, and
 | 
|---|
| 10 |  ;               Piece2 must contain the IEN for
 | 
|---|
| 11 |  ;                      the entry in File 211.4.
 | 
|---|
| 12 |  ;       
 | 
|---|
| 13 |  ;               Piece1 "Q" means do a DIC style query on File
 | 
|---|
| 14 |  ;                      211.4, and
 | 
|---|
| 15 |  ;               Piece2 must contain "I","A" or  
 | 
|---|
| 16 |  ;                      ""(i.e., null).  This will be the screen
 | 
|---|
| 17 |  ;                      used on the look-up. The API will do a
 | 
|---|
| 18 |  ;                      DIC style look-up for the ward.
 | 
|---|
| 19 |  ;                      "I" means look-up only inactive wards.
 | 
|---|
| 20 |  ;                      "A" means look-up only active wards.
 | 
|---|
| 21 |  ;                      ""  means look-up all wards.
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;    In both cases (Query or Look-up) the data will be returned
 | 
|---|
| 24 |  ;    in ARRAY, which is called by reference, in the following
 | 
|---|
| 25 |  ;    format.
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ;    .ARRAY = Recommend the return array should be namespaced.
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;Return Values:
 | 
|---|
| 30 |  ;    ARRAY  = -1 means that the Look-up or Query failed
 | 
|---|
| 31 |  ;    ARRAY  = IEN means that the Look-up or Query was
 | 
|---|
| 32 |  ;             successful. 
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ;Return Array:
 | 
|---|
| 35 |  ;ARRAY(IEN,.01) = Pointer to File 44_"^"_External value of Hospital
 | 
|---|
| 36 |  ;                 Location file(44), Name field(.01)
 | 
|---|
| 37 |  ;ARRAY(IEN,.02) = Facility pointer to File 4_"^"_External name of
 | 
|---|
| 38 |  ;                 facility
 | 
|---|
| 39 |  ;ARRAY(IEN,.03) = Pointer to File 212.7_"^"_External value of NURS
 | 
|---|
| 40 |  ;                 Product Line file(212.7), Name field(.01)
 | 
|---|
| 41 |  ;ARRAY(IEN,1)   = Patient care status internal value_"^"_External
 | 
|---|
| 42 |  ;                 value of Patient care status
 | 
|---|
| 43 |  ;ARRAY(IEN,1.5) = Ward status Internal value_"^"_External value 
 | 
|---|
| 44 |  ;                 of Ward status
 | 
|---|
| 45 |  ;ARRAY(IEN,2)   = Total number of MAS ward pointers
 | 
|---|
| 46 |  ;           X = the IEN of the entry within the MAS ward Multiple.  
 | 
|---|
| 47 |  ;ARRAY(IEN,2,X,.01) = Pointer to File 42_"^"_External value of Ward
 | 
|---|
| 48 |  ;                     Location file(42), Name field(.01)
 | 
|---|
| 49 |  ;ARRAY(IEN,2,X,1)   = Pointer to File 213.3_"^"_External value of
 | 
|---|
| 50 |  ;                     NURS AMIS Ward file(213.3), Bed Section
 | 
|---|
| 51 |  ;                     field(.01)
 | 
|---|
| 52 |  ;ARRAY(IEN,4)=Total number of entries within the AMIS ward pointer.
 | 
|---|
| 53 |  ;           Y = the IEN of the entry within the AMIS Bed section
 | 
|---|
| 54 |  ;               Multiple
 | 
|---|
| 55 |  ;ARRAY(IEN,4,Y,.01) = Pointer to file 213.3_"^"_ External 
 | 
|---|
| 56 |  ;                     value of NURS AMIS Ward file(213.3),
 | 
|---|
| 57 |  ;                     Bed Section field(.01)
 | 
|---|
| 58 |  ;ARRAY(IEN,11) = Professional Percentage
 | 
|---|
| 59 |  ;ARRAY(IEN,12) = Pointer to File 211.5_"^"_External value of NURS
 | 
|---|
| 60 |  ;                Clinical Background file(211.5), Description 
 | 
|---|
| 61 |  ;                field(.01)
 | 
|---|
| 62 |  ;ARRAY(IEN,37) = Indicates whether or not active staff is assigned
 | 
|---|
| 63 |  ;                to this ward.
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | WARD(FUNCT,ARRAY) ; Main Entry
 | 
|---|
| 66 |  N ACT,NODE,DISYS,I,NURACTV,NURMDSW,X,XXX,YY,ZZ
 | 
|---|
| 67 |  S ARRAY=-1
 | 
|---|
| 68 |  S ACT=$P(FUNCT,U)
 | 
|---|
| 69 |  I ACT="Q" D
 | 
|---|
| 70 |  . ; DIC Query Lookup for data
 | 
|---|
| 71 |  . N Y,SCREEN,DIC,X,DUOUT,DTOUT
 | 
|---|
| 72 |  . S SCREEN=$P(FUNCT,U,2) Q:"AI"'[SCREEN
 | 
|---|
| 73 |  . S DIC="^NURSF(211.4,",DIC(0)="AEMNXQ"
 | 
|---|
| 74 |  . I SCREEN'="" S DIC("S")="I $$GET1^DIQ(211.4,+Y,1.5,""I"")=SCREEN"
 | 
|---|
| 75 |  . D ^DIC
 | 
|---|
| 76 |  . I Y'=-1 S ARRAY=+Y
 | 
|---|
| 77 |  . Q
 | 
|---|
| 78 |  I ACT="L" D
 | 
|---|
| 79 |  . ; Lookup/load ARRAY
 | 
|---|
| 80 |  . N IEN
 | 
|---|
| 81 |  . S IEN=+$P(FUNCT,U,2)
 | 
|---|
| 82 |  . I $G(^NURSF(211.4,IEN,0))="" S IEN=-1
 | 
|---|
| 83 |  . S ARRAY=IEN
 | 
|---|
| 84 |  . Q
 | 
|---|
| 85 |  Q:ARRAY=-1
 | 
|---|
| 86 |  D LOAD
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 | LOAD ; This will load the data into ARRAY
 | 
|---|
| 89 |  Q:ARRAY=-1
 | 
|---|
| 90 |  N I,J,IEN,LINE
 | 
|---|
| 91 |  S IEN=ARRAY
 | 
|---|
| 92 |  S J=$$GET1^DIQ(44,+$G(^NURSF(211.4,IEN,0)),.01,"E")
 | 
|---|
| 93 |  S ARRAY(IEN,.01)=+$G(^NURSF(211.4,IEN,0))_U_$P(J,"NUR ",2)
 | 
|---|
| 94 |  S ARRAY(IEN,.02)=$$GET1^DIQ(44,+$G(^NURSF(211.4,IEN,0)),3,"I")_U
 | 
|---|
| 95 |  S ARRAY(IEN,.02)=ARRAY(IEN,.02)_$$GET1^DIQ(211.4,IEN,.02,"E")
 | 
|---|
| 96 |  S LINE=$G(^NURSF(211.4,IEN,1))
 | 
|---|
| 97 |  I LINE'="" D
 | 
|---|
| 98 |  . I $P(LINE,U,4)'="" S ARRAY(IEN,.03)=$P(LINE,U,4)_U_$$GET1^DIQ(212.7,$P(LINE,U,4),.01,"E")
 | 
|---|
| 99 |  . I $P(LINE,U)'="" S ARRAY(IEN,1)=$P(LINE,U)_U_$$GET1^DIQ(211.4,IEN,1,"E")
 | 
|---|
| 100 |  . I $P(LINE,U,2)'="" S ARRAY(IEN,11)=$P(LINE,U,2)
 | 
|---|
| 101 |  . I $P(LINE,U,3)'="" S ARRAY(IEN,12)=$P(LINE,U,3)_U_$$GET1^DIQ(211.5,$P(LINE,U,3),.01,"E")
 | 
|---|
| 102 |  . Q
 | 
|---|
| 103 |  I $G(^NURSF(211.4,IEN,"I"))'="" S ARRAY(IEN,1.5)=$P(^("I"),U)_U_$$GET1^DIQ(211.4,IEN,1.5,"E")
 | 
|---|
| 104 |  S ARRAY(IEN,37)=$$GET1^DIQ(211.4,IEN,37,"E")
 | 
|---|
| 105 |  F NODE=3,4 I +$P($G(^NURSF(211.4,IEN,NODE,0)),U,4) D SUB
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 | SUB ; Get sub node data for 3, and 4
 | 
|---|
| 108 |  N X,Z,SNODE
 | 
|---|
| 109 |  S (X,Z)=0
 | 
|---|
| 110 |  S SNODE=$S(NODE=3:2,NODE=4:4,1:0)
 | 
|---|
| 111 |  Q:'SNODE
 | 
|---|
| 112 |  F  S X=$O(^NURSF(211.4,IEN,NODE,X)) Q:X<1  D
 | 
|---|
| 113 |  . N I
 | 
|---|
| 114 |  . I NODE=3 D
 | 
|---|
| 115 |  .. N VALUE
 | 
|---|
| 116 |  .. S VALUE=$P($G(^NURSF(211.4,IEN,NODE,X,0)),U) Q:'VALUE
 | 
|---|
| 117 |  .. S ARRAY(IEN,SNODE,X,.01)=VALUE_U_$$GET1^DIQ(42,VALUE,.01,"E")
 | 
|---|
| 118 |  .. Q
 | 
|---|
| 119 |  . D  ; Modularize this call
 | 
|---|
| 120 |  .. N VALUE,PIECE,FIELD
 | 
|---|
| 121 |  .. S PIECE=$S(NODE=3:2,1:1)
 | 
|---|
| 122 |  .. S FIELD=$S(NODE=3:1,1:.01)
 | 
|---|
| 123 |  .. S VALUE=$P($G(^NURSF(211.4,IEN,NODE,X,0)),U,PIECE) Q:'VALUE
 | 
|---|
| 124 |  .. S ARRAY(IEN,SNODE,X,FIELD)=VALUE_U_$$GET1^DIQ(213.3,VALUE,.01,"E")
 | 
|---|
| 125 |  . S Z=Z+1
 | 
|---|
| 126 |  . Q
 | 
|---|
| 127 |  S ARRAY(IEN,SNODE)=Z
 | 
|---|
| 128 |  Q
 | 
|---|