NURAPI ;HCIOFO/FT,AL-APIs ;8/14/02 08:43
;;4.0;NURSING SERVICE;**37**;Apr 25, 1997
;
; The entry points in this routine are documented in IA #3227.
;
; This routine uses the following IAs:
; #10035 - ^DPT( references (supported)
;
ACTLOCS(ARRAY) ; Returns all active nursing locations from the NURS LOCATION
; file (#211.4) in the array specified. FILE 211.4 points to HOSPITAL
; LOCATION file (#44).
; input: ARRAY - (Required) The name of the array to store the entries
; output: ARRAY(sequence #)=File 211.4 ien^File 44 name (for 211.4 ien)
;
N NURCNT,NURI,NURIEN,NURNAME
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)","")
I +$P($G(^TMP("DILIST",$J,0)),U,1)=0 S ARRAY(1)="NO UNIT"
S (NURCNT,NURI)=0
F S NURI=$O(^TMP("DILIST",$J,1,NURI)) Q:'NURI D
.S NURNAME=$P($G(^TMP("DILIST",$J,1,NURI)),U,1)
.S NURIEN=+$P($G(^TMP("DILIST",$J,2,NURI)),U,1)
.Q:'NURIEN
.S NURCNT=NURCNT+1
.S ARRAY(NURCNT)=NURIEN_U_NURNAME
.Q
K ^TMP("DILIST",$J)
Q
PTCHK(LOC) ; This function returns a value that indicates if any patients
; (active or inactive) are associated with the Nursing location
; identified.
; input: LOC - (Required) NURS LOCATION file (#211.4) ien
; output: 0 - no patients associated with this location
; 1 - yes, patients are associated with this location
; -1 - (minus 1) LOC is undefined or not found
;I $G(LOC)="" Q -1
I '$D(^NURSF(211.4,+LOC,0)) Q -1
I '$D(^NURSF(214,"E",LOC)) Q 0 ;FILE 214 is the NURS PATIENT file
Q 1
;
APTCHK(LOC) ; This function returns a value that indicates if active
; patients are associated with the Nursing location identified.
; input: LOC - (Required) NURS LOCATION file (#211.4) ien
; output: 0 - no active patients associated with this location
; 1 - yes, active patients are associated with this location
; -1 - (minus 1) LOC is undefined or not found
;I $G(LOC)="" Q -1
I '$D(^NURSF(211.4,+LOC,0)) Q -1
I '$D(^NURSF(214,"AF","A",LOC)) Q 0 ;FILE 214 is the NURS PATIENT file
Q 1
;
PTLIST(LOC,ARRAY) ; Returns a list of all (active and inactive) patients
; for a nursing location in the array specified.
; input: LOC - (Required) NURS LOCATION file (#211.4) ien
; input: ARRAY - (Required) Name of array to return entries in
; output: ARRAY - Subscripted by sequential number with DFN in first
; piece and patient name in second piece.
; example: ARRAY(#)=DFN^patient name
;
; If LOC is undefined or not found, then returns ARRAY(1)=-1
; If no patients on the Location, then returns ARRAY(1)="^No Patients"
;
;I $G(LOC)="" S ARRAY(1)=-1 Q
I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
N DFN,PATNAME,NURCNT
S (DFN,NURCNT)=0
F S DFN=$O(^NURSF(214,"E",LOC,DFN)) Q:DFN'>0 D
. S PATNAME=$P($G(^DPT(DFN,0)),"^")
. Q:PATNAME=""
. S NURCNT=NURCNT+1
. S ARRAY(NURCNT)=DFN_U_PATNAME
. Q
I NURCNT=0 S ARRAY(1)="^No Patients"
Q
APTLIST(LOC,ARRAY) ; Returns a list of active patients for a nursing
; location in the array specified.
; input: LOC - (Required) NURS LOCATION file (#211.4) ien
; input: ARRAY - (Required) Name of the array to return entries in
; output: ARRAY - Subscripted by sequential number with DFN in first
; piece and patient name in second piece.
; example: ARRAY(#)=DFN^patient name
;
; If LOC is undefined or not found, then returns ARRAY(1)=-1
; If no patients on the Location, then returns ARRAY(1)="^No Patients"
;
;I $G(LOC)="" S ARRAY(1)=-1 Q
I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
N DFN,NURCNT,PATNAME
S (DFN,NURCNT)=0
F S DFN=$O(^NURSF(214,"AF","A",LOC,DFN)) Q:DFN'>0 D
.S PATNAME=$P($G(^DPT(DFN,0)),"^")
.Q:PATNAME=""
.S NURCNT=NURCNT+1
.S ARRAY(NURCNT)=DFN_U_PATNAME
.Q
I NURCNT=0 S ARRAY(1)="^No Patients"
Q
FINDNLOC(LOC) ; This function returns the NURS LOCATION file (#211.4) ien
; and the ien of the location (File 44, Field .01).
; input: LOC - (Required) Name of the Nursing location (as it appears
; in File 44).
; The name should begin with the characters 'NUR '.
; If not, 'NUR<space>' will be appended to the beginning
; of LOC. If LOC is undefined, then returns -1.
; output: File 211.4 ien^File 44 ien
;
; If LOC is undefined, then returns -1
; If LOC is not found, then returns "^Location not found"
;
I $G(LOC)="" Q -1
N NUROUT,NURWARD,NURVHLOC
I LOC'?1"NUR ".E S LOC="NUR "_LOC
D FIND^DIC(211.4,"","","X",LOC,"","","","","NUROUT")
S NUROUT(1)=+$P($G(NUROUT("DILIST",0)),"^")
I NUROUT(1)'>0 Q "^Location not found"
S NURWARD=+$P(NUROUT("DILIST",2,1),"^"),NURVHLOC=+$P(NUROUT("DILIST",1,1),"^")
S LOC=NURWARD_"^"_NURVHLOC
Q LOC
;
MASWARDS(LOC,ARRAY) ; Returns the MAS wards associated with this Nursing
; location in the array specified. The .01 field of the MAS WARD
; multiple of the NURS LOCATION file points to the WARD LOCATION
; file (#42).
; input: LOC - (Required) NURS LOCATION file (#211.4) ien
; input: ARRAY - (Required) Name of array to return entries in
; output: ARRAY subscripted by the MAS WARD value.
; example: ARRAY($P(^NURSF(211.4,LOC,3,D1,0),U,1))=""
; If LOC is null or not found, then ARRAY(1)=-1
;
I '$D(^NURSF(211.4,+LOC,0)) S ARRAY(1)=-1 Q
N GMVD1
I $D(^NURSF(211.4,LOC,3)) D
.S GMVD1=0
.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))=""
.Q
I $O(ARRAY(0))="" S ARRAY(1)=-1
Q
NURAPI ;HCIOFO/FT,AL-APIs ;8/14/02 08:43
+1 ;;4.0;NURSING SERVICE;**37**;Apr 25, 1997
+2 ;
+3 ; The entry points in this routine are documented in IA #3227.
+4 ;
+5 ; This routine uses the following IAs:
+6 ; #10035 - ^DPT( references (supported)
+7 ;
ACTLOCS(ARRAY) ; Returns all active nursing locations from the NURS LOCATION
+1 ; file (#211.4) in the array specified. FILE 211.4 points to HOSPITAL
+2 ; LOCATION file (#44).
+3 ; input: ARRAY - (Required) The name of the array to store the entries
+4 ; output: ARRAY(sequence #)=File 211.4 ien^File 44 name (for 211.4 ien)
+5 ;
+6 NEW NURCNT,NURI,NURIEN,NURNAME
+7 DO 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)","")
+8 IF +$PIECE($GET(^TMP("DILIST",$JOB,0)),U,1)=0
SET ARRAY(1)="NO UNIT"
+9 SET (NURCNT,NURI)=0
+10 FOR
SET NURI=$ORDER(^TMP("DILIST",$JOB,1,NURI))
IF 'NURI
QUIT
Begin DoDot:1
+11 SET NURNAME=$PIECE($GET(^TMP("DILIST",$JOB,1,NURI)),U,1)
+12 SET NURIEN=+$PIECE($GET(^TMP("DILIST",$JOB,2,NURI)),U,1)
+13 IF 'NURIEN
QUIT
+14 SET NURCNT=NURCNT+1
+15 SET ARRAY(NURCNT)=NURIEN_U_NURNAME
+16 QUIT
End DoDot:1
+17 KILL ^TMP("DILIST",$JOB)
+18 QUIT
PTCHK(LOC) ; This function returns a value that indicates if any patients
+1 ; (active or inactive) are associated with the Nursing location
+2 ; identified.
+3 ; input: LOC - (Required) NURS LOCATION file (#211.4) ien
+4 ; output: 0 - no patients associated with this location
+5 ; 1 - yes, patients are associated with this location
+6 ; -1 - (minus 1) LOC is undefined or not found
+7 ;I $G(LOC)="" Q -1
+8 IF '$DATA(^NURSF(211.4,+LOC,0))
QUIT -1
+9 ;FILE 214 is the NURS PATIENT file
IF '$DATA(^NURSF(214,"E",LOC))
QUIT 0
+10 QUIT 1
+11 ;
APTCHK(LOC) ; This function returns a value that indicates if active
+1 ; patients are associated with the Nursing location identified.
+2 ; input: LOC - (Required) NURS LOCATION file (#211.4) ien
+3 ; output: 0 - no active patients associated with this location
+4 ; 1 - yes, active patients are associated with this location
+5 ; -1 - (minus 1) LOC is undefined or not found
+6 ;I $G(LOC)="" Q -1
+7 IF '$DATA(^NURSF(211.4,+LOC,0))
QUIT -1
+8 ;FILE 214 is the NURS PATIENT file
IF '$DATA(^NURSF(214,"AF","A",LOC))
QUIT 0
+9 QUIT 1
+10 ;
PTLIST(LOC,ARRAY) ; Returns a list of all (active and inactive) patients
+1 ; for a nursing location in the array specified.
+2 ; input: LOC - (Required) NURS LOCATION file (#211.4) ien
+3 ; input: ARRAY - (Required) Name of array to return entries in
+4 ; output: ARRAY - Subscripted by sequential number with DFN in first
+5 ; piece and patient name in second piece.
+6 ; example: ARRAY(#)=DFN^patient name
+7 ;
+8 ; If LOC is undefined or not found, then returns ARRAY(1)=-1
+9 ; If no patients on the Location, then returns ARRAY(1)="^No Patients"
+10 ;
+11 ;I $G(LOC)="" S ARRAY(1)=-1 Q
+12 IF '$DATA(^NURSF(211.4,+LOC,0))
SET ARRAY(1)=-1
QUIT
+13 NEW DFN,PATNAME,NURCNT
+14 SET (DFN,NURCNT)=0
+15 FOR
SET DFN=$ORDER(^NURSF(214,"E",LOC,DFN))
IF DFN'>0
QUIT
Begin DoDot:1
+16 SET PATNAME=$PIECE($GET(^DPT(DFN,0)),"^")
+17 IF PATNAME=""
QUIT
+18 SET NURCNT=NURCNT+1
+19 SET ARRAY(NURCNT)=DFN_U_PATNAME
+20 QUIT
End DoDot:1
+21 IF NURCNT=0
SET ARRAY(1)="^No Patients"
+22 QUIT
APTLIST(LOC,ARRAY) ; Returns a list of active patients for a nursing
+1 ; location in the array specified.
+2 ; input: LOC - (Required) NURS LOCATION file (#211.4) ien
+3 ; input: ARRAY - (Required) Name of the array to return entries in
+4 ; output: ARRAY - Subscripted by sequential number with DFN in first
+5 ; piece and patient name in second piece.
+6 ; example: ARRAY(#)=DFN^patient name
+7 ;
+8 ; If LOC is undefined or not found, then returns ARRAY(1)=-1
+9 ; If no patients on the Location, then returns ARRAY(1)="^No Patients"
+10 ;
+11 ;I $G(LOC)="" S ARRAY(1)=-1 Q
+12 IF '$DATA(^NURSF(211.4,+LOC,0))
SET ARRAY(1)=-1
QUIT
+13 NEW DFN,NURCNT,PATNAME
+14 SET (DFN,NURCNT)=0
+15 FOR
SET DFN=$ORDER(^NURSF(214,"AF","A",LOC,DFN))
IF DFN'>0
QUIT
Begin DoDot:1
+16 SET PATNAME=$PIECE($GET(^DPT(DFN,0)),"^")
+17 IF PATNAME=""
QUIT
+18 SET NURCNT=NURCNT+1
+19 SET ARRAY(NURCNT)=DFN_U_PATNAME
+20 QUIT
End DoDot:1
+21 IF NURCNT=0
SET ARRAY(1)="^No Patients"
+22 QUIT
FINDNLOC(LOC) ; This function returns the NURS LOCATION file (#211.4) ien
+1 ; and the ien of the location (File 44, Field .01).
+2 ; input: LOC - (Required) Name of the Nursing location (as it appears
+3 ; in File 44).
+4 ; The name should begin with the characters 'NUR '.
+5 ; If not, 'NUR<space>' will be appended to the beginning
+6 ; of LOC. If LOC is undefined, then returns -1.
+7 ; output: File 211.4 ien^File 44 ien
+8 ;
+9 ; If LOC is undefined, then returns -1
+10 ; If LOC is not found, then returns "^Location not found"
+11 ;
+12 IF $GET(LOC)=""
QUIT -1
+13 NEW NUROUT,NURWARD,NURVHLOC
+14 IF LOC'?1"NUR ".E
SET LOC="NUR "_LOC
+15 DO FIND^DIC(211.4,"","","X",LOC,"","","","","NUROUT")
+16 SET NUROUT(1)=+$PIECE($GET(NUROUT("DILIST",0)),"^")
+17 IF NUROUT(1)'>0
QUIT "^Location not found"
+18 SET NURWARD=+$PIECE(NUROUT("DILIST",2,1),"^")
SET NURVHLOC=+$PIECE(NUROUT("DILIST",1,1),"^")
+19 SET LOC=NURWARD_"^"_NURVHLOC
+20 QUIT LOC
+21 ;
MASWARDS(LOC,ARRAY) ; Returns the MAS wards associated with this Nursing
+1 ; location in the array specified. The .01 field of the MAS WARD
+2 ; multiple of the NURS LOCATION file points to the WARD LOCATION
+3 ; file (#42).
+4 ; input: LOC - (Required) NURS LOCATION file (#211.4) ien
+5 ; input: ARRAY - (Required) Name of array to return entries in
+6 ; output: ARRAY subscripted by the MAS WARD value.
+7 ; example: ARRAY($P(^NURSF(211.4,LOC,3,D1,0),U,1))=""
+8 ; If LOC is null or not found, then ARRAY(1)=-1
+9 ;
+10 IF '$DATA(^NURSF(211.4,+LOC,0))
SET ARRAY(1)=-1
QUIT
+11 NEW GMVD1
+12 IF $DATA(^NURSF(211.4,LOC,3))
Begin DoDot:1
+13 SET GMVD1=0
+14 FOR
SET GMVD1=$ORDER(^NURSF(211.4,LOC,3,GMVD1))
IF GMVD1'>0
QUIT
SET ARRAY($PIECE(^NURSF(211.4,LOC,3,GMVD1,0),U,1))=""
+15 QUIT
End DoDot:1
+16 IF $ORDER(ARRAY(0))=""
SET ARRAY(1)=-1
+17 QUIT