Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BSDAPI3

BSDAPI3.m

Go to the documentation of this file.
  1. BSDAPI3 ; IHS/ITSC/LJF - ATTACH ANCILLARY ITEM TO APPT/VISIT;
  1. ;;5.3;PIMS;**1002,1009**;APR 26, 2002
  1. ;IHS/ITSC/LJF 12/23/2004 PATCH 1002 rewrote routine to call new BSDAPI4
  1. ;cmi/anch/maw 06/10/2008 PATCH 1009 added set of variable "SHOW VISITS" so that user can select visit if there, maybe in future release.
  1. ;
  1. EN(DFN,BSDCLD,BSDREAS,BSDITEM) ;PEP;
  1. ; CALLED BY ANICLLARY PACKAGES (LAB, RAD, PHR)
  1. ; Used in INTERACTIVE MODE to select an appt to attach ordered items
  1. ; If appt is already checked in, returns visit IEN
  1. ; If not, proceeds to check patient in and create visit
  1. ; If patient has more than one appt, list is displayed
  1. ; There will always be a final choice of adding an walkin appt/visit
  1. ; to the ancillary service
  1. ;
  1. ; Called by using this approach:
  1. ; S VISIT=$$EN^BSDAPI3(patient ien,default clinic,default reason,item)
  1. ;
  1. ; INPUT VARIABLES:
  1. ; DFN - Patient IEN
  1. ; BSDCLD - Clinic Default IEN for ancillary walkin visits
  1. ; BSDREAS - Default reason for appt ("lab draw", "radiology walk-in", etc.)
  1. ; BSDITEM - Item name ("test(s)", "exam", "prescription", "order")
  1. ; Phrasing up to calling routine
  1. ;
  1. ; OUTPUT VARIABLES:
  1. ; Returns string - first piece is Visit IEN or zero if error occurred
  1. ; second piece set if error and is error message
  1. ;
  1. I '$G(DFN)!'$G(BSDCLD) Q 0_U_"Bad Input Parameters"
  1. I $$GET1^DIQ(9009017.2,BSDCLD,.09)'="YES" Q 0_U_"Default Clinic NOT set up to create visits"
  1. ;
  1. ;Get list of appts and their visits if any
  1. W !!,"Attaching "_BSDITEM_" to an Appointment and PCC Visit . . ."
  1. NEW BSDDT,BSDEND,APPT,BSDCNT,BSDARR,BSDCLDN,BSDVST
  1. S BSDCLDN=$$GET1^DIQ(44,BSDCLD,.01) ;set name for default clinic
  1. S BSDDT=$$FMADD^XLFDT(DT,-1)_".24" ;start just before today
  1. S BSDEND=DT+.24 ;only look at today
  1. F S BSDDT=$O(^DPT(DFN,"S",BSDDT)) Q:'BSDDT Q:BSDDT>BSDEND D
  1. . S APPT=$G(^DPT(DFN,"S",BSDDT,0)) Q:APPT=""
  1. . S BSDCNT=$G(BSDCNT)+1
  1. . S BSDARR(BSDCNT)=BSDDT_U_$P(APPT,U)_U_$$STATUS(DFN,BSDDT)
  1. ;
  1. ;
  1. ; if no appts found, tell user walk-in appt to their service is being added
  1. I '$G(BSDCNT) D Q $G(BSDVST)
  1. . W !!,"No Appts Today for Patient; Adding Walk-in Appt to "_BSDCLDN
  1. . S BSDVST=$$CHECKIN(BSDCLD,$$NOW^XLFDT,BSDREAS) ;add ancillary WALK-in and return visit ien
  1. ;
  1. CHOOSE ; Otherwise, display list of appts so user can select one
  1. NEW COUNT,APPT,Y W !
  1. S COUNT=0 F S COUNT=$O(BSDARR(COUNT)) Q:'COUNT D
  1. . S APPT=BSDARR(COUNT)
  1. . W !,$J(COUNT,3),?5,$$FMTE^XLFDT(+APPT)
  1. . W ?20,$E($$GET1^DIQ(44,$P(APPT,U,2),.01),1,25),?50,$P(APPT,U,3)
  1. ;
  1. S COUNT=$O(BSDARR(99),-1) ;get highest count
  1. W !,$J(COUNT+1,3),?5,"Add walk-in appointment to "_BSDCLDN
  1. S Y=$$READ^BDGF("N^1:"_(COUNT+1),"Select One from List")
  1. I Y<1 W !!,"You MUST select one from the list!" D CHOOSE Q
  1. ;
  1. ; if last choice selected, add walk-in for default clinic
  1. I Y=COUNT+1 W !!,"Adding Walk-in Appt and Visit to "_BSDCLDN Q $$CHECKIN(BSDCLD,$$NOW^XLFDT,BSDREAS)
  1. ;
  1. ; Take appt selected, and check if already has visit attached
  1. S APPT=BSDARR(+Y)
  1. S BSDVST=$$GETVST^BSDU2(DFN,+APPT)
  1. I BSDVST W !!,"PCC Visit found for checked in appointment." Q BSDVST ;visit already made
  1. ;
  1. ; Otherwise perform check-in for appt
  1. W !!,"Checking in patient to appointment in "_$$GET1^DIQ(44,$P(APPT,U,2),.01)
  1. Q $$CHECKIN($P(APPT,U,2),$P(APPT,U))
  1. ;
  1. ;
  1. ; subroutines
  1. STATUS(D0,D1) ; return appt's current status
  1. ; Call to SDAMU requries D0 and D1 set, returns X
  1. NEW X D CURRENT^SDAMU
  1. Q X
  1. ;
  1. CHECKIN(CLN,APPT,OI) ; checkin appt OR create walkin for default clinic
  1. NEW BSDAR,BSDVST
  1. S BSDAR("HOS LOC")=CLN ;clinic ien passed in
  1. S BSDAR("APPT DATE")=APPT ;appt time passed in
  1. S BSDAR("OI")=$G(OI) ;appt reason if passed in
  1. ;
  1. S BSDAR("PAT")=DFN
  1. S BSDAR("VISIT DATE")=$$NOW^XLFDT
  1. S BSDAR("LEN")=$$GET1^DIQ(44,CLN,1912)
  1. S BSDAR("USR")=DUZ
  1. S BSDAR("FORCE ADD")=1
  1. S BSDAR("OPT")="SD IHS ANCILLARY"
  1. S BSDAR("SITE")=$$GET1^DIQ(44,CLINIC,3,"I")
  1. S BSDAR("SRV CAT")="A"
  1. S BSDAR("VISIT TYPE")=$$GET1^DIQ(9001001.2,CLN,.11,"I")
  1. ;S BSDAR("SHOW VISITS")=1 ;cmi/maw 6/10/2008 pass variable to show visits, maybe in future release
  1. D GETVISIT^BSDAPI4(.BSDAR,.BSDVST)
  1. ;
  1. I BSDVST(0)=0 Q BSDVST(0)
  1. ;I $G(BSDR("VIEN")) Q BSDR("VIEN") ;cmi/maw 6/10/2008 quit on visit variable if there, maybe in future release
  1. Q $O(BSDVST(0))