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

MPIFSPC.m

Go to the documentation of this file.
  1. MPIFSPC ;SLC/ARS-MASTER PATIENT INDEX SYSTEM CHECK SUM RTN ;SEP 4, 1996
  1. ;;1.0; MASTER PATIENT INDEX VISTA ;**48**;30 Apr 99;Build 6
  1. ;MPICHECK
  1. CHECKDG(NUM) ;Check Digit Calculation
  1. ;change to local array of MPI global.
  1. ;D EXIN **48 CHANGE TO FUNCTION CALL
  1. ;K I,J,LTH,MPID,MPIMAP,MPIT,TAB,VAL
  1. N TMP
  1. S TMP=$$EXIN(NUM)
  1. Q TMP
  1. READ ;
  1. ;
  1. EXIN(NUM) ;**48 MADE THIS A FUNCTION CALL
  1. N SUM,I,J,LTH,MPID,MPIMAP,MPIT,TAB,VAL
  1. I $L(NUM)'=16 D
  1. .; W !,"I WILL PAD TO 16!"
  1. .S LTH=($L(NUM)+1) F I=LTH:1:16 S NUM="0"_NUM
  1. F MPIT=1:1:6 D
  1. .; For each check digit, compute a value
  1. .F MPID=1:1:16 D
  1. ..S MPIMAP(MPIT,0,"MAP")=0
  1. ..S MPIMAP(MPIT,MPID)=$E(NUM,MPID),VAL=MPIMAP(MPIT,MPID)
  1. ..S SUM=(MPIMAP(MPIT,MPID)+(MPIMAP(MPIT,MPID-1,"MAP")))#10
  1. ..S MPIMAP(MPIT,MPID,"MAP")=$P($P(^MPIF(984.5,MPIT,SUM),"^",2),";",MPID)
  1. .S TAB(MPIT)=MPIMAP(MPIT,16,"MAP")
  1. .;Q
  1. S SUM=""
  1. F J=1:1:6 D
  1. .S SUM=SUM_TAB(J)
  1. Q SUM
  1. ;
  1. ;Before calculation of check digits the number must be
  1. ;expanded to sixteen digits by padding zeros to the
  1. ;left of the number.