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

SCMCNPER.m

Go to the documentation of this file.
  1. SCMCNPER ;ALB/ART - PCMM Web Query New Person file ; 03/13/2015
  1. ;;5.3;Scheduling;**603,811**;Aug 13, 1993;Build 3
  1. ;
  1. QUIT
  1. ;
  1. ;Cloned from XUPSQRY - PCMM Web needs Application Proxy Access
  1. ;added new parameter to lookup by DUZ, and add phone and pager to return
  1. ;don't filter out inactive, return info to PCMM Web
  1. ;
  1. ;Public, Supported ICRs
  1. ; #1625 - PERSON CLASS API'S
  1. ; #2343 - DBIA2343 (XUSER)
  1. ; #4574 - XUPS APIs
  1. ; #10000 - Classic FileMan API: Date/Time Manipulation (%DTC)
  1. ; #10060 - NEW PERSON FILE
  1. ; #10106 - HLFNC (HL7 APIs)
  1. ; #10112 - VASITE - Supported APIs for site info
  1. ;
  1. ;XUPSQRY ;EDS/GRR - Query New Person file ;4/9/04 10:40
  1. ;;8.0;KERNEL;**325**; Jul 10, 1995
  1. ;
  1. ;Input Parameter:
  1. ; SCMCVPID - VPID of the user (Required for lookup by VPID)
  1. ; SCMCDUZ - File 200 IEN (Required for lookup by IEN)
  1. ; SCMCLNAM - Part or all of the last name to use for basis
  1. ; of query (Required for lookup by name)
  1. ; SCMCFNAM - Part or all of the first name to use for basis
  1. ; of query filter (optional, can be null)
  1. ; SCMCSSN - Social Security Number (null or full 9 digits) to
  1. ; use as additional filter for query
  1. ; SCMCPROV - If value set to "P", screen for only providers
  1. ; (only persons with active person class)
  1. ; SCMCSTN - Filter persons based on station number entered
  1. ; (optional, can be null) This parameter is no longer used, but left as a place holder.
  1. ; SCMCMNM - Maximum Number of entries to return (*811 - parameter no longer used)
  1. ; (Number between 1 and 50. Null defaults to "*", all results)
  1. ; SCMCDATE - Date to be used to determine whether person has
  1. ; active person class. If null, current date is used.
  1. ;
  1. ;Output:
  1. ; RESULT - Name of global array were output data is stored
  1. ; ^TMP($J,"SCMCQRY",1) - 1 if found, 0 if not found
  1. ; ^TMP($J,"SCMCQRY",n,0) - VPID^IEN^Last Name~First Name~Middle Name^SSN^DOB^SEX^Phone^Pager^
  1. ; ^TMP($J,"SCMCQRY",n,1) - Provider Type^
  1. ; ^TMP($J,"SCMCQRY",n,2) - Provider Classification^
  1. ; ^TMP($J,"SCMCQRY",n,3) - Provider Area of Specialization^
  1. ; ^TMP($J,"SCMCQRY",n,4) - VA CODE^X12 CODE^Specialty Code
  1. ; ^TMP($J,"SCMCQRY",n,5) - Result of call to $$ACTIVE^XUSER(SCMCIEN)^end-of-record character "|"
  1. ;
  1. EN1(RESULT,SCMCVPID,SCMCDUZ,SCMCLNAM,SCMCFNAM,SCMCSSN,SCMCPROV,SCMCSTN,SCMCMNM,SCMCDATE) ;
  1. N %,SCMCNDAT
  1. K ^TMP($J,"SCMCQRY")
  1. K RESULT
  1. S RESULT=$NA(^TMP($J,"SCMCQRY")) ;set variable to name of global array where output data will be stored
  1. S ^TMP($J,"SCMCQRY",1)=0 ;initialize to not found
  1. I $G(SCMCLNAM)="",($G(SCMCVPID)=""),($G(SCMCDUZ)="") Q ;one of the 3 lookup parameters is required
  1. S SCMCFNAM=$G(SCMCFNAM) ;Set to null if missing
  1. S SCMCSSN=$G(SCMCSSN) ;Set to null if missing
  1. S SCMCPROV=$G(SCMCPROV) ;Set to null if missing
  1. S SCMCSTN=$G(SCMCSTN) ;Set to null if missing
  1. I $G(SCMCDATE)="" S SCMCDATE="" ;set to null if missing
  1. D NOW^%DTC
  1. S SCMCNDAT=%\1 ;set date to today and truncate time
  1. S SCMCDATE=$S(SCMCDATE="":SCMCNDAT,1:$$FMDATE^HLFNC(SCMCDATE)) ;change date from hl7 format to fileman format
  1. ;
  1. N SCMCCNT,SCMCNAME,SCMCIEN,SCMCDOB,SCMCSEX,SCMCPC,SCMCX12,SCMCPASS ;initialize new set of variables
  1. S:$G(SCMCMNM)="" SCMCMNM="*" ;set to default ; *811 - setting default to all results (parameter no longer used)
  1. S SCMCCNT=0 ;Initialize variable
  1. ;
  1. ;Lookup by VPID
  1. I $G(SCMCVPID)'="" D Q
  1. .S SCMCIEN=$$IEN^XUPS(SCMCVPID)
  1. .I +SCMCIEN>0 D
  1. ..D FILTER
  1. ..Q:SCMCPASS=0
  1. ..S SCMCCNT=SCMCCNT+1
  1. ..D FOUND(SCMCCNT,SCMCIEN,SCMCDATE) ;set array with person data
  1. ;
  1. ;Lookup by DUZ
  1. I $G(SCMCDUZ)'="" D Q
  1. .Q:$$GET1^DIQ(200,SCMCDUZ_",",.01,"I")=""
  1. .S SCMCIEN=SCMCDUZ
  1. .D FILTER
  1. .Q:SCMCPASS=0
  1. .S SCMCCNT=SCMCCNT+1
  1. .D FOUND(SCMCCNT,SCMCIEN,SCMCDATE) ;set array with person data
  1. ;
  1. ;Lookup by name
  1. S SCMCIEN=0,SCMCNAME=SCMCLNAM ;initialize variables
  1. N SCMCRET,SCMCMSG,SCI
  1. D FIND^DIC(200,,"@;.01","PQ",SCMCLNAM,"*","B",,,"SCMCRET","SCMCMSG") ;* 811 - modifying to return all results "*" (was 500)
  1. S SCI=0
  1. F S SCI=$O(SCMCRET("DILIST",SCI)) Q:SCI="" D
  1. .S SCMCIEN=$P(SCMCRET("DILIST",SCI,0),U,1)
  1. .D FILTER
  1. .Q:SCMCPASS=0
  1. .S SCMCCNT=SCMCCNT+1
  1. .D FOUND(SCMCCNT,SCMCIEN,SCMCDATE) ;set array with person data
  1. Q
  1. ;
  1. FILTER ;
  1. S SCMCPASS=1 ;initialize found flag to found
  1. I SCMCFNAM]"" S SCMCPASS=$$NMATCH(SCMCIEN,SCMCFNAM) ;check if matches name filter
  1. Q:'SCMCPASS ;failed to match
  1. I SCMCSSN]"",($$GET1^DIQ(200,SCMCIEN_",",9)'=SCMCSSN) S SCMCPASS=0 Q ;check ssn filter
  1. ;possible future use
  1. ;I SCMCSTN]"" S SCMCPASS=$$STNMAT(SCMCIEN,SCMCSTN) ;check station number
  1. ;Q:'SCMCPASS ;failed match
  1. I SCMCPROV]"",($$GET^XUA4A72(SCMCIEN,SCMCDATE)<0) S SCMCPASS=0 Q ;check if active person class
  1. Q
  1. ;
  1. FOUND(SCMCCNT,SCMCIEN,SCMCDATE) ;format output array
  1. N SCMCNAME,SCMCSSN,SCMCVPID,SCMCSEX,SCMCDOB,SCMCPHON,SCMCPAGR,I,Y
  1. S Y=$$GET1^DIQ(200,SCMCIEN_",",.01) ;get full name
  1. S SCMCNAME=$$HLNAME^HLFNC(Y,"~|\/") ;format name into last name~first name~middle name
  1. I $L(SCMCNAME,"~")<3 S $P(SCMCNAME,"~",3)="" ;make sure formatted name has all 3 pieces
  1. S SCMCSSN=$$GET1^DIQ(200,SCMCIEN_",",9) ;ssn
  1. S SCMCVPID=$$GET1^DIQ(200,SCMCIEN_",",9000) ;vpid
  1. S SCMCSEX=$$GET1^DIQ(200,SCMCIEN_",",4,"I") ;sex
  1. S SCMCDOB=$$GET1^DIQ(200,SCMCIEN_",",5,"I") ;dob fileman format
  1. I SCMCDOB]"" S SCMCDOB=$$HLDATE^HLFNC(SCMCDOB,"DT") ;format dob to correct hl7 format yyyymmdd
  1. S SCMCPHON=$$GET1^DIQ(200,SCMCIEN_",",.132) ;office phone
  1. S SCMCPAGR=$$GET1^DIQ(200,SCMCIEN_",",.138) ;digital pager
  1. S ^TMP($J,"SCMCQRY",1)=1 ;set to indicate match found
  1. S ^TMP($J,"SCMCQRY",SCMCCNT,0)=SCMCVPID_"^"_SCMCIEN_"^"_SCMCNAME_"^"_SCMCSSN_"^"_SCMCDOB_"^"_SCMCSEX_"^"_SCMCPHON_"^"_SCMCPAGR_"^"
  1. S SCMCPC=$$GET^XUA4A72(SCMCIEN,SCMCDATE) ;get active person class data
  1. S:SCMCPC<0 SCMCPC="" ;no active person class
  1. F I=1:1:3 S ^TMP($J,"SCMCQRY",SCMCCNT,I)=$P(SCMCPC,"^",(1+I))_"^" ;put provider type, provider class, and are of specialization in output array
  1. S SCMCX12="" ;PCMM Web does not use this - 603
  1. S ^TMP($J,"SCMCQRY",SCMCCNT,4)=$P(SCMCPC,"^",7)_"^"_SCMCX12_"^"_$P(SCMCPC,"^",8)_"^" ;put va code, x12 code, specialty code
  1. S ^TMP($J,"SCMCQRY",SCMCCNT,5)=$$ACTIVE^XUSER(SCMCIEN)_"^|" ;603
  1. Q
  1. ;
  1. NMATCH(SCMCIEN,SCMCFNAM) ;
  1. ;Match on First Name
  1. ;Input Parameters:
  1. ; SCMCIEN - Internal Entry Number of New Person entry
  1. ; SCMCFNAM - Part or all of Person first name
  1. ;Output:
  1. ; SCMCOUT - 1 if name matched, 0 if name did not match
  1. ;
  1. N SCMCA,SCMCHFN,SCMCFN,SCMCNFN,SCMCOUT ;establish new variables
  1. S SCMCFN=$$GET1^DIQ(200,SCMCIEN_",",.01) ;get full name
  1. S SCMCHFN=$$HLNAME^HLFNC(SCMCFN,"~|\/") ;change to HL7 format (last name~first name~middle name)
  1. S SCMCNFN=$P(SCMCHFN,"~",2) ;get first name
  1. S SCMCOUT=$S($E(SCMCNFN,1,$L(SCMCFNAM))[SCMCFNAM:1,1:0) ; match first name to first name passed
  1. Q SCMCOUT ;return 1 if name matched, 0 if no match
  1. ;
  1. ;STNMAT(SCMCIEN,SCMCSTN) ;Station Number matching (possible future use)
  1. ;Input Parameters:
  1. ; SCMCIEN - Internal Entry Number of New Person entry
  1. ; SCMCSTN - 3-6 character station number to use as screen
  1. ; (i.e. 603 or 528A4)
  1. ;Output:
  1. ; SCMCOUT - 1 if station matched, 0 if no station match
  1. ;
  1. ; NOTE: If this code is ever used, needs to be tested and subscription to ICR 4055
  1. ;
  1. ;NEW SCMCOUT,SCMCRET,SCI,SCHIT
  1. ;SET SCMCOUT=0
  1. ;DO DIVGET^XUSRB2(.SCMCRET,SCMCIEN)
  1. ;IF +SCMCRET(0)'=0 DO
  1. ;. SET SCHIT=0
  1. ;. SET SCI=""
  1. ;. FOR SET SCI=$ORDER(SCMCRET(SCI)) QUIT:SCI=""!(SCHIT) DO
  1. ;. . IF $PIECE(SCMCRET(SCI),U,3)=SCMCSTN DO
  1. ;. . . SET SCMCOUT=1
  1. ;. . . SET SCHIT=1
  1. ;QUIT SCMCOUT ;return 1 if match, 0 if no match
  1. ;