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

IBDFBKS3.m

Go to the documentation of this file.
  1. IBDFBKS3 ;ALB/CJM/AAS - ENCOUNTER FORM - create form spec for scanning (Broker Version) ; 6-JUN-95 [ 11/13/96 3:32 PM ]
  1. ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
  1. ;
  1. BUBBLE ;
  1. N COUNT
  1. ;
  1. D PRINTEND ;the end program for the prior field
  1. ;
  1. D BLDARY^IBDFBKS("FIELD ' "_FIELD)
  1. ;
  1. ;** NAME **
  1. D BLDARY^IBDFBKS(" NAME = """_NAME_""";")
  1. ;
  1. ;** ELEMTYPE **
  1. D BLDARY^IBDFBKS(" ELEMTYPE = RECT;")
  1. ;
  1. ;** METRIC **
  1. D BLDARY^IBDFBKS(" METRIC = 30 16 0 0 -16 -12 "_$G(IBDFILL,20)_" "_$G(IBDBKGND,5)_" 1;")
  1. ;D BLDARY^IBDFBKS(" METRIC = 30 16 0 0 -16 -12 20 5 1;")
  1. ;
  1. ;** DATATYPE **
  1. D BLDARY^IBDFBKS(" DATATYPE =INT;")
  1. ;
  1. ;** LENGTH **
  1. I (TYPE=1)!(TYPE=2) D
  1. .D BLDARY^IBDFBKS(" LENGTH = ")
  1. .S COUNT=0
  1. .S COL="" F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" S COUNT=COUNT+1
  1. .S IBDFSA(IBLC)=IBDFSA(IBLC)_COUNT_";"
  1. I (TYPE=0)!(TYPE=3) D BLDARY^IBDFBKS(" LENGTH = 1;")
  1. ;
  1. ;** POINTS **
  1. I (TYPE=0)!(TYPE=3) S Y=ROW,X=COL D FINDBUB(.Y,.X) D BLDARY^IBDFBKS(" POINTS = "_Y_" "_X_";")
  1. I (TYPE=1)!(TYPE=2) D
  1. .D BLDARY^IBDFBKS(" POINTS =")
  1. .S COL="" F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" D
  1. ..S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" D
  1. ...S X=COL,Y=ROW
  1. ...D FINDBUB(.Y,.X)
  1. ...I $L(IBDFSA(IBLC))+$L(" "_Y_" "_X)<252 S IBDFSA(IBLC)=IBDFSA(IBLC)_" "_Y_" "_X Q
  1. ...D BLDARY^IBDFBKS("~~~"_" "_Y_" "_X)
  1. .S IBDFSA(IBLC)=IBDFSA(IBLC)_";"
  1. ;
  1. ;** PAGE **
  1. D BLDARY^IBDFBKS(" PAGE = "_PAGE_";")
  1. ;
  1. ;** END ** program to enforce selection rule and to go to end of page
  1. I TYPE=1 D ;exactly one required
  1. .D ADDTOEND(" if (GETSTATUS("_FIELD_") == FIELD_BLANK){")
  1. .;D ADDTOEND(" \' SHOW(\"""_$$CKNAM(NAME)_" is required!\"");")
  1. .D ADDTOEND(" if (BATCH==0) {FIELDSTATUS = FIELD_BAD;}")
  1. .D ADDTOEND(" if (BATCH==1) {saveunrf = "_FIELD_";}")
  1. .D ADDTOEND(" }")
  1. .D ADDTOEND(" if ((GETSTATUS("_FIELD_") == FIELD_TOOMANY)&&(BATCH == 1)) {")
  1. .D ADDTOEND(" saveunrf = "_FIELD_";}")
  1. ;
  1. I TYPE=2 D ;at most one required
  1. .D ADDTOEND(" if ((GETSTATUS("_FIELD_") == FIELD_TOOMANY)&&(BATCH == 1)) {")
  1. .D ADDTOEND(" saveunrf = "_FIELD_";}")
  1. ;
  1. I TYPE=3,LAST'="" D ;at least one required
  1. .D ADDTOEND(" INT field;")
  1. .D ADDTOEND(" field="_FIRST_";") ;AAS Changed 11/14
  1. .N X S X=LAST+1 D ADDTOEND(" while (field<"_X_"){") ;AAS changed 11/14
  1. .D ADDTOEND(" if (GETSTATUS(field) != FIELD_BLANK) break;")
  1. .D ADDTOEND(" field=field+1;")
  1. .D ADDTOEND(" }")
  1. .S X=LAST+1 D ADDTOEND(" if (field == "_X_"){")
  1. .D ADDTOEND(" SHOW(\"""_$$CKNAM(OLDNAME)_" at least 1 required!\"");")
  1. .D ADDTOEND(" FIELDSTATUS = FIELD_BAD;")
  1. .D ADDTOEND(" }")
  1. ;D ADDTOEND(" };")
  1. ;
  1. ;** XMAP **
  1. ; -- only TYPE=0 (selection rule=anynumber) might be dynmaic
  1. I (TYPE=0)!(TYPE=3) D BLDARY^IBDFBKS(" XMAP = "","_$S($P(NODE,"^",9):"D:"_FID_":"_$P(NODE,"^",10),1:"B:"_IEN_":"_$$GETCODE($P(NODE,"^",2),$P(NODE,"^")))_""";")
  1. ;
  1. I (TYPE=1)!(TYPE=2) D
  1. .D BLDARY^IBDFBKS(" XMAP = """)
  1. .S COL=""
  1. .F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" D
  1. ..S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" D
  1. ...S IEN=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW,0)) I IEN D
  1. ....S NODE=$G(^(IEN))
  1. ....N IBX
  1. ....S IBX=","_$S($P(NODE,"^",9):"D:"_FID_":"_$P(NODE,"^",10),1:"B:"_IEN_":"_$$GETCODE($P(NODE,"^",2),$P(NODE,"^")))
  1. ....I $L(IBDFSA(IBLC))+$L(IBX)<252 S IBDFSA(IBLC)=IBDFSA(IBLC)_IBX Q
  1. ....D BLDARY^IBDFBKS("~~~"_IBX)
  1. .S IBDFSA(IBLC)=IBDFSA(IBLC)_""";"
  1. ;
  1. ;** MAP **
  1. I (TYPE=0)!(TYPE=3) D BLDARY^IBDFBKS(" MAP = "" ,"_$TR($P(NODE,"^",6),",;"," ")_""";")
  1. ;
  1. I (TYPE=1)!(TYPE=2) D
  1. .D BLDARY^IBDFBKS(" MAP = "" ")
  1. .;
  1. .S COL="" F S COL=$O(@SCAN@(PAGE,FID,TYPE,COL)) Q:COL="" S ROW="" F S ROW=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW)) Q:ROW="" S IEN=$O(@SCAN@(PAGE,FID,TYPE,COL,ROW,0)) D
  1. ..I IEN S NODE=$G(@SCAN@(PAGE,FID,TYPE,COL,ROW,IEN))
  1. ..I $L(IBDFSA(IBLC))+$L($TR($P(NODE,"^",6),",;"," "))<252 S IBDFSA(IBLC)=IBDFSA(IBLC)_","_$TR($P(NODE,"^",6),",;"," ") Q
  1. ..D BLDARY^IBDFBKS("~~~"_","_$TR($P(NODE,"^",6),",;"," "))
  1. .S IBDFSA(IBLC)=IBDFSA(IBLC)_""";"
  1. I $D(OTHER($P(FID,"("),IEN)) S OTHER($P(FID,"("),IEN)=FIELD
  1. Q
  1. ;
  1. FINDBUB(Y,X) ;
  1. ;converts row,col of bubble to paperkeyboard points, with proper offsets added - call by reference
  1. S X=((COL*COLWIDTH)+(XBUBOS+XOFFSET))*CONVERT
  1. ;S X=1+$FN(X,"",0)
  1. S X=$FN(X,"",0)
  1. S Y=((ROW*ROWHT)+(YOFFSET+YBUBOS))*CONVERT
  1. ;S Y=1+$FN(Y,"",0)
  1. S Y=$FN(Y,"",0)
  1. Q
  1. ;
  1. ADDTOBEG(TEXT) ;
  1. I '$D(BEGIN) S BEGIN(1)=" BEGIN = {",BLN=1
  1. S BLN=BLN+1
  1. S BEGIN(BLN)=TEXT
  1. Q
  1. ;
  1. PRINTBEG ;
  1. I $D(BEGIN) D
  1. .S BLN=0 F S BLN=$O(BEGIN(BLN)) Q:'BLN D BLDARY^IBDFBKS(BEGIN(BLN))
  1. .D BLDARY^IBDFBKS(" };")
  1. .K BEGIN
  1. Q
  1. ;
  1. ADDTOEND(TEXT) ;
  1. I '$D(END) S END(1)=" END = {",LN=1
  1. S LN=LN+1
  1. S END(LN)=TEXT
  1. Q
  1. ;
  1. PRINTEND ;
  1. I $D(END) D
  1. .S LN=0 F S LN=$O(END(LN)) Q:'LN D BLDARY^IBDFBKS(END(LN))
  1. .D BLDARY^IBDFBKS(" };")
  1. .K END
  1. I PRIORPG'=PAGE D PAGEEND(PRIORPG)
  1. I PAGE>1,PRIORPG'=PAGE D PAGETOP(PAGE)
  1. S PRIORPG=PAGE
  1. Q
  1. ;
  1. GETCODE(VALUE,PI) ;returns the value after passing it through the output transform contained in the package interface file
  1. ;
  1. N X,Y S (Y,X)=VALUE
  1. ;
  1. I PI X $G(^IBE(357.6,PI,14))
  1. Q Y
  1. ;
  1. PAGEEND(PAGE) ;end of page processing
  1. N FLD
  1. S FIELD=FIELD+1
  1. F COUNT=1:1 S LINE=$T(BOTTOM+COUNT^IBDFBKS1),TAG=$P(LINE,";;"),LINE=$P(LINE,";;",2) Q:TAG["QUIT" D
  1. .I TAG["NUMBER" D BLDARY^IBDFBKS("FIELD ' "_FIELD) Q
  1. .I TAG["NAME" D BLDARY^IBDFBKS(" NAME = ""BOTTOM OF PAGE"_PAGE_""";") Q
  1. .I TAG["PAGE" D BLDARY^IBDFBKS(" PAGE = "_PAGE_";") Q
  1. .I TAG["SAVE" D Q
  1. ..D BLDARY^IBDFBKS(" Save = STRCAT(\""SAVEFORM(\"",ITOA(GETIVALUE(7)));")
  1. ..D BLDARY^IBDFBKS(" Save = STRCAT(Save,"","_PAGE_",,V)"");")
  1. ..;
  1. .I TAG["EXPORT" D Q
  1. ..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,\""$$NEW$$("");")
  1. ..D BLDARY^IBDFBKS(" Data=\""$$ADD$$(FORMTYPE="_IBFORMID_",\"";")
  1. ..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,Data);")
  1. ..D BLDARY^IBDFBKS(" Data=STRCAT(\""$$ADD$$(FORMID=\"",ITOA(GETIVALUE(7)));")
  1. ..D BLDARY^IBDFBKS(" Data=STRCAT(Data,\"",\"");")
  1. ..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,Data);")
  1. ..D BLDARY^IBDFBKS(" Data=\""$$ADD$$(PAGE="_PAGE_",\"";")
  1. ..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,Data);")
  1. ..D BLDARY^IBDFBKS(" Data=\""$$ADD$$(DATA=,\"";")
  1. ..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,Data);")
  1. ..;
  1. ..D FIELDS^IBDFBKS4
  1. .D BLDARY^IBDFBKS(LINE)
  1. Q
  1. ;
  1. ;;;.I TAG["EXPORT" D Q
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(\""FORMTYPE="_IBFORMID_"\"",RS);")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,\""FORMID=\"");")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,ITOA(GETIVALUE(7)));")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,RS);")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,\""PAGE="_PAGE_"\"");")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,RS);")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,\""DATA=\"");")
  1. ;;;D BLDARY^IBDFBKS(" Data=STRCAT(Data,RS);")
  1. ;;;..D BLDARY^IBDFBKS(" DDEEXEC(ddechan,Data);")
  1. ;
  1. PAGETOP(PAGE) ;add field for top of page
  1. S FIELD=FIELD+1
  1. F COUNT=1:1 S LINE=$T(TOPOFPG+COUNT^IBDFBKS1),TAG=$P(LINE,";;"),LINE=$P(LINE,";;",2) Q:TAG["QUIT" D
  1. .I TAG["NUMBER" D BLDARY^IBDFBKS("FIELD ' "_FIELD) Q
  1. .I TAG["FLDNAME" D BLDARY^IBDFBKS(" NAME = ""TOP OF PAGE "_PAGE_""";") Q
  1. .I TAG["PAGE" D BLDARY^IBDFBKS(" PAGE = "_PAGE_";") Q
  1. .D BLDARY^IBDFBKS(LINE)
  1. Q
  1. CKNAM(NAME) ; - format name with \ for paperkey when displaying name
  1. F CHAR="\","'" I NAME[CHAR D
  1. .F A=1:1:$L(NAME,CHAR)-1 S NAME=$P(NAME,CHAR,1,A)_"\"_CHAR_$P(NAME,CHAR,A+1,$L(NAME,CHAR))
  1. Q NAME