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

SCMCENCT.m

Go to the documentation of this file.
  1. SCMCENCT ;ALB/ART - PCMM Web RPC to Get Patient Encounters ;02/05/2015
  1. ;;5.3;Scheduling;**603**;Aug 13, 1993;Build 79
  1. ;
  1. QUIT
  1. ;
  1. ;Public, Supported ICRs
  1. ; #2056 - Data Base Server API: Data Retriever Utilities (DIQ)
  1. ; #10003 - Classic FileMan API: Date/Time Input & Conversion (%DT)
  1. ; #10035 - PATIENT FILE (^DPT)
  1. ; #10103 - Kernel Date functions (XLFDT)
  1. ;Subscription ICRs
  1. ; #2028 - READ ACCESS ONLY TO PCE VISIT FILE
  1. ; #2316 - DBIA2316 - V Provider (9000010.06) "AD" xref
  1. ;
  1. ENCT(SCLIST,SCDFN,SCLKBK,SCLKEND) ;Get patient encounters
  1. ;Entry Point for RPC - SCMC GET PATIENT ENCOUNTERS
  1. ;Inputs: SCLIST - Array for patient encounter info - passed by reference
  1. ; SCDFN - Patient DFN, if null returns all patients
  1. ; SCLKBK - Number of days in the past to look for encounters, defaults to 30
  1. ; SCLKEND - Number of days to end look back for encounters, defaults to 0
  1. ;Output: populated SCLIST
  1. ;
  1. NEW X,Y,%DT
  1. NEW SCDAYS,SCDAYEND,SCPASTDT,SCINDX,SCDFN1
  1. ;
  1. ;Number of days to look back for encounters
  1. SET SCDAYS=$GET(SCLKBK,30)
  1. SET SCDAYEND=$GET(SCLKEND,0)
  1. IF SCDAYEND'<SCDAYS DO QUIT
  1. . SET ^TMP("SCMCENCT",$J,1)="-1^End Days must be less than Number of Days."
  1. ;
  1. ;begin date: today-SCDAYS days
  1. SET %DT=""
  1. SET X="T-"_SCDAYS
  1. DO ^%DT
  1. SET SCPASTDT=+Y
  1. ;end date: today
  1. IF SCDAYEND=0 DO
  1. . SET SCENDDT=DT_".235959"
  1. ELSE DO
  1. . ;end date: today-SCDAYEND days
  1. . SET %DT=""
  1. . SET X="T-"_SCDAYEND
  1. . DO ^%DT
  1. . SET SCENDDT=+Y_".235959"
  1. ;
  1. K ^TMP("SCMCENCT",$J)
  1. S SCLIST=$NA(^TMP("SCMCENCT",$J)) ;set variable to name of global array where output data will be stored
  1. S ^TMP("SCMCENCT",$J,1)="" ;initialize to no data found
  1. ;
  1. SET SCINDX=1
  1. ;
  1. IF $GET(SCDFN)="" DO
  1. . ;Look at all patients
  1. . SET SCDFN1=""
  1. . FOR SET SCDFN1=$ORDER(^SCE("ACOD",SCDFN1)) QUIT:SCDFN1="" DO
  1. . . DO FIND(SCDFN1,SCPASTDT,SCENDDT,.SCINDX)
  1. ELSE DO
  1. . ;or specified patient
  1. . IF $$GET1^DIQ(2,SCDFN_",",.01)="" DO QUIT
  1. . . SET ^TMP("SCMCENCT",$J,1)="-1^Patient was not found."
  1. . DO FIND(SCDFN,SCPASTDT,SCENDDT,.SCINDX)
  1. ;
  1. QUIT
  1. ;
  1. FIND(SCDFN,SCPASTDT,SCENDDT,SCINDX) ;Look for Patient's Encounters in Outpatient Encounter and Visit Files
  1. ;Inputs: SCDFN - Patient DFN
  1. ; SCPPASDT - look for encounters greater than this date
  1. ; SCENDDT - look for encounters less than this date
  1. ; SCINDX - index for ^TMP, passed by reference
  1. ;Output: populated ^TMP("SCMCENCT",$J) global, RPC returns a global array
  1. ;
  1. NEW SCENCDT,SCENCIEN,SCPDUZ,SCPRISEC,SCVPIEN,SCVSTIEN
  1. NEW SCSTCIEN,SCSTOPCD,SCEPARNT,SCVPARNT,SCVTYPE,SCCOCOMP
  1. NEW SCLOC,SCCTYPE,SCNCNT,SCCAT,SCSTAT,SCPREC
  1. ;
  1. ;^SCE("ACOD",<dfn>,<checkout date>,<encounter ien>)=""
  1. SET SCCOCOMP=SCPASTDT-1 ;start at begin date -1
  1. FOR SET SCCOCOMP=$ORDER(^SCE("ACOD",SCDFN,SCCOCOMP)) QUIT:('SCCOCOMP)!(SCCOCOMP>SCENDDT) DO
  1. . SET SCENCIEN=""
  1. . FOR SET SCENCIEN=$ORDER(^SCE("ACOD",SCDFN,SCCOCOMP,SCENCIEN)) QUIT:SCENCIEN="" DO
  1. . . QUIT:+$$GET1^DIQ(409.68,SCENCIEN,.07,"I")\1<$GET(SCPASTDT) ;checkout date < begin date
  1. . . SET SCVSTIEN=+$$GET1^DIQ(409.68,SCENCIEN,.05,"I") ;Visit File IEN
  1. . . QUIT:+$$GET1^DIQ(9000010,SCVSTIEN,.11,"I") ;visit delete flag
  1. . . QUIT:$$GET1^DIQ(9000010,SCVSTIEN,.03,"I")'="V" ;non VA visit
  1. . . SET SCENCDT=$$GET1^DIQ(409.68,SCENCIEN,.01,"I") ;encounter date
  1. . . SET SCSTCIEN=$$GET1^DIQ(409.68,SCENCIEN,.03,"I") ;clinic stop code ien
  1. . . SET SCSTOPCD=$$GET1^DIQ(40.7,SCSTCIEN,1) ;AMIS stop code
  1. . . SET SCEPARNT=$$GET1^DIQ(409.68,SCENCIEN,.06,"I") ;parent encounter ien
  1. . . SET SCVPARNT=$$GET1^DIQ(9000010,SCVSTIEN,.12,"I") ;parent visit ien
  1. . . SET SCVTYPE=$$GET1^DIQ(9000010,SCVSTIEN,15003,"I") ;visit type
  1. . . SET SCLOC=$$GET1^DIQ(9000010,SCVSTIEN,.22,"I") ;hospital location
  1. . . SET SCCTYPE=$$GET1^DIQ(44,SCLOC,2,"I") ;hospital location type
  1. . . SET SCNCNT=$$GET1^DIQ(44,SCLOC,2502,"I") ;hospital location non-count clinic
  1. . . SET SCCAT=$$GET1^DIQ(9000010,SCVSTIEN,.07,"I") ;visit service category
  1. . . SET SCSTAT=$$GET1^DIQ(9000010,SCVSTIEN,15002,"I") ;visit patient status
  1. . . ; Visit Providers - ^AUPNVPRV("AD",<visit ien>,<visit prov ien>)
  1. . . SET SCVPIEN=""
  1. . . SET SCPREC=0
  1. . . FOR SET SCVPIEN=$ORDER(^AUPNVPRV("AD",SCVSTIEN,SCVPIEN)) QUIT:SCVPIEN="" DO
  1. . . . SET SCPDUZ=$$GET1^DIQ(9000010.06,SCVPIEN,.01,"I") ;provider duz/ien for 200 file
  1. . . . SET SCPRISEC=$$GET1^DIQ(9000010.06,SCVPIEN,.04,"I") ;primary/secondary
  1. . . . SET ^TMP("SCMCENCT",$J,SCINDX)=SCDFN_U_SCENCDT_U_SCPDUZ_U_SCPRISEC_U_SCSTOPCD_U_SCVTYPE_U_SCCOCOMP_U_SCENCIEN_U_SCEPARNT_U_SCVSTIEN_U_SCVPARNT_U_SCCTYPE_U_SCNCNT_U_SCCAT_U_SCSTAT
  1. . . . SET SCINDX=SCINDX+1
  1. . . . SET SCPREC=1
  1. . . IF 'SCPREC DO
  1. . . . SET SCPDUZ=""
  1. . . . SET SCPRISEC=""
  1. . . . SET ^TMP("SCMCENCT",$J,SCINDX)=SCDFN_U_SCENCDT_U_SCPDUZ_U_SCPRISEC_U_SCSTOPCD_U_SCVTYPE_U_SCCOCOMP_U_SCENCIEN_U_SCEPARNT_U_SCVSTIEN_U_SCVPARNT_U_SCCTYPE_U_SCNCNT_U_SCCAT_U_SCSTAT
  1. . . . SET SCINDX=SCINDX+1
  1. ;
  1. QUIT
  1. ;