| 1 | IBDF9B ;ALB/CJM - ENCOUNTER FORM - (edit,delete,add data fields) ;FEB 1,1993
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | FIELD ;Create, Edit, or Delete a data field from the form
 | 
|---|
| 5 |  S VALMBCK="R"
 | 
|---|
| 6 |  D FULL^VALM1
 | 
|---|
| 7 |  K DIR S DIR("?",1)="A DISPLAY FIELD outputs data from VISTA, MULTIPLE CHOICE FIELDS",DIR("?")="and HAND PRINT FIELDS allow input of data, LABELS are for fixed text fields"
 | 
|---|
| 8 |  W !,DIR("?",1),!,DIR("?"),!!
 | 
|---|
| 9 |  S DIR("B")="D",DIR(0)="SB^D:Display Field;M:Multiple Choice Field;H:Hand Print;L:Label Only",DIR("A")="Edit fields for: [D]isplay,  [M]ultiple Choice, [H]and Print, [L]abel only"
 | 
|---|
| 10 |  D ^DIR K DIR I $D(DIRUT)!(Y<0) Q
 | 
|---|
| 11 |  I Y="M" D MFIELD^IBDF9B2 Q
 | 
|---|
| 12 |  I Y="H" D HFIELD^IBDF9B4 Q
 | 
|---|
| 13 |  I Y="L" D LABELS^IBDF9B3 Q
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  N IBVALMBG,QUIT
 | 
|---|
| 16 |  S QUIT=0
 | 
|---|
| 17 |  S IBVALMBG=VALMBG
 | 
|---|
| 18 |  S VALMBCK="R"
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  F  D  Q:QUIT
 | 
|---|
| 21 |  .D FULL^VALM1
 | 
|---|
| 22 |  .K DIR S DIR("?",1)="You can Create, Edit, or Delete a data field, Shift all of the data fields",DIR("?")="within a range up or down, or List their locations ."
 | 
|---|
| 23 |  .W !!,DIR("?",1),!,DIR("?"),!
 | 
|---|
| 24 |  .S DIR("B")="C",DIR(0)="SB^C:Create;E:Edit;D:Delete;S:Shift;L:List;Q:Quit",DIR("A")="[C]reate,  [D]elete,  [E]dit,   [S]hift,  [L]ocations,  [Q]uit"
 | 
|---|
| 25 |  .D ^DIR K DIR I $D(DIRUT)!(Y<0) S QUIT=1 Q
 | 
|---|
| 26 |  .I Y="Q" S QUIT=1 Q
 | 
|---|
| 27 |  .D @$S(Y="C":"NEWFLD",Y="E":"EDITFLD",Y="D":"DLTFLD",Y="S":"SHIFT",Y="L":"^IBDF9B1",1:"")
 | 
|---|
| 28 |  .D RE^VALM4
 | 
|---|
| 29 |  S VALMBCK="R",VALMBG=IBVALMBG
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 | SHIFT ;expects IBBLK to be defined - shifts all fields within range supplied by user
 | 
|---|
| 32 |  D SHIFT^IBDF10("D")
 | 
|---|
| 33 |  D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 | EDITFLD ;expects IBBLK to be defined
 | 
|---|
| 36 |  N IBFIELD,RTN,NODE
 | 
|---|
| 37 |  N IBMF,IBWP,IBLIST,IBI,IBOLD,IBX,IBY,IBW,IBP,IBLEN,IBDELETE ;these are used in the input template
 | 
|---|
| 38 |  ;IBMF=1 if display interface returns records,IBWP=1 display interface returns a word processing field
 | 
|---|
| 39 |  D SELECT
 | 
|---|
| 40 |  I IBFIELD D
 | 
|---|
| 41 |  .D RE^VALM4
 | 
|---|
| 42 |  .S (IBMF,IBLIST,IBWP)=0,IBOLD=1,(IBX,IBY)=""
 | 
|---|
| 43 |  .S RTN=$P($G(^IBE(357.5,IBFIELD,0)),"^",3)
 | 
|---|
| 44 |  .I RTN D DATATYPE(RTN)
 | 
|---|
| 45 |  .K DR,DIE,DA S DIE=357.5,DA=IBFIELD,DR="[IBDF EDIT DATA FIELD]",DIE("NO^")="BACKOUTOK" D ^DIE K DIE,DR,DA
 | 
|---|
| 46 |  .D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | SELECT ;
 | 
|---|
| 49 |  S IBFIELD=0
 | 
|---|
| 50 |  Q:'$G(IBBLK)
 | 
|---|
| 51 |  I '$O(^IBE(357.5,"C",IBBLK,0)) W !,"There is no data field!" D PAUSE^IBDFU5 Q
 | 
|---|
| 52 | AGAIN K DIC S DIC="^IBE(357.5,",DIC(0)="EFQ",DIC("B")="",D="C",X=IBBLK
 | 
|---|
| 53 |  S DIC("S")="I $P(^(0),U,2)=IBBLK,+$P(^(0),U,3)>0"
 | 
|---|
| 54 |  D IX^DIC K DIC
 | 
