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

APCUADDK.m

Go to the documentation of this file.
  1. APCUADDK ; ADD KEYWORDS TO "OTHER KEYWORDS" FIELD IN ^ICD0/9 ; [ 07/29/86 5:07 PM ]
  1. W !!,*7,"APCUADDK CANNOT BE ENTERED AT THE TOP -- USE DX OR OP",!!
  1. Q
  1. DX S GBL="^ICD9"
  1. G INIT
  1. OP S GBL="^ICD0"
  1. INIT S BB=$C(7),U="^",FN="9999999.21",OLDCODE=""
  1. S NWS=^DD("KWIC")_"IN^OF^AN^IS^AS^AT^IF^IT^ON^OR^BY^"
  1. W "- - - Add keywords to ",$P(@GBL@(0),U,1)," ""OTHER KEYWORDS"" field - - -",!!
  1. MAINLP F Q=0:0 R "Code: ",CODE Q:CODE="" S:CODE=" " CODE=OLDCODE S OLDCODE=CODE D GCODE
  1. W !
  1. K CODE,NCODE,BB,FN,U,GBL,SEQNT,CNT,DFN,CDFN,L,NW,WT,WD,WC,WF,WSAVE,WS,W,NWS,Q
  1. W !,"B y e . . .",!
  1. Q
  1. ;
  1. GCODE ; GOT CODE
  1. D CHKCODE I CODE="" W BB," -- Invalid ICD code format",! Q
  1. S CDFN=""
  1. I $D(@GBL@("B",CODE)) S CDFN=$O(^(CODE,"")) W " ",@GBL@(CDFN,1),! S NCODE=CODE D GETKWD,SET Q
  1. S NCODE=$O(@GBL@("B",CODE))
  1. I $E(NCODE,1,$L(CODE))'=CODE S CODE="" W BB," -- Code does not exist and has no more specific descendents.",! Q
  1. W !," Code does not exist as entered, but has descendents."
  1. R !," Do you wish to add keywords to the more specific subcodes? Y// ",A,!
  1. Q:"Yy"'[$E(A_"Y")
  1. D GETKWD
  1. S NCODE=CODE
  1. I CODE'=+CODE D NONCON Q
  1. D CANONIC
  1. Q
  1. ;
  1. NONCON D SETLOOP I (+$P(CODE,".",1))=($P(CODE,".",1)) S NCODE=CODE_"001" D SETLOOP
  1. Q
  1. ;
  1. CANONIC D SETLOOP S NCODE=CODE_" " D SETLOOP
  1. Q
  1. ;
  1. SETLOOP F Q=0:0 S NCODE=$O(@GBL@("B",NCODE)) Q:NCODE="" Q:$E(NCODE,1,$L(CODE))'=CODE D SET
  1. Q
  1. ;
  1. GETKWD ; GET WORD STRING AND BUILD WORD TABLE
  1. K WT S WT=0
  1. R "Keywords: ",L,! Q:L=""
  1. I L="?" D LIST G GETKWD
  1. S WT=0 F NW=1:1 S WD=$P(L," ",NW) Q:WD="" I NWS'[("^"_WD_"^") S WT=WT+1,WT(WD)=""
  1. Q
  1. ;
  1. LIST ; LIST KEYWORDS FOR CODE
  1. Q:'CDFN Q:'$D(@GBL@(CDFN,FN,"B"))
  1. S WD=0 F L=0:0 S WD=$O(@GBL@(CDFN,FN,"B",WD)) Q:WD="" W WD,!
  1. Q
  1. ;
  1. SET ; SET WORDS IN WORD TABLE INTO ^ICD0/9 UNDER 'NCODE'
  1. S DFN=$O(@GBL@("B",NCODE,""))
  1. L @GBL@(DFN,FN)
  1. S:'$D(@GBL@(DFN,FN,0)) ^(0)="^80.999999921A^0^0"
  1. S CNT=$P(@GBL@(DFN,FN,0),U,4)
  1. S WD="" F W=1:1 S WD=$O(WT(WD)) Q:WD="" D DECIDE
  1. S $P(@GBL@(DFN,FN,0),U,4)=CNT
  1. L
  1. W:$X'=0 !
  1. Q
  1. ;
  1. DECIDE ; DECIDE WHETHER TO SET OR KILL
  1. S WSAVE=WD
  1. I $E(WD)="@" S WD=$E(WD,2,255) D KILLWD S WD=WSAVE Q
  1. D SETWD S WD=WSAVE Q
  1. ;
  1. KILLWD ; KILL WORD IN ^ICD0/9
  1. I '$D(@GBL@(DFN,FN,"B",WD)) W BB," -- '",WD,"' not in ",NCODE,! Q
  1. S SEQNT="" F Q=0:0 S SEQNT=$O(@GBL@(DFN,FN,"B",WD,SEQNT)) Q:SEQNT="" S CNT=CNT-1 W "." K @GBL@(DFN,FN,"B",WD,SEQNT),@GBL@(DFN,FN,SEQNT,0) S XCODE="K @GBL@(""C"",WD,DFN,SEQNT)" D TOKNDX
  1. Q
  1. ;
  1. SETWD ; SET WORD INTO ^ICD0/9
  1. Q:$D(@GBL@(DFN,FN,"B",WD))
  1. D GETSEQ
  1. S CNT=CNT+1
  1. S @GBL@(DFN,FN,SEQNT,0)=WD
  1. S @GBL@(DFN,FN,"B",WD,SEQNT)=""
  1. S XCODE="S @GBL@(""C"",WD,DFN,SEQNT)="""""
  1. D TOKNDX
  1. Q
  1. ;
  1. TOKNDX ; BREAK WORD INTO TOKENS AND INDEX
  1. REMQT S I=$F(WD,"'") I I>0 S WD=$E(WD,1,I-2)_$E(WD,I,255) G REMQT
  1. I '$F(WD,"-") X XCODE Q
  1. S WS=WD,WC=""
  1. F I=1:1 S WF=$P(WD,"-",I) Q:WF="" Q:$L(WF)>2 S WC=WC_WF
  1. S:WF'="" WC=WD
  1. F I=1:1 S WD=$P(WC,"-",I) Q:WD="" X XCODE
  1. S WD=WS
  1. Q
  1. ;
  1. GETSEQ ; GET NEXT AVAIILABLE SUB-DFN
  1. F SEQNT=1:1 Q:'$D(@GBL@(DFN,FN,SEQNT))
  1. Q
  1. ;
  1. CHKCODE ; CHECK FORMAT OF CODE
  1. G:GBL="^ICD0" OPCODE
  1. DXCODE S:CODE?3N!(CODE?1U1N.N) CODE=CODE_"."
  1. Q:(CODE?1"V"2N1".")!(CODE?1"V"2N1"."1N)!(CODE?1"V"2N1"."2N)
  1. Q:(CODE?1"E"3N1".")!(CODE?1"E"3N1"."1N)!(CODE?1"E"3N1"."2N)
  1. Q:(CODE?3N1".")!(CODE?3N1"."1N)!(CODE?3N1"."2N)
  1. S CODE=""
  1. Q
  1. OPCODE S:CODE?2N CODE=CODE_"."
  1. Q:(CODE?2N1".")!(CODE?2N1"."1N)!(CODE?2N1"."2N)
  1. S CODE=""
  1. Q