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

ADEGRL5.m

Go to the documentation of this file.
  1. ADEGRL5 ; IHS/HQT/MJL - DENTAL ENTRY PART 7 ; [ 03/24/1999 9:04 AM ]
  1. ;;6.0;ADE;**13**;APRIL 1999
  1. ;------->INITIALIZE
  1. S ADEDENT=$P(Y(0),U,2)
  1. S3 ;
  1. S ADEDIC("S")="" ;Remove this variable when you get a chance ***
  1. ;IHS/SET/HMW 3-26-2003 **13** Removed following line since CDT-4 codes apply to
  1. ; both PRIMARY and PERMANENT teeth
  1. ;I ADEDENT["DECID"!(ADEDENT["PRIM") S ADEDIC("S")="I $P(^ADEOPS(Y,0),U)[""DECID"""
  1. W !,"OPSITE: "
  1. S ADEDEF=$S($D(ADEV(ADECOD)):ADEV(ADECOD),1:"")
  1. I ADEDEF]"" S ADEDEF=$$OPDFLT(ADEDEF)
  1. W:ADEDEF]"" ADEDEF_" // "
  1. R ADEOP:DTIME S:('$T)!(ADEOP="^") ADEOP=""
  1. I ADEOP="",ADEDEF]"" Q
  1. I ADEOP=""!(ADEOP["@"),ADEDEF="" K ADEV(ADECOD),ADEDES(ADECOD) Q
  1. I ADEOP["@",ADEDEF'["," K ADEV(ADECOD),ADEDES(ADECOD) Q
  1. I ADEOP["?" S XQH="ADE-DVIS-OPSITE1" D EN^XQH K XQH D LIST^ADEGRL3 W !,"ADA Code: ",ADECOD W:ADECON !,"FEE: ",$P(ADEV(ADECOD),U,3) G S3
  1. I ADEOP["@" S ADEDEL=$P(ADEOP,"@",2) D OPDEL G:$P(ADEV(ADECOD),U,2)="" S3 Q
  1. K ADEADD I ADEOP["+" S ADEOP=$P(ADEOP,"+",2),ADEADD=1
  1. PARSE ;
  1. S ADEOP=$$SPLIT(ADEOP),ADESFC=$P(ADEOP,U,2),ADEOP=$P(ADEOP,U)
  1. F J=1:1:$L(ADEOP,",") S ADEPC=$P(ADEOP,",",J) D VEROP Q:$D(ADENOOP) S $P(ADEOP,",",J)=+Y
  1. I $D(ADENOOP) K ADENOOP W *7,ADEPC," ??" K ADEOP,ADESFC,ADEADD G S3
  1. I $$DUPE^ADEGRL5C(ADEOP) W *7," --DUPE OPSITES NOT ALLOWED" K ADEOP,ADESFC,ADEADD G S3
  1. F J=1:1:$L(ADEOP,",") S ADEPC=$P(ADESFC,",",J) I '$$VERSFC(ADEPC) W *7," '",ADEPC,"' IS NOT A VALID SURFACE" K ADEOP,ADESFC,ADEADD G S3
  1. I $D(ADEADD),$D(ADEV(ADECOD)) D
  1. . S ADEV(ADECOD)=$$ADDOP(ADEOP,ADESFC,ADEV(ADECOD))
  1. E S $P(ADEV(ADECOD),U)=$L(ADEOP,","),$P(ADEV(ADECOD),U,2)=ADEOP,$P(ADEV(ADECOD),U,4)=ADESFC
  1. K ADEOP,ADESFC,ADEADD
  1. Q
  1. ;
  1. ;***SUBROUTINES***
  1. ;
  1. ;
  1. VEROP ;B FHL 9/9/98
  1. K DIC S Y=-1,X=ADEPC,DIC="^ADEOPS("
  1. I ADEDIC("S")]"" S DIC(0)="Z",D="C",DIC("S")=ADEDIC("S") D MIX^DIC1 G:Y>0 VQ
  1. I X?1.2N1"D" S DIC(0)="Z",D="C" D MIX^DIC1 G:Y>0 VQ ;IHS/HMW **2,12**
  1. I Y=-1 K Y S DIC(0)="OXZ" S:ADEDIC("S")'="" DIC("S")=ADEDIC("S") D ^DIC
  1. I Y=-1 K Y S DIC(0)="EQZ" S:ADEDIC("S")'="" DIC("S")=ADEDIC("S") W !!,ADEPC D ^DIC
  1. I Y=-1 S ADENOOP=1 K DIC Q
  1. VQ K DIC
  1. Q
  1. ;
  1. OPDEL G:ADEDEL'="" OPD1
  1. D LIST^ADEGRL3 K K S $P(K,"-",35)="Delete Opsite",$P(K,"-",66)="" W !,K K K
  1. W !!,?2,ADECOD,?13,"DELETE WHICH OPSITE: " R ADEDEL:DTIME
  1. I '$T W " ??",*7 Q
  1. Q:ADEDEL=""
  1. OPD1 S ADEPC=ADEDEL D VEROP I $D(ADENOOP) K ADENOOP,ADEDEL Q
  1. S ADEDEL=+Y
  1. S ADEV(ADECOD)=$$DELOP^ADEGRL5C(ADEDEL,ADEV(ADECOD))
  1. Q
  1. ;
  1. ;***FUNCTIONS***
  1. ;
  1. SPLIT(ADEOP) ;Splits Opsites and Surfaces from user input string
  1. N ADECNT,ADEJ,ADEPC,ADESFC
  1. S ADESFC="",ADECNT=0
  1. F ADEJ=1:1:$L(ADEOP,",") S ADEPC=$P(ADEOP,",",ADEJ) I ADEPC["/" S ADECNT=ADECNT+1,$P(ADESFC,",",ADECNT)=$P(ADEPC,"/",2)
  1. S ADECNT=1
  1. F ADEJ=1:1:$L(ADEOP,",") S:$P(ADEOP,",",ADEJ)["/" ADECNT=ADECNT+1 S:$P(ADEOP,",",ADEJ)'["/" $P(ADEOP,",",ADEJ)=$P(ADEOP,",",ADEJ)_"/"_$P(ADESFC,",",ADECNT)
  1. S ADESFC=""
  1. F ADEJ=1:1:$L(ADEOP,",") S ADEPC=$P(ADEOP,",",ADEJ),$P(ADEOP,",",ADEJ)=$P(ADEPC,"/"),$P(ADESFC,",",ADEJ)=$P(ADEPC,"/",2)
  1. Q ADEOP_"^"_ADESFC
  1. ;
  1. OPDFLT(ADEDEF) ;Creates default user input string from ADEV(ADECOD)
  1. N ADEOPS,ADESFC,ADEJ,ADEPC,ADEOPC
  1. S ADEOPS=$P(ADEDEF,U,2)
  1. S ADESFC=$P(ADEDEF,U,4)
  1. F ADEJ=1:1:$P(ADEDEF,U) D
  1. . I $D(ADEPLET),$P(^ADEOPS($P(ADEOPS,",",ADEJ),0),U,4)]"" S $P(ADEOPS,",",ADEJ)=$P(^ADEOPS($P(ADEOPS,",",ADEJ),0),U,4) Q
  1. . S $P(ADEOPS,",",ADEJ)=^ADEOPS($P(ADEOPS,",",ADEJ),88)
  1. S ADEOPC=0
  1. F ADEJ=$P(ADEDEF,U):-1:1 S ADEPC=$P(ADESFC,",",ADEJ) S:ADEOPC'=ADEPC ADEOPC=ADEPC,$P(ADEOPS,",",ADEJ)=$P(ADEOPS,",",ADEJ)_"/"_ADEOPC
  1. Q ADEOPS
  1. K ADEOPS ;*NE
  1. ;
  1. VERSFC(ADEX) ;Verify surface codes - Returns 1 if valid, 0 if not valid
  1. ;Need to add additional parameter for ADA CODE
  1. N ADEY,ADEP,ADEI
  1. S ADEY=1
  1. I $L(ADEX)>6 Q 0
  1. I (ADEX["B")&(ADEX["F") Q 0
  1. I (ADEX["I")&(ADEX["O") Q 0
  1. F ADEI=1:1:$L(ADEX) S ADEP=$E(ADEX,ADEI) I '((ADEP="M")!(ADEP="O")!(ADEP="D")!(ADEP="F")!(ADEP="L")!(ADEP="B")!(ADEP="I"))!($F(ADEX,ADEP,$F(ADEX,ADEP)))>0 S ADEY=0 Q
  1. Q ADEY
  1. K ADEP ;*NE
  1. ;
  1. ADDOP(ADEOP,ADESFC,ADEVTMP) ;EP - Search for same opsite in existing ADEV(ADECOD).
  1. ;If found, delete it. Then add opsite ADEOP and surface ADESFC
  1. N ADEJ,ADEPC,ADEK,ADEPC2
  1. ;S ADEVTMP=ADEV(ADECOD)
  1. I ADEVTMP]"" F ADEJ=1:1:$L(ADEOP,",") S ADEPC=$P(ADEOP,",",ADEJ) D ADD1
  1. I ADEVTMP]"" S $P(ADEVTMP,U)=$P(ADEVTMP,U)+$L(ADEOP,","),$P(ADEVTMP,U,2)=$P(ADEVTMP,U,2)_","_ADEOP,$P(ADEVTMP,U,4)=$P(ADEVTMP,U,4)_","_ADESFC
  1. I ADEVTMP="" S $P(ADEVTMP,U)=$L(ADEOP,","),$P(ADEVTMP,U,2)=ADEOP,$P(ADEVTMP,U,4)=ADESFC
  1. Q ADEVTMP
  1. K ADEPC2,ADEVTMP ;*NE
  1. ADD1 F ADEK=1:1:$P(ADEVTMP,U) S ADEPC2=$P($P(ADEVTMP,U,2),",",ADEK) I ADEPC=ADEPC2 S ADEVTMP=$$DELOP^ADEGRL5C(ADEPC2,ADEVTMP)
  1. Q