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

AICDKSCH.m

Go to the documentation of this file.
  1. AICDKSCH ; IHS/OHPRD/ACC - "AND"ING INVERTED LIST SEARCH ;
  1. ;;3.51;IHS ICD/CPT lookup & grouper;;MAY 30, 1991
  1. ; AICDNWDS,AICDREF1,AICDREF4,AICDWORD() ARE PASSED IN AND
  1. ; SHOULD NOT BE KILLED
  1. K ^UTILITY("AICDHITS",$J) S ^UTILITY("AICDHITS",$J)=0
  1. I $D(AICDHLIM) S AICDHLM1=AICDHLIM+1
  1. E S AICDHLM1=0
  1. S AICDCMAX=AICDDFN(1) F AICDI=1:1:AICDNWDS S:AICDDFN(AICDI)<AICDCMAX AICDCMAX=AICDDFN(AICDI)
  1. RESTRT ;
  1. S AICDI=0,AICDEMTY=0
  1. SCLOOP ;
  1. S AICDI=AICDI+1
  1. G:AICDI>AICDNWDS!(AICDEMTY) ENDCHK
  1. CMP S AICDLOW=AICDDFN(AICDI)<AICDCMAX,AICDHIGH=AICDDFN(AICDI)>AICDCMAX
  1. I AICDLOW D INCSTK:AICDPRTL(AICDI),INCONE:'AICDPRTL(AICDI) G:'AICDEMTY CMP
  1. I AICDHIGH S AICDCMAX=AICDDFN(AICDI),AICDI=0
  1. G SCLOOP
  1. ENDCHK ;
  1. G:AICDEMTY EXIT
  1. D NOTCHK W:AICDASK "." D:'AICDELIM CHKSCRN
  1. I 'AICDELIM S ^UTILITY("AICDHITS",$J)=^UTILITY("AICDHITS",$J)+1,^UTILITY("AICDHITS",$J,^UTILITY("AICDHITS",$J))=AICDCMAX,AICDHLM1=AICDHLM1-1 G:AICDHLM1=0 STOP
  1. S AICDCMAX=AICDCMAX+1
  1. G RESTRT
  1. STOP W !,"Too many terms meet your criteria; please refine your search.",! K ^UTILITY("AICDHITS",$J) S ^UTILITY("AICDHITS",$J)=0
  1. EXIT K AICDEMTY,AICDHIGH,AICDLOW,AICDMDFN,AICDNUM,AICDCMAX,AICDHLM1
  1. K AICDPRTL,AICDWORD,AICDAWRD,AICDDFN,AICDADFN,AICDELIM
  1. K AICDWD,AICDD,AICDI,AICDJ,AICDQ
  1. Q
  1. ;
  1. NOTCHK ; CHECK POSSIBLE HIT FOR ELIMINATION BY "NOT"
  1. S AICDELIM=0,AICDD=AICDCMAX
  1. S AICDJ="" F AICDQ=0:0 S AICDJ=$O(AICDAWRD(0,AICDJ)) Q:AICDJ="" S AICDWD=AICDAWRD(0,AICDJ) I $D(@AICDREF4) S AICDELIM=1 Q
  1. Q
  1. ;
  1. CHKSCRN ; CHECK SCREEN
  1. S Y=AICDCMAX I $D(@(AICDREF1_"Y,0)")) X:$D(DIC("S")) DIC("S") E S AICDELIM=1
  1. Q
  1. ;
  1. INCONE ; ADVANCE DFN FOR EXACT MATCH CASE
  1. S AICDD=AICDDFN(AICDI),AICDWD=AICDWORD(AICDI)
  1. S:AICDD<AICDCMAX AICDD=AICDCMAX-1
  1. F AICDQ=0:0 S AICDD=$O(@AICDREF4) Q:AICDD=""!(AICDD'<AICDCMAX)
  1. S AICDDFN(AICDI)=AICDD
  1. S:AICDD="" AICDEMTY=1
  1. Q
  1. ;
  1. INCSTK ; ADVANCE COMPOSITE DFN FOR PARTIAL MATCH CASE
  1. S AICDJ=0
  1. F AICDQ=0:0 S AICDJ=$O(AICDAWRD(AICDI,AICDJ)) Q:AICDJ="" D INC1 Q:AICDD'=""
  1. I AICDJ="" S (AICDD,AICDDFN(AICDI))="",AICDEMTY=1 Q
  1. S AICDMDFN=AICDD
  1. F AICDQ=0:0 S AICDJ=$O(AICDAWRD(AICDI,AICDJ)) Q:AICDJ="" D INC1 S:AICDD'=""&(AICDD<AICDMDFN) AICDMDFN=AICDD
  1. S AICDDFN(AICDI)=AICDMDFN
  1. Q
  1. INC1 ;
  1. S AICDD=AICDADFN(AICDI,AICDJ),AICDWD=AICDAWRD(AICDI,AICDJ)
  1. Q:AICDADFN(AICDI,AICDJ)'<AICDCMAX
  1. S AICDD=AICDCMAX-1
  1. F AICDQ=0:0 S AICDD=$O(@AICDREF4) Q:AICDD=""!(AICDD'<AICDCMAX)
  1. S:AICDD'="" AICDADFN(AICDI,AICDJ)=AICDD
  1. K:AICDD="" AICDAWRD(AICDI,AICDJ),AICDADFN(AICDI,AICDJ)
  1. Q