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

AICDADK1.m

Go to the documentation of this file.
  1. AICDADK1 ; IHS/OHPRD/ACC - PART 2 OF ADD KEYWORDS TO "OTHER KEYWORDS" FIELD IN ^ICD0/9 ;
  1. ;;3.51;IHS ICD/CPT lookup & grouper;;MAY 30, 1991
  1. ; NOTE: ALL KILLS DONE IN MAIN ROUTINE (AICDADK)
  1. ;
  1. NONCON D SETLOOP I (+$P(AICDCODE,".",1))=($P(AICDCODE,".",1)) S AICDNUMB=AICDCODE_"001" D SETLOOP
  1. Q
  1. ;
  1. CANONIC D SETLOOP S AICDNUMB=AICDCODE_" " D SETLOOP
  1. Q
  1. ;
  1. SETLOOP F AICDQ=0:0 S AICDNUMB=$O(@AICDGBL@("AB",AICDNUMB)) Q:AICDNUMB="" Q:$E(AICDNUMB,1,$L(AICDCODE))'=AICDCODE D SET
  1. Q
  1. ;
  1. GETKWD ; GET WORD STRING AND BUILD WORD TABLE
  1. K AICDWT S AICDWT=0
  1. R "Keywords: ",AICDL:DTIME,! S:'$T AICDL=U Q:U[AICDL
  1. I AICDL="?" D LIST G GETKWD
  1. I AICDL?.E1C.E W *7,"-- control characters not allowed in input!",! G GETKWD
  1. F AICDQ=0:0 S AICDNW=$F(AICDL,"~") Q:'AICDNW S AICDL=$E(AICDL,1,AICDNW-2)_$C(8)_$E(AICDL,AICDNW,255)
  1. S AICDWT=0 F AICDNW=1:1 S AICDWD=$P(AICDL," ",AICDNW) Q:AICDWD="" I AICDWD]"",AICDWD'="@",AICDNWS'[("^"_AICDWD_"^") S AICDWT=AICDWT+1,AICDWT(AICDWD)=""
  1. Q
  1. ;
  1. LIST ; LIST KEYWORDS FOR CODE
  1. Q:'AICDCDFN Q:'$D(@AICDGBL@(AICDCDFN,AICDFLD,"B"))
  1. S AICDWD=0 F AICDL=0:0 S AICDWD=$O(@AICDGBL@(AICDCDFN,AICDFLD,"B",AICDWD)) Q:AICDWD="" W AICDWD,!
  1. Q
  1. ;
  1. SET ; SET WORDS IN WORD TABLE INTO ^ICD0/9 UNDER 'NCODE'
  1. S AICDDFN=$O(@AICDGBL@("AB",AICDNUMB,""))
  1. L @AICDGBL@(AICDDFN,AICDFLD)
  1. S:'$D(@AICDGBL@(AICDDFN,AICDFLD,0)) ^(0)="^80.999999921A^0^0"
  1. S AICDCNT=$P(@AICDGBL@(AICDDFN,AICDFLD,0),U,4)
  1. S AICDWD="" F AICDW=1:1 S AICDWD=$O(AICDWT(AICDWD)) Q:AICDWD="" D DECIDE
  1. S $P(@AICDGBL@(AICDDFN,AICDFLD,0),U,4)=AICDCNT
  1. L
  1. W:$X'=0 !
  1. Q
  1. ;
  1. DECIDE ; DECIDE WHETHER TO SET OR KILL
  1. S AICDWSV=AICDWD
  1. I $E(AICDWD)="@" S AICDWD=$E(AICDWD,2,255) D KILLWD S AICDWD=AICDWSV Q
  1. D SETWD S AICDWD=AICDWSV Q
  1. ;
  1. KILLWD ; KILL WORD IN ^ICD0/9
  1. I '$D(@AICDGBL@(AICDDFN,AICDFLD,"B",AICDWD)) W AICDBB," -- '",AICDWD,"' not in ",AICDNUMB,! Q
  1. S AICDSQN="" F AICDQ=0:0 S AICDSQN=$O(@AICDGBL@(AICDDFN,AICDFLD,"B",AICDWD,AICDSQN)) Q:AICDSQN="" S AICDCNT=AICDCNT-1 W "." K ^(AICDSQN),@AICDGBL@(AICDDFN,AICDFLD,AICDSQN,0) S AICDEXEC="K @AICDGBL@(""AIHS"",AICDWD,AICDDFN,AICDSQN)" D TOKNDX
  1. Q
  1. ;
  1. SETWD ; SET WORD INTO ^ICD0/9
  1. Q:$D(@AICDGBL@(AICDDFN,AICDFLD,"B",AICDWD))
  1. D GETSEQ
  1. S AICDCNT=AICDCNT+1
  1. S @AICDGBL@(AICDDFN,AICDFLD,AICDSQN,0)=AICDWD
  1. S @AICDGBL@(AICDDFN,AICDFLD,"B",AICDWD,AICDSQN)=""
  1. S AICDEXEC="S @AICDGBL@(""AIHS"",AICDWD,AICDDFN,AICDSQN)="""""
  1. D TOKNDX
  1. Q
  1. ;
  1. TOKNDX ; BREAK WORD INTO TOKENS AND INDEX
  1. REMQT S AICDI=$F(AICDWD,"'") I AICDI>0 S AICDWD=$E(AICDWD,1,AICDI-2)_$E(AICDWD,AICDI,255) G REMQT
  1. I '$F(AICDWD,"-") X AICDEXEC Q
  1. S AICDWS=AICDWD,AICDWC=""
  1. F AICDI=1:1 S AICDWF=$P(AICDWD,"-",AICDI) Q:AICDWF="" Q:$L(AICDWF)>2 S AICDWC=AICDWC_AICDWF
  1. S:AICDWF'="" AICDWC=AICDWD
  1. F AICDI=1:1 S AICDWD=$P(AICDWC,"-",AICDI) Q:AICDWD="" X AICDEXEC
  1. S AICDWD=AICDWS
  1. Q
  1. ;
  1. GETSEQ ; GET NEXT AVAIILABLE SUB-DFN
  1. F AICDSQN=1:1 Q:'$D(@AICDGBL@(AICDDFN,AICDFLD,AICDSQN))
  1. Q
  1. ;
  1. CHKCODE ; CHECK FORMAT OF CODE
  1. G:AICDGBL="^ICD0" OPCODE
  1. DXCODE S:AICDCODE?3N!(AICDCODE?1U1N.N) AICDCODE=AICDCODE_"."
  1. Q:(AICDCODE?1"V"2N1".")!(AICDCODE?1"V"2N1"."1N)!(AICDCODE?1"V"2N1"."2N)
  1. Q:(AICDCODE?1"E"3N1".")!(AICDCODE?1"E"3N1"."1N)!(AICDCODE?1"E"3N1"."2N)
  1. Q:(AICDCODE?3N1".")!(AICDCODE?3N1"."1N)!(AICDCODE?3N1"."2N)!(AICDCODE?1"."4N)
  1. S AICDCODE=""
  1. Q
  1. OPCODE S:AICDCODE?2N AICDCODE=AICDCODE_"."
  1. Q:(AICDCODE?2N1".")!(AICDCODE?2N1"."1N)!(AICDCODE?2N1"."2N)
  1. S AICDCODE=""
  1. Q