|---|
| 55 |  S:+Y>0 IBFIELD=+Y
 | 
|---|
| 56 |  I 'IBFIELD,'$D(DTOUT),'$D(DUOUT) K DIR S DIR(0)="Y",DIR("A")="No data field selected! Try again",DIR("B")="YES" D ^DIR K DIR I '$D(DIRUT),Y=1 G AGAIN
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | DLTFLD ;expects IBBLK to be defined
 | 
|---|
| 59 |  N IBFIELD
 | 
|---|
| 60 |  D SELECT
 | 
|---|
| 61 |  I IBFIELD D
 | 
|---|
| 62 |  .Q:'$$RUSURE^IBDFU5($P($G(^IBE(357.5,IBFIELD,0)),"^"))
 | 
|---|
| 63 |  .D DLTFLD^IBDFU3(357.5,IBBLK,IBFIELD)
 | 
|---|
| 64 |  .D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | NEWFLD ;adds a new field, expects IBBLK to be defined
 | 
|---|
| 67 |  N NAME,FIELD,NODE,IBRTN,DLAYGO
 | 
|---|
| 68 |  N IBX,IBY,IBLIST,IBLEN,IBWP,IBMF,IBW,IBP,IBDELETE,IBOLD ;these are used in the input template
 | 
|---|
| 69 |  S NAME=$$NEWNAME Q:NAME=-1
 | 
|---|
| 70 |  S IBRTN=$$LOOKUP Q:'IBRTN
 | 
|---|
| 71 |  S IBOLD=0,(IBX,IBY)=""
 | 
|---|
| 72 |  K DIC,DIE,DD,DO,DINUM S DIC="^IBE(357.5,",DIC(0)="FL",X=NAME,DLAYGO=357.5
 | 
|---|
| 73 |  D FILE^DICN K DIC,DIE,DA
 | 
|---|
| 74 |  S FIELD=$S(+Y<0:"",1:+Y)
 | 
|---|
| 75 |  I 'FIELD D
 | 
|---|
| 76 |  .W !,"Unable to create a new data field!" D PAUSE^IBDFU5
 | 
|---|
| 77 |  I FIELD D
 | 
|---|
| 78 |  .S IBDELETE=1
 | 
|---|
| 79 |  .K DIE,DA,DR S DIE=357.5,DA=FIELD,DR="[IBDF EDIT DATA FIELD]",DIE("NO^")="BACKOUTOK" D ^DIE K DIE,DR,DA,DIC
 | 
|---|
| 80 |  .I IBDELETE K DA S DIK="^IBE(357.5,",DA=FIELD D ^DIK K DIK,DA Q
 | 
|---|
| 81 |  .D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | NEWNAME() ;
 | 
|---|
| 84 |  K DIR S DIR(0)="357.5,.01A",DIR("A")="New Field Name: ",DIR("B")=""
 | 
|---|
| 85 |  D ^DIR K DIR I $D(DIRUT) Q -1
 | 
|---|
| 86 |  Q Y
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | DATATYPE(RTN) ;
 | 
|---|
| 89 |  ;INPUT - RTN is a ptr to the package interface file
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ;OUTPUT - IBLEN() stores the lengths of the pieces of the record returned by the package interface
 | 
|---|
| 92 |  ;IBLIST=1 if list,IBMF=1 if record, IBWP=1 if word processing
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  N IBSUB,NODE,DATATYPE
 | 
|---|
| 95 |  S (IBMF,IBWP,IBLIST)=0
 | 
|---|
| 96 |  Q:'$G(RTN)
 | 
|---|
| 97 |  S DATATYPE=$P($G(^IBE(357.6,RTN,0)),"^",7) S:DATATYPE=5 IBWP=1 S:(DATATYPE=2)!(DATATYPE=4) IBMF=1 S:(DATATYPE=3)!(DATATYPE=4) IBLIST=1
 | 
|---|
| 98 |  I 'IBWP D
 | 
|---|
| 99 |  .N IEN
 | 
|---|
| 100 |  .S IEN=0 F  S IEN=$O(^IBE(357.6,RTN,15,"C",IEN)) Q:'IEN  S NODE=$G(^IBE(357.6,RTN,15,IEN,0)) I $P(NODE,"^",3) S IBLEN($P(NODE,"^",3))=+$P(NODE,"^",2)
 | 
|---|
| 101 |  .S IBLEN(1)=$P($G(^IBE(357.6,RTN,2)),"^",2)
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | LOOKUP() ;does a lookup on the package interface file using the E cross-reference, which uses the name with the prefix=namespace removed
 | 
|---|
| 105 |  K DIC S DIC("S")="I $P(^(0),U,6)=2,$P(^(0),U,9)=1"
 | 
|---|
| 106 |  S DIC="^IBE(357.6,",DIC(0)="MQEA",D="E^D^B",DIC("A")="Select the TYPE OF DATA that should be displayed:" D MIX^DIC1 K DIC,DA,D
 | 
|---|
| 107 |  Q $S((Y<0)!$D(DTOUT)!$D(DUOUT):0,1:+Y)
 | 
|---|
| 108 |  ;
 | 
|---|