| 1 | NURAPI ;HCIOFO/FT,AL-APIs ;8/14/02  08:43
 | 
|---|
| 2 |  ;;4.0;NURSING SERVICE;**37**;Apr 25, 1997
 | 
|---|
| 3 |  ; 
 | 
|---|
| 4 |  ; The entry points in this routine are documented in IA #3227.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; This routine uses the following IAs:
 | 
|---|
| 7 |  ; #10035 - ^DPT( references       (supported)
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 | ACTLOCS(ARRAY) ; Returns all active nursing locations from the NURS LOCATION
 | 
|---|
| 10 |  ; file (#211.4) in the array specified. FILE 211.4 points to HOSPITAL
 | 
|---|
| 11 |  ; LOCATION file (#44).
 | 
|---|
| 12 |  ;  input: ARRAY - (Required) The name of the array to store the entries
 | 
|---|
| 13 |  ; output: ARRAY(sequence #)=File 211.4 ien^File 44 name (for 211.4 ien) 
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  N NURCNT,NURI,NURIEN,NURNAME
 | 
|---|
| 16 |  D LIST^DIC(211.4,"","","","*","","","","I $S('$D(^NURSF(211.4,""D"",""I"",+Y)):1,$P(^NURSF(211.4,+Y,1),U)=""I"":0,1:1)","")
 | 
|---|
| 17 |  I +$P($G(^TMP("DILIST",$J,0)),U,1)=0 S ARRAY(1)="NO UNIT"
 | 
|---|
| 18 |  S (NURCNT,NURI)=0
 | 
|---|
| 19 |  F  S NURI=$O(^TMP("DILIST",$J,1,NURI)) Q:'NURI  D
 | 
|---|
| 20 |  .S NURNAME=$P($G(^TMP("DILIST",$J,1,NURI)),U,1)
 | 
|---|
| 21 |  .S NURIEN=+$P($G(^TMP("DILIST",$J,2,NURI)),U,1)
 | 
|---|
| 22 |  .Q:'NURIEN
 | 
|---|
| 23 |  .S NURCNT=NURCNT+1
 | 
|---|
| 24 |  .S ARRAY(NURCNT)=NURIEN_U_NURNAME
 | 
|---|
| 25 |  .Q
 | 
|---|
| 26 |  K ^TMP("DILIST",$J)
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | PTCHK(LOC) ; This function returns a value that indicates if any patients
 | 
|---|
| 29 |  ; (active or inactive) are associated with the Nursing location
 | 
|---|
| 30 |  ; identified.
 | 
|---|
| 31 |  ;  input: LOC - (Required) NURS LOCATION file (#211.4) ien
 | 
|---|
| 32 |  ; output:   0 - no patients associated with this location
 | 
|---|
| 33 |  ;           1 - yes, patients are associated with this location 
 | 
|---|
| 34 |  ;          -1 - (minus 1) LOC is undefined or not found
 | 
|---|
| 35 |  ;I $G(LOC)="" Q -1
 | 
|---|
| 36 |  I '$D(^NURSF(211.4,+LOC,0)) Q -1
 | 
|---|
| 37 |  I '$D(^NURSF(214,"E",LOC)) Q 0  ;FILE 214 is the NURS PATIENT file
 | 
|---|
| 38 |  Q 1
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | APTCHK(LOC) ; This function returns a value that indicates if active
 | 
|---|
| 41 |  ; patients are associated with the Nursing location identified.
 | 
|---|
| 42 |  ;  input: LOC - (Required) NURS LOCATION file (#211.4) ien
 | 
|---|
| 43 |  ; output:   0 - no active patients associated with this location
 | 
|---|
| 44 |  ;           1 - yes, active patients are associated with this location 
 | 
|---|
| 45 |  ;          -1 - (minus 1) LOC is undefined or not found
 | 
|---|
| 46 |  ;I $G(LOC)="" Q -1
 | 
|---|
| 47 |  I '$D(^NURSF(211.4,+LOC,0)) Q -1
 | 
|---|
| 48 |  I '$D(^NURSF(214,"AF","A",LOC)) Q 0  ;FILE 214 is the NURS PATIENT file
 | 
|---|
| 49 |  Q 1
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | PTLIST(LOC,ARRAY) ; Returns a list of all (active and inactive) patients
 | 
|---|
| 52 |  ; for a nursing location in the array specified.
 | 
|---|
| 53 |  ;  input:   LOC - (Required) NURS LOCATION file (#211.4) ien
 | 
|---|
| 54 |  ;  input: ARRAY - (Required) Name of array to return entries in
 | 
|---|
| 55 |  ; output: ARRAY - Subscripted by sequential number with DFN in first
 | 
|---|
| 56 |  ;                 piece and patient name in second piece.
 | 
|---|
| 57 |  ;         example: ARRAY(#)=DFN^patient name
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ; If LOC is undefined or not found, then returns ARRAY(1)=-1
 | 
|---|
| 60 |  ; If no patients on the Location, then returns ARRAY(1)="^No Patients"
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ;I $G(LOC)="" S ARRAY(1)=-1 Q
 | 
|---|
| 63 |  I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
 | 
|---|
| 64 |  N DFN,PATNAME,NURCNT
 | 
|---|
| 65 |  S (DFN,NURCNT)=0
 | 
|---|
| 66 |  F  S DFN=$O(^NURSF(214,"E",LOC,DFN)) Q:DFN'>0  D
 | 
|---|
| 67 |  . S PATNAME=$P($G(^DPT(DFN,0)),"^")
 | 
|---|
| 68 |  . Q:PATNAME=""
 | 
|---|
| 69 |  . S NURCNT=NURCNT+1
 | 
|---|
| 70 |  . S ARRAY(NURCNT)=DFN_U_PATNAME
 | 
|---|
| 71 |  . Q
 | 
|---|
| 72 |  I NURCNT=0 S ARRAY(1)="^No Patients"
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | APTLIST(LOC,ARRAY) ; Returns a list of active patients for a nursing
 | 
|---|
| 75 |  ; location in the array specified.
 | 
|---|
| 76 |  ;  input:   LOC - (Required) NURS LOCATION file (#211.4) ien
 | 
|---|
| 77 |  ;  input: ARRAY - (Required) Name of the array to return entries in
 | 
|---|
| 78 |  ; output: ARRAY - Subscripted by sequential number with DFN in first
 | 
|---|
| 79 |  ;                 piece and patient name in second piece.
 | 
|---|
| 80 |  ;         example: ARRAY(#)=DFN^patient name
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ; If LOC is undefined or not found, then returns ARRAY(1)=-1
 | 
|---|
| 83 |  ; If no patients on the Location, then returns ARRAY(1)="^No Patients"
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;I $G(LOC)="" S ARRAY(1)=-1 Q
 | 
|---|
| 86 |  I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
 | 
|---|
| 87 |  N DFN,NURCNT,PATNAME
 | 
|---|
| 88 |  S (DFN,NURCNT)=0
 | 
|---|
| 89 |  F  S DFN=$O(^NURSF(214,"AF","A",LOC,DFN)) Q:DFN'>0  D
 | 
|---|
| 90 |  .S PATNAME=$P($G(^DPT(DFN,0)),"^")
 | 
|---|
| 91 |  .Q:PATNAME=""
 | 
|---|
| 92 |  .S NURCNT=NURCNT+1
 | 
|---|
| 93 |  .S ARRAY(NURCNT)=DFN_U_PATNAME
 | 
|---|
| 94 |  .Q
 | 
|---|
| 95 |  I NURCNT=0 S ARRAY(1)="^No Patients"
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | FINDNLOC(LOC) ; This function returns the NURS LOCATION file (#211.4) ien
 | 
|---|
| 98 |  ; and the ien of the location (File 44, Field .01).
 | 
|---|
| 99 |  ;  input: LOC - (Required) Name of the Nursing location (as it appears
 | 
|---|
| 100 |  ;               in File 44).
 | 
|---|
| 101 |  ;               The name should begin with the characters 'NUR '.
 | 
|---|
| 102 |  ;               If not, 'NUR<space>' will be appended to the beginning
 | 
|---|
| 103 |  ;               of LOC. If LOC is undefined, then returns -1.
 | 
|---|
| 104 |  ; output: File 211.4 ien^File 44 ien
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ; If LOC is undefined, then returns -1
 | 
|---|
| 107 |  ; If LOC is not found, then returns "^Location not found"
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  I $G(LOC)="" Q -1
 | 
|---|
| 110 |  N NUROUT,NURWARD,NURVHLOC
 | 
|---|
| 111 |  I LOC'?1"NUR ".E S LOC="NUR "_LOC
 | 
|---|
| 112 |  D FIND^DIC(211.4,"","","X",LOC,"","","","","NUROUT")
 | 
|---|
| 113 |  S NUROUT(1)=+$P($G(NUROUT("DILIST",0)),"^")
 | 
|---|
| 114 |  I NUROUT(1)'>0 Q "^Location not found"
 | 
|---|
| 115 |  S NURWARD=+$P(NUROUT("DILIST",2,1),"^"),NURVHLOC=+$P(NUROUT("DILIST",1,1),"^")
 | 
|---|
| 116 |  S LOC=NURWARD_"^"_NURVHLOC
 | 
|---|
| 117 |  Q LOC
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 | MASWARDS(LOC,ARRAY) ; Returns the MAS wards associated with this Nursing
 | 
|---|
| 120 |  ; location in the array specified. The .01 field of the MAS WARD
 | 
|---|
| 121 |  ; multiple of the NURS LOCATION file points to the WARD LOCATION
 | 
|---|
| 122 |  ; file (#42).
 | 
|---|
| 123 |  ;  input:   LOC - (Required) NURS LOCATION file (#211.4) ien
 | 
|---|
| 124 |  ;  input: ARRAY - (Required) Name of array to return entries in
 | 
|---|
| 125 |  ; output: ARRAY subscripted by the MAS WARD value.
 | 
|---|
| 126 |  ;         example: ARRAY($P(^NURSF(211.4,LOC,3,D1,0),U,1))=""
 | 
|---|
| 127 |  ;         If LOC is null or not found, then ARRAY(1)=-1
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
 | 
|---|
| 130 |  N GMVD1
 | 
|---|
| 131 |  I $D(^NURSF(211.4,LOC,3)) D
 | 
|---|
| 132 |  .S GMVD1=0
 | 
|---|
| 133 |  .F  S GMVD1=$O(^NURSF(211.4,LOC,3,GMVD1)) Q:GMVD1'>0  S ARRAY($P(^NURSF(211.4,LOC,3,GMVD1,0),U,1))=""
 | 
|---|
| 134 |  .Q
 | 
|---|
| 135 |  I $O(ARRAY(0))="" S ARRAY(1)=-1
 | 
|---|
| 136 |  Q
 | 
|---